Commit 736c6d35 by Sébastien Eustace Committed by GitHub

Fix a recursion error for duplicate constraints with only extras (#1574)

parent ead7e21e
...@@ -604,7 +604,7 @@ class Provider: ...@@ -604,7 +604,7 @@ class Provider:
new_markers = [] new_markers = []
for dep in _deps: for dep in _deps:
marker = dep.marker.without_extras() marker = dep.marker.without_extras()
if marker.is_empty(): if marker.is_any():
# No marker or only extras # No marker or only extras
continue continue
......
...@@ -1831,3 +1831,28 @@ def test_solver_does_not_raise_conflict_for_conditional_dev_dependencies( ...@@ -1831,3 +1831,28 @@ def test_solver_does_not_raise_conflict_for_conditional_dev_dependencies(
{"job": "install", "package": package_a200}, {"job": "install", "package": package_a200},
], ],
) )
def test_solver_does_not_loop_indefinitely_on_duplicate_constraints_with_extras(
solver, repo, package
):
package.python_versions = "~2.7 || ^3.5"
package.add_dependency("requests", {"version": "^2.22.0", "extras": ["security"]})
requests = get_package("requests", "2.22.0")
requests.add_dependency("idna", ">=2.5,<2.9")
requests.add_dependency(
"idna", {"version": ">=2.0.0", "markers": "extra == 'security'"}
)
requests.extras["security"] = [get_dependency("idna", ">=2.0.0")]
idna = get_package("idna", "2.8")
repo.add_package(requests)
repo.add_package(idna)
ops = solver.solve()
check_solver_result(
ops,
[{"job": "install", "package": idna}, {"job": "install", "package": requests}],
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment