summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorq0w <43147888+q0w@users.noreply.github.com>2022-12-31 03:26:40 +0300
committerGitHub <noreply@github.com>2022-12-30 16:26:40 -0800
commit196b20de4c969a163d34692d8a5d646cad4717d6 (patch)
tree2012f703098b02d2fd6ab9ea26993d130cd8d962
parenta3d3ec042d38195392841a9112911c2bde3587d1 (diff)
downloadtox-git-196b20de4c969a163d34692d8a5d646cad4717d6.tar.gz
Fix extracting extras from markers with many extras (#2792)
Co-authored-by: Bernát Gábor <gaborjbernat@gmail.com>
-rw-r--r--docs/changelog/2791.bugfix.rst1
-rw-r--r--src/tox/tox_env/python/virtual_env/package/util.py3
-rw-r--r--tests/tox_env/python/virtual_env/package/test_python_package_util.py6
3 files changed, 8 insertions, 2 deletions
diff --git a/docs/changelog/2791.bugfix.rst b/docs/changelog/2791.bugfix.rst
new file mode 100644
index 00000000..172874be
--- /dev/null
+++ b/docs/changelog/2791.bugfix.rst
@@ -0,0 +1 @@
+Fix extracting extras from markers with many extras - by :user:`q0w`.
diff --git a/src/tox/tox_env/python/virtual_env/package/util.py b/src/tox/tox_env/python/virtual_env/package/util.py
index 5139e7ba..e57efee9 100644
--- a/src/tox/tox_env/python/virtual_env/package/util.py
+++ b/src/tox/tox_env/python/virtual_env/package/util.py
@@ -45,10 +45,9 @@ def extract_extra_markers(deps: list[Requirement]) -> list[tuple[Requirement, se
extra_markers.add(marker_value.value)
del markers[_at]
_at -= 1
- if _at > 0 and (isinstance(markers[_at], str) and markers[_at] in ("and", "or")):
+ if _at >= 0 and (isinstance(markers[_at], str) and markers[_at] in ("and", "or")):
del markers[_at]
if len(markers) == 0:
req.marker = None
- break
result.append((req, extra_markers or {None}))
return result
diff --git a/tests/tox_env/python/virtual_env/package/test_python_package_util.py b/tests/tox_env/python/virtual_env/package/test_python_package_util.py
index bac77d8f..5cb18812 100644
--- a/tests/tox_env/python/virtual_env/package/test_python_package_util.py
+++ b/tests/tox_env/python/virtual_env/package/test_python_package_util.py
@@ -63,3 +63,9 @@ def test_loads_deps_recursive_extras() -> None:
]
result = dependencies_with_extras(requires, {"dev"}, "name")
assert [str(i) for i in result] == ["no-extra", "dep1[magic]", "dep1", "dep2[a,b]"]
+
+
+def test_load_dependency_requirement_or_extras() -> None:
+ requires = [Requirement('filelock<4.0.0,>=3.9.0; extra == "extras1" or extra == "extras2"')]
+ result = dependencies_with_extras(requires, {"extras1"}, "")
+ assert [str(r) for r in result] == ["filelock<4.0.0,>=3.9.0"]