Skip to content

Commit fa52260

Browse files
abnfinswimmer
authored andcommitted
Fix PEP 508 representation of dependency w/o extras
1 parent b0d9086 commit fa52260

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

poetry/core/packages/dependency.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,9 @@ def to_pep_508(self, with_extras=True): # type: (bool) -> str
224224
if not with_extras:
225225
marker = marker.without_extras()
226226

227-
if not marker.is_empty():
227+
# we re-check for any marker here since the without extra marker might
228+
# return an any marker again
229+
if not marker.is_empty() and not marker.is_any():
228230
markers.append(str(marker))
229231

230232
has_extras = "extra" in convert_markers(marker)

tests/packages/test_dependency.py

+21
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from poetry.core.packages import Dependency
44
from poetry.core.packages import Package
5+
from poetry.core.packages import dependency_from_pep_508
56

67

78
def test_accepts():
@@ -88,6 +89,9 @@ def test_to_pep_508_in_extras():
8889
result = dependency.to_pep_508()
8990
assert result == 'Django (>=1.23,<2.0); extra == "foo"'
9091

92+
result = dependency.to_pep_508(with_extras=False)
93+
assert result == "Django (>=1.23,<2.0)"
94+
9195
dependency.in_extras.append("bar")
9296

9397
result = dependency.to_pep_508()
@@ -105,6 +109,23 @@ def test_to_pep_508_in_extras():
105109
'and (extra == "foo" or extra == "bar")'
106110
)
107111

112+
result = dependency.to_pep_508(with_extras=False)
113+
assert result == (
114+
"Django (>=1.23,<2.0); "
115+
'python_version >= "2.7" and python_version < "2.8" '
116+
'or python_version >= "3.6" and python_version < "4.0"'
117+
)
118+
119+
120+
def test_to_pep_508_in_extras_parsed():
121+
dependency = dependency_from_pep_508('foo[bar] (>=1.23,<2.0) ; extra == "baz"')
122+
123+
result = dependency.to_pep_508()
124+
assert result == 'foo[bar] (>=1.23,<2.0); extra == "baz"'
125+
126+
result = dependency.to_pep_508(with_extras=False)
127+
assert result == "foo[bar] (>=1.23,<2.0)"
128+
108129

109130
def test_to_pep_508_with_single_version_excluded():
110131
dependency = Dependency("foo", "!=1.2.3")

0 commit comments

Comments
 (0)