From cda2a0abd78b97989ef815a13d3ff7fcd5817efc Mon Sep 17 00:00:00 2001 From: Blazej Michalik Date: Wed, 18 May 2022 22:26:32 +0200 Subject: [PATCH] Evaluate markers under environment with no extra --- CHANGELOG.rst | 4 +++- packaging/markers.py | 1 + tests/test_markers.py | 9 +++------ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 214326e2f..23b85d196 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,7 +4,9 @@ Changelog *unreleased* ~~~~~~~~~~~~ -No unreleased changes. +* ``Marker.evaluate`` will now assume evaluation environment with empty ``extra``. + Evaluating markers like ``"extra == 'xyz'"`` without passing any extra in the + ``environment`` will no longer raise an exception. 21.3 - 2021-11-17 ~~~~~~~~~~~~~~~~~ diff --git a/packaging/markers.py b/packaging/markers.py index 03d8cdefc..f97b0154f 100644 --- a/packaging/markers.py +++ b/packaging/markers.py @@ -274,6 +274,7 @@ def default_environment() -> Dict[str, str]: iver = format_full_version(sys.implementation.version) implementation_name = sys.implementation.name return { + "extra": "", "implementation_name": implementation_name, "implementation_version": iver, "os_name": os.name, diff --git a/tests/test_markers.py b/tests/test_markers.py index b1ccf63c6..28762f105 100644 --- a/tests/test_markers.py +++ b/tests/test_markers.py @@ -15,7 +15,6 @@ Marker, Node, UndefinedComparison, - UndefinedEnvironmentName, default_environment, format_full_version, ) @@ -110,6 +109,7 @@ def test_matches_expected(self): ) assert environment == { + "extra": "", "implementation_name": sys.implementation.name, "implementation_version": iver, "os_name": os.name, @@ -253,11 +253,8 @@ def test_compare_markers_to_other_objects(self): # Markers should not be comparable to other kinds of objects. assert Marker("os_name == 'nt'") != "os_name == 'nt'" - def test_extra_with_no_extra_in_environment(self): - # We can't evaluate an extra if no extra is passed into the environment - m = Marker("extra == 'security'") - with pytest.raises(UndefinedEnvironmentName): - m.evaluate() + def test_environment_assumes_empty_extra(self): + assert Marker('extra == "im_valid"').evaluate() is False @pytest.mark.parametrize( ("marker_string", "environment", "expected"),