diff --git a/src/poetry/core/constraints/version/patterns.py b/src/poetry/core/constraints/version/patterns.py index ffd46e183..7071a34e2 100644 --- a/src/poetry/core/constraints/version/patterns.py +++ b/src/poetry/core/constraints/version/patterns.py @@ -27,11 +27,12 @@ re.VERBOSE | re.IGNORECASE, ) +# pattern for non Python versions such as OS versions in `platform_release` RELEASE_PATTERN = r""" (?P[0-9]+(?:\.[0-9]+)*) (?:(\+|-)?(?P - [0-9a-zA-Z-]+ - (?:\.[0-9a-zA-Z-]+)* + [0-9a-zA-Z+-]+ + (?:\.[0-9a-zA-Z+-]+)* ))? """ diff --git a/tests/constraints/version/test_parse_constraint.py b/tests/constraints/version/test_parse_constraint.py index 7a679b7b1..46629bb8e 100644 --- a/tests/constraints/version/test_parse_constraint.py +++ b/tests/constraints/version/test_parse_constraint.py @@ -584,7 +584,9 @@ def test_parse_constraint_with_white_space_padding( assert parse_constraint(constraint) == expected -@pytest.mark.parametrize("constraint", ["4.9.253-tegra", "2022Server"]) +@pytest.mark.parametrize( + "constraint", ["4.9.253-tegra", "2022Server", "6.12.74+deb13+1-amd64"] +) def test_parse_marker_constraint_does_not_allow_invalid_version( constraint: str, ) -> None: @@ -597,6 +599,7 @@ def test_parse_marker_constraint_does_not_allow_invalid_version( [ ("4.9.253-tegra", Version.from_parts(4, 9, 253, local="tegra")), ("2022Server", Version.from_parts(2022, local="Server")), + ("6.12.74+deb13+1-amd64", Version.from_parts(6, 12, 74, local="deb13+1-amd64")), ], ) def test_parse_marker_constraint_does_allow_invalid_version_if_requested(