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")