From d156fa6c5b7d084c5e7c3882e76607ca22b9242c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Randy=20D=C3=B6ring?= <30527984+radoering@users.noreply.github.com> Date: Sat, 6 Jun 2026 13:48:37 +0200 Subject: [PATCH] fix export of marker unions with extras (requires poetry-core > 1.4.2) --- src/poetry_plugin_export/walker.py | 14 +++++++++++--- tests/test_exporter_pylock_toml.py | 3 ++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/poetry_plugin_export/walker.py b/src/poetry_plugin_export/walker.py index 9921755..7168ffb 100644 --- a/src/poetry_plugin_export/walker.py +++ b/src/poetry_plugin_export/walker.py @@ -273,10 +273,18 @@ def get_project_dependency_packages2( continue marker = info.get_marker(groups) - if not marker.validate({"extra": extras}): - continue + try: + marker = marker.apply({"extra": extras}) # type: ignore[attr-defined] + except AttributeError: + # poetry-core <= 1.4.2 + if not marker.validate({"extra": extras}): + continue - marker = marker.without_extras() + marker = marker.without_extras() + + else: + if marker.is_empty(): + continue if project_python_marker: marker = project_python_marker.intersect(marker) diff --git a/tests/test_exporter_pylock_toml.py b/tests/test_exporter_pylock_toml.py index df40a7a..cde0485 100644 --- a/tests/test_exporter_pylock_toml.py +++ b/tests/test_exporter_pylock_toml.py @@ -10,6 +10,7 @@ from poetry.core.constraints.version import Version from poetry.core.packages.dependency_group import MAIN_GROUP from poetry.core.packages.package import Package +from poetry.core.version.markers import BaseMarker from poetry.factory import Factory from poetry.packages import Locker as BaseLocker from poetry.repositories import Repository @@ -974,7 +975,7 @@ def test_export_legacy_repo_dependencies(tmp_path: Path, poetry: Poetry) -> None {"main"}, {"extra1"}, 'python_version >= "3.6" or extra == "extra1"', - 'python_version >= "3.6"', + "*" if hasattr(BaseMarker, "apply") else 'python_version >= "3.6"', ), ({"main"}, {"extra1"}, 'python_version >= "3.6" and extra != "extra1"', ""), ],