From 899e7725d8bd303a2735a5088c74223e4825e277 Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Mon, 14 Apr 2025 18:30:11 +0800 Subject: [PATCH] fix(markers): when left hand value is non-version string, fallback to python behavior Signed-off-by: Frost Ming --- src/packaging/markers.py | 6 +++++- tests/test_markers.py | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/packaging/markers.py b/src/packaging/markers.py index fb7f49cf8..9cf391ab6 100644 --- a/src/packaging/markers.py +++ b/src/packaging/markers.py @@ -15,6 +15,7 @@ from ._tokenizer import ParserSyntaxError from .specifiers import InvalidSpecifier, Specifier from .utils import canonicalize_name +from .version import InvalidVersion __all__ = [ "InvalidMarker", @@ -180,7 +181,10 @@ def _eval_op(lhs: str, op: Op, rhs: str) -> bool: except InvalidSpecifier: pass else: - return spec.contains(lhs, prereleases=True) + try: + return spec.contains(lhs, prereleases=True) + except InvalidVersion: + pass oper: Operator | None = _operators.get(op.serialize()) if oper is None: diff --git a/tests/test_markers.py b/tests/test_markers.py index faf0d13b9..9017bb8e0 100644 --- a/tests/test_markers.py +++ b/tests/test_markers.py @@ -304,6 +304,7 @@ def test_environment_with_extra_none(self): {"os_name": "other", "python_version": "2.7.4"}, False, ), + ("platform_release >= '6'", {"platform_release": "6.1-foobar"}, True), ("extra == 'security'", {"extra": "quux"}, False), ("extra == 'security'", {"extra": "security"}, True), ("extra == 'SECURITY'", {"extra": "security"}, True),