From da9cf358c053d8e6d93bc161a01a61079cc33758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Eustace?= Date: Fri, 2 Apr 2021 14:58:52 +0200 Subject: [PATCH] Fix an error when handling single digit Python markers --- poetry/core/packages/__init__.py | 17 ----------------- tests/packages/test_main.py | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/poetry/core/packages/__init__.py b/poetry/core/packages/__init__.py index f0819ebdc..bf3c4c918 100644 --- a/poetry/core/packages/__init__.py +++ b/poetry/core/packages/__init__.py @@ -5,7 +5,6 @@ from typing import Optional from typing import Union -from poetry.core.semver import Version from poetry.core.semver import parse_constraint from poetry.core.utils._compat import Path from poetry.core.utils.patterns import wheel_file_re @@ -178,22 +177,6 @@ def dependency_from_pep_508( op = "" elif op == "!=": version += ".*" - elif op in ("<=", ">"): - parsed_version = Version.parse(version) - if parsed_version.precision == 1: - if op == "<=": - op = "<" - version = parsed_version.next_major.text - elif op == ">": - op = ">=" - version = parsed_version.next_major.text - elif parsed_version.precision == 2: - if op == "<=": - op = "<" - version = parsed_version.next_minor.text - elif op == ">": - op = ">=" - version = parsed_version.next_minor.text elif op in ("in", "not in"): versions = [] for v in re.split("[ ,]+", version): diff --git a/tests/packages/test_main.py b/tests/packages/test_main.py index a6e6e2ea9..28340f98d 100644 --- a/tests/packages/test_main.py +++ b/tests/packages/test_main.py @@ -1,4 +1,5 @@ from poetry.core.packages import dependency_from_pep_508 +from poetry.core.semver.version import Version def test_dependency_from_pep_508(): @@ -254,3 +255,20 @@ def test_dependency_from_pep_508_with_python_full_version_pep440_compatible_rele assert dep.name == "pathlib2" assert str(dep.constraint) == "*" assert dep.python_versions == "~=3.4 || <3" + + +def test_dependency_from_pep_508_should_not_produce_empty_constraints_for_correct_markers(): + name = 'pytest-mypy; python_implementation != "PyPy" and python_version <= "3.10" and python_version > "3"' + dep = dependency_from_pep_508(name) + + assert dep.name == "pytest-mypy" + assert str(dep.constraint) == "*" + assert dep.python_versions == "<=3.10 >3" + assert dep.python_constraint.allows(Version.parse("3.6")) + assert dep.python_constraint.allows(Version.parse("3.10")) + assert not dep.python_constraint.allows(Version.parse("3")) + assert dep.python_constraint.allows(Version.parse("3.0.1")) + assert ( + str(dep.marker) + == 'platform_python_implementation != "PyPy" and python_version <= "3.10" and python_version > "3"' + )