Commit be679d00 by Sébastien Eustace

Fix system requirements in lock file for sub dependencies

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