Commit cc715ef8 by Sébastien Eustace

Fix a conflict error for locked conditional dependencies

parent e3b974c6
......@@ -19,6 +19,7 @@ from .dependency import Dependency
from .directory_dependency import DirectoryDependency
from .file_dependency import FileDependency
from .vcs_dependency import VCSDependency
from .utils.utils import convert_markers
from .utils.utils import create_nested_marker
AUTHOR_REGEX = re.compile("(?u)^(?P<name>[- .,\w\d'’\"()]+)(?: <(?P<email>.+?)>)?$")
......@@ -326,7 +327,14 @@ class Package(object):
return dependency
def to_dependency(self):
return Dependency(self.name, self._version)
from . import dependency_from_pep_508
name = "{} (=={})".format(self._name, self._version)
if not self.marker.is_any():
name += " ; {}".format(str(self.marker))
return dependency_from_pep_508(name)
@contextmanager
def with_python_versions(self, python_versions):
......
......@@ -10,6 +10,7 @@ from poetry.repositories.pool import Pool
from poetry.repositories.repository import Repository
from poetry.puzzle import Solver
from poetry.puzzle.exceptions import SolverProblemError
from poetry.version.markers import parse_marker
from tests.helpers import get_dependency
from tests.helpers import get_package
......@@ -1073,3 +1074,33 @@ def test_solver_does_not_trigger_new_resolution_on_duplicate_dependencies_if_onl
'extra == "bar" or extra == "foo"',
]
assert str(ops[1].package.marker) == ""
def test_solver_does_not_raise_conflict_for_locked_conditional_dependencies(
solver, repo, package
):
package.python_versions = "~2.7 || ^3.4"
package.add_dependency("A", {"version": "^1.0", "python": "^3.6"})
package.add_dependency("B", "^1.0")
package_a = get_package("A", "1.0.0")
package_a.python_versions = ">=3.6"
package_a.marker = parse_marker(
'python_version >= "3.6" and python_version < "4.0"'
)
package_b = get_package("B", "1.0.0")
repo.add_package(package_a)
repo.add_package(package_b)
solver._locked = Repository([package_a])
ops = solver.solve(use_latest=[package_b.name])
check_solver_result(
ops,
[
{"job": "install", "package": package_a},
{"job": "install", "package": package_b},
],
)
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