diff --git a/src/poetry/core/version/markers.py b/src/poetry/core/version/markers.py index 9eebe0017..1b5630e55 100644 --- a/src/poetry/core/version/markers.py +++ b/src/poetry/core/version/markers.py @@ -734,9 +734,11 @@ def exclude(self, marker_name: str) -> BaseMarker: continue marker = m.exclude(marker_name) + new_markers.append(marker) - if not marker.is_empty(): - new_markers.append(marker) + if not new_markers: + # All markers were the excluded marker. + return AnyMarker() return self.of(*new_markers) diff --git a/tests/version/test_markers.py b/tests/version/test_markers.py index 9bf900c47..364cbed88 100644 --- a/tests/version/test_markers.py +++ b/tests/version/test_markers.py @@ -905,6 +905,8 @@ def test_parse_version_like_markers(marker: str, env: dict[str, str]) -> None: ' "pypy" or extra == "bar"', 'python_version >= "3.6" or implementation_name == "pypy"', ), + ('extra == "foo"', ""), + ('extra == "foo" or extra == "bar"', ""), ], ) def test_without_extras(marker: str, expected: str) -> None: