diff --git a/poetry/semver/__init__.py b/poetry/semver/__init__.py index 58ca3a1edc3..725b7d43f58 100644 --- a/poetry/semver/__init__.py +++ b/poetry/semver/__init__.py @@ -76,14 +76,12 @@ def parse_single_constraint(constraint): # type: (str) -> VersionConstraint version = Version.parse(m.group(1)) if precision == 2: - low = version high = version.stable.next_major else: - low = Version(version.major, version.minor, version.patch) high = version.stable.next_minor return VersionRange( - low, high, include_min=True, always_include_max_prerelease=True + version, high, include_min=True, always_include_max_prerelease=True ) # Caret range diff --git a/tests/semver/test_main.py b/tests/semver/test_main.py index 654a54a5281..4610e8d4573 100644 --- a/tests/semver/test_main.py +++ b/tests/semver/test_main.py @@ -68,6 +68,10 @@ def test_parse_constraint_wildcard(input, constraint): ("~3.5", VersionRange(Version(3, 5, 0), Version(3, 6, 0), True)), ("~=3.5", VersionRange(Version(3, 5, 0), Version(4, 0, 0), True)), # PEP 440 ("~=3.5.3", VersionRange(Version(3, 5, 3), Version(3, 6, 0), True)), # PEP 440 + ( + "~=3.5.3rc1", + VersionRange(Version(3, 5, 3, pre="rc1"), Version(3, 6, 0), True), + ), # PEP 440 ], ) def test_parse_constraint_tilde(input, constraint):