diff --git a/packaging/markers.py b/packaging/markers.py index 56d4b240..39905148 100644 --- a/packaging/markers.py +++ b/packaging/markers.py @@ -192,7 +192,7 @@ def _eval_op(lhs: str, op: Op, rhs: str) -> bool: except InvalidSpecifier: pass else: - return spec.contains(lhs) + return spec.contains(lhs, prereleases=True) oper: Optional[Operator] = _operators.get(op.serialize()) if oper is None: diff --git a/tests/test_markers.py b/tests/test_markers.py index 7a7663ba..0a16ff27 100644 --- a/tests/test_markers.py +++ b/tests/test_markers.py @@ -86,6 +86,11 @@ def test_fails_when_undefined(self): with pytest.raises(UndefinedComparison): Marker("'2.7.0' ~= os_name").evaluate() + def test_allows_prerelease(self): + assert Marker('python_full_version > "3.6.2"').evaluate( + {"python_full_version": "3.11.0a5"} + ) + FakeVersionInfo = collections.namedtuple( "FakeVersionInfo", ["major", "minor", "micro", "releaselevel", "serial"]