Commit be679d00 by Sébastien Eustace

Fix system requirements in lock file for sub dependencies

parent 032cfa98
......@@ -9,6 +9,7 @@
### Fixed
- Fixed handling of duplicate dependencies with different constraints.
- Fixed system requirements in lock file for sub dependencies.
- Fixed detection of new prereleases.
- Fixed unsafe packages being locked.
- Fixed versions detection in custom repositories.
......
......@@ -149,25 +149,29 @@ class Solver:
return packages
def _build_graph(self, package, packages, previous=None, dep=None):
def _build_graph(
self, package, packages, previous=None, previous_dep=None, dep=None
):
if not previous:
category = "dev"
optional = True
python_version = None
platform = None
python_version = "*"
platform = "*"
else:
category = dep.category
optional = dep.is_optional() and not dep.is_activated()
python_version = (
dep.python_versions
if previous.python_constraint.allows_all(dep.python_constraint)
else previous.python_versions
python_version = str(
parse_constraint(previous["python_version"]).intersect(
previous_dep.python_constraint
)
)
platform = (
dep.platform
if previous.platform_constraint.matches(dep.platform_constraint)
and dep.platform != "*"
else previous.platform
platform = str(
previous_dep.platform
if GenericConstraint.parse(previous["platform"]).matches(
previous_dep.platform_constraint
)
and previous_dep.platform != "*"
else previous["platform"]
)
graph = {
......@@ -179,7 +183,7 @@ class Solver:
"children": [],
}
if previous and previous is not dep and previous.name == dep.name:
if previous_dep and previous_dep is not dep and previous_dep.name == dep.name:
return graph
for dependency in package.all_requires:
......@@ -214,7 +218,7 @@ class Solver:
continue
child_graph = self._build_graph(
pkg, packages, dependency, dep or dependency
pkg, packages, graph, dependency, dep or dependency
)
if existing:
......
......@@ -30,7 +30,7 @@ python-versions = "*"
platform = "*"
[package.requirements]
python = "~2.7"
python = ">=2.7,<2.8"
[[package]]
name = "D"
......
......@@ -52,6 +52,9 @@ optional = false
python-versions = "*"
platform = "*"
[package.requirements]
python = "<4.0"
[[package]]
name = "C"
version = "1.5"
......@@ -61,6 +64,9 @@ optional = false
python-versions = "*"
platform = "*"
[package.requirements]
python = ">=4.0"
[metadata]
python-versions = "*"
platform = "*"
......
......@@ -20,7 +20,7 @@ platform = "*"
D = "^1.2"
[package.requirements]
python = "~2.7 || ^3.4"
python = ">=2.7,<2.8 || >=3.4,<4.0"
[[package]]
name = "D"
......@@ -32,7 +32,7 @@ python-versions = "*"
platform = "*"
[package.requirements]
python = "~2.7 || ^3.4"
python = ">=2.7,<2.8 || >=3.4,<4.0"
[extras]
foo = ["A"]
......
......@@ -784,7 +784,7 @@ def test_solver_duplicate_dependencies_same_constraint(solver, repo, package):
)
op = ops[0]
assert op.package.requirements == {"python": "~2.7 || >=3.4"}
assert op.package.requirements == {"python": ">=2.7,<2.8 || >=3.4"}
def test_solver_duplicate_dependencies_different_constraints(solver, repo, package):
......
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