Skip to content

Commit 196b20d

Browse files
q0wgaborbernat
andauthored
Fix extracting extras from markers with many extras (#2792)
Co-authored-by: Bernát Gábor <[email protected]>
1 parent a3d3ec0 commit 196b20d

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

docs/changelog/2791.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix extracting extras from markers with many extras - by :user:`q0w`.

src/tox/tox_env/python/virtual_env/package/util.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,9 @@ def extract_extra_markers(deps: list[Requirement]) -> list[tuple[Requirement, se
4545
extra_markers.add(marker_value.value)
4646
del markers[_at]
4747
_at -= 1
48-
if _at > 0 and (isinstance(markers[_at], str) and markers[_at] in ("and", "or")):
48+
if _at >= 0 and (isinstance(markers[_at], str) and markers[_at] in ("and", "or")):
4949
del markers[_at]
5050
if len(markers) == 0:
5151
req.marker = None
52-
break
5352
result.append((req, extra_markers or {None}))
5453
return result

tests/tox_env/python/virtual_env/package/test_python_package_util.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,9 @@ def test_loads_deps_recursive_extras() -> None:
6363
]
6464
result = dependencies_with_extras(requires, {"dev"}, "name")
6565
assert [str(i) for i in result] == ["no-extra", "dep1[magic]", "dep1", "dep2[a,b]"]
66+
67+
68+
def test_load_dependency_requirement_or_extras() -> None:
69+
requires = [Requirement('filelock<4.0.0,>=3.9.0; extra == "extras1" or extra == "extras2"')]
70+
result = dependencies_with_extras(requires, {"extras1"}, "")
71+
assert [str(r) for r in result] == ["filelock<4.0.0,>=3.9.0"]

0 commit comments

Comments
 (0)