From 0e261af798199a652633e1aa38523d3d3a828f61 Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Mon, 11 Dec 2023 08:57:02 +0000 Subject: [PATCH] Use legacy version implementation for Python itself. --- CHANGES.rst | 5 +++++ distlib/markers.py | 10 +++++----- tests/test_markers.py | 7 +++---- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 7746985..27d1970 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,11 @@ Change log for ``distlib`` Released: Not yet. +- markers + + - Fix #209: use legacy version implementation for Python versions. + + 0.3.7 ~~~~~ diff --git a/distlib/markers.py b/distlib/markers.py index c70400c..7ebe472 100644 --- a/distlib/markers.py +++ b/distlib/markers.py @@ -19,7 +19,7 @@ from .compat import string_types from .util import in_venv, parse_marker -from .version import NormalizedVersion as NV +from .version import LegacyVersion as LV __all__ = ['interpret'] @@ -35,7 +35,7 @@ def _is_literal(o): return o[0] in '\'"' def _get_versions(s): - return {NV(m.groups()[0]) for m in _VERSION_PATTERN.finditer(s)} + return {LV(m.groups()[0]) for m in _VERSION_PATTERN.finditer(s)} class Evaluator(object): """ @@ -83,10 +83,10 @@ def evaluate(self, expr, context): rhs = self.evaluate(erhs, context) if ((_is_version_marker(elhs) or _is_version_marker(erhs)) and op in ('<', '<=', '>', '>=', '===', '==', '!=', '~=')): - lhs = NV(lhs) - rhs = NV(rhs) + lhs = LV(lhs) + rhs = LV(rhs) elif _is_version_marker(elhs) and op in ('in', 'not in'): - lhs = NV(lhs) + lhs = LV(lhs) rhs = _get_versions(rhs) result = self.operations[op](lhs, rhs) return result diff --git a/tests/test_markers.py b/tests/test_markers.py index 8798c9e..93c047f 100644 --- a/tests/test_markers.py +++ b/tests/test_markers.py @@ -26,10 +26,9 @@ def test_interpret(self): platform_python_implementation = python_implementation() self.assertTrue(interpret("sys_platform == '%s'" % sys_platform)) - if sys.version_info[3] == 'final': - self.assertTrue(interpret( - "sys_platform == '%s' and python_full_version == '%s'" % - (sys_platform, version))) + self.assertTrue(interpret( + "sys_platform == '%s' and python_full_version == '%s'" % + (sys_platform, version))) self.assertTrue(interpret("'%s' == sys_platform" % sys_platform)) self.assertTrue(interpret('os_name == "%s"' % os_name)) self.assertTrue(interpret(