From 40b8e966f993ee20de1c56ccee5edec3d7477c0c Mon Sep 17 00:00:00 2001 From: Arun Babu Neelicattu <arun.neelicattu@gmail.com> Date: Fri, 16 Oct 2020 21:47:11 +0200 Subject: [PATCH] Fix PEP 508 representation of dependency w/o extras --- poetry/core/packages/dependency.py | 4 +++- tests/packages/test_dependency.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/poetry/core/packages/dependency.py b/poetry/core/packages/dependency.py index c648a4b6a..1ffe0450b 100644 --- a/poetry/core/packages/dependency.py +++ b/poetry/core/packages/dependency.py @@ -224,7 +224,9 @@ def to_pep_508(self, with_extras=True): # type: (bool) -> str if not with_extras: marker = marker.without_extras() - if not marker.is_empty(): + # we re-check for any marker here since the without extra marker might + # return an any marker again + if not marker.is_empty() and not marker.is_any(): markers.append(str(marker)) has_extras = "extra" in convert_markers(marker) diff --git a/tests/packages/test_dependency.py b/tests/packages/test_dependency.py index b903c6fbf..8c1af6bb1 100644 --- a/tests/packages/test_dependency.py +++ b/tests/packages/test_dependency.py @@ -2,6 +2,7 @@ from poetry.core.packages import Dependency from poetry.core.packages import Package +from poetry.core.packages import dependency_from_pep_508 def test_accepts(): @@ -88,6 +89,10 @@ def test_to_pep_508_in_extras(): result = dependency.to_pep_508() assert result == 'Django (>=1.23,<2.0); extra == "foo"' + result = dependency.to_pep_508(with_extras=False) + print(dependency.marker) + assert result == "Django (>=1.23,<2.0)" + dependency.in_extras.append("bar") result = dependency.to_pep_508() @@ -106,6 +111,16 @@ def test_to_pep_508_in_extras(): ) +def test_to_pep_508_in_extras_parsed(): + dependency = dependency_from_pep_508('foo[bar] (>=1.23,<2.0) ; extra == "baz"') + + result = dependency.to_pep_508() + assert result == 'foo[bar] (>=1.23,<2.0); extra == "baz"' + + result = dependency.to_pep_508(with_extras=False) + assert result == "foo[bar] (>=1.23,<2.0)" + + def test_to_pep_508_with_single_version_excluded(): dependency = Dependency("foo", "!=1.2.3")