Skip to content

Commit 3c89572

Browse files
authored
Fix requirements.txt parsing (#2683)
Resolves #2682
1 parent 3a54b53 commit 3c89572

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

docs/changelog/2682.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix regression in ``requirements.txt`` parsing - by :user:`gaborbernat`.

src/tox/tox_env/python/pip/req_file.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ def __init__(self, raw: str, root: Path):
1919
self._req_parser_: RequirementsFile | None = None
2020

2121
def _extend_parser(self, parser: ArgumentParser) -> None:
22-
parser.add_argument("--no-deps", action="store_true", default=False)
22+
parser.add_argument("--no-deps", action="store_true", dest="no_deps", default=False)
2323

2424
def _merge_option_line(self, base_opt: Namespace, opt: Namespace, filename: str) -> None:
2525
super()._merge_option_line(base_opt, opt, filename)
26-
if opt.no_deps:
26+
if getattr(opt, "no_deps", False): # if the option comes from a requirements file this flag is missing there
2727
base_opt.no_deps = True
2828

2929
def _option_to_args(self, opt: Namespace) -> list[str]:

tests/tox_env/python/pip/test_req_file.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
from argparse import Namespace
34
from pathlib import Path
45

56
import pytest
@@ -58,3 +59,11 @@ def test_req_with_no_deps(tmp_path: Path) -> None:
5859
python_deps = PythonDeps(raw="-rr.txt", root=tmp_path)
5960
with pytest.raises(ValueError, match="unrecognized arguments: --no-deps"):
6061
python_deps.requirements
62+
63+
64+
def test_opt_only_req_file(tmp_path: Path) -> None:
65+
"""deps with --hash should raise an exception."""
66+
(tmp_path / "r.txt").write_text("--use-feature fast-deps")
67+
python_deps = PythonDeps(raw="-rr.txt", root=tmp_path)
68+
assert not python_deps.requirements
69+
assert python_deps.options == Namespace(features_enabled=["fast-deps"])

0 commit comments

Comments
 (0)