From cfb877c2bc133a20832deee1af3156fa0629f40a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Randy=20D=C3=B6ring?= <30527984+radoering@users.noreply.github.com> Date: Sun, 19 Jan 2025 23:21:08 +0100 Subject: [PATCH] return least complex marker in exclude (for consistency) Otherwise, the expectations in the export tests had to be changed due to the previous commit. --- src/poetry/core/version/markers.py | 4 ++-- tests/version/test_markers.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/poetry/core/version/markers.py b/src/poetry/core/version/markers.py index 9ea52bf25..0090d6b7c 100644 --- a/src/poetry/core/version/markers.py +++ b/src/poetry/core/version/markers.py @@ -744,7 +744,7 @@ def exclude(self, marker_name: str) -> BaseMarker: if not marker.is_empty(): new_markers.append(marker) - return self.of(*new_markers) + return intersection(*new_markers) def only(self, *marker_names: str) -> BaseMarker: return self.of(*(m.only(*marker_names) for m in self._markers)) @@ -920,7 +920,7 @@ def exclude(self, marker_name: str) -> BaseMarker: # All markers were the excluded marker. return AnyMarker() - return self.of(*new_markers) + return union(*new_markers) def only(self, *marker_names: str) -> BaseMarker: return self.of(*(m.only(*marker_names) for m in self._markers)) diff --git a/tests/version/test_markers.py b/tests/version/test_markers.py index 59448250e..280eecbab 100644 --- a/tests/version/test_markers.py +++ b/tests/version/test_markers.py @@ -1351,6 +1351,18 @@ def test_without_extras(marker: str, expected: str) -> None: "extra", 'python_version >= "3.6"', ), + ( + ( + 'python_version >= "2.7" and (python_version < "2.8"' + ' or python_version >= "3.7") and python_version < "3.8"' + ' and extra == "foo"' + ), + "extra", + ( + 'python_version >= "2.7" and python_version < "2.8"' + ' or python_version >= "3.7" and python_version < "3.8"' + ), + ), ], ) def test_exclude(marker: str, excluded: str, expected: str) -> None: