Commit 9d749a48 by Frost Ming Committed by Sébastien Eustace

Ignore dependency if not needed (#1789)

parent 299a885e
...@@ -671,13 +671,16 @@ class Provider: ...@@ -671,13 +671,16 @@ class Provider:
raise CompatibilityError(*python_constraints) raise CompatibilityError(*python_constraints)
# Modifying dependencies as needed # Modifying dependencies as needed
clean_dependencies = []
for dep in dependencies: for dep in dependencies:
if not package.dependency.python_constraint.is_any(): if not package.dependency.python_constraint.is_any():
dep.transitive_python_versions = str( python_constraint_intersection = dep.python_constraint.intersect(
dep.python_constraint.intersect( package.dependency.python_constraint
package.dependency.python_constraint
)
) )
if python_constraint_intersection.is_empty():
# This depencency is not needed under current python constraint.
continue
dep.transitive_python_versions = str(python_constraint_intersection)
if (package.dependency.is_directory() or package.dependency.is_file()) and ( if (package.dependency.is_directory() or package.dependency.is_file()) and (
dep.is_directory() or dep.is_file() dep.is_directory() or dep.is_file()
...@@ -691,8 +694,9 @@ class Provider: ...@@ -691,8 +694,9 @@ class Provider:
# TODO: Improve the way we set the correct relative path for dependencies # TODO: Improve the way we set the correct relative path for dependencies
dep._path = relative dep._path = relative
clean_dependencies.append(dep)
package.requires = dependencies package.requires = clean_dependencies
return package return package
......
...@@ -1887,3 +1887,19 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies( ...@@ -1887,3 +1887,19 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies(
{"job": "install", "package": git_package, "skipped": True}, {"job": "install", "package": git_package, "skipped": True},
], ],
) )
def test_ignore_python_constraint_no_overlap_dependencies(solver, repo, package):
pytest = get_package("demo", "1.0.0")
pytest.add_dependency("configparser", {"version": "^1.2.3", "python": "<3.2"})
package.add_dependency("demo", {"version": "^1.0.0", "python": "^3.6"})
repo.add_package(pytest)
repo.add_package(get_package("configparser", "1.2.3"))
ops = solver.solve()
check_solver_result(
ops, [{"job": "install", "package": pytest}],
)
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