Commit ce9ea77d by finswimmer Committed by Sébastien Eustace

fix (vcs_dependency): create valid PEP508 string for git dependencies with ssh (#1799)

parent 8a3d2d76
from poetry.vcs import git
from .dependency import Dependency from .dependency import Dependency
...@@ -73,11 +75,17 @@ class VCSDependency(Dependency): ...@@ -73,11 +75,17 @@ class VCSDependency(Dependency):
@property @property
def base_pep_508_name(self): # type: () -> str def base_pep_508_name(self): # type: () -> str
requirement = self.pretty_name requirement = self.pretty_name
parsed_url = git.ParsedUrl.parse(self._source)
if self.extras: if self.extras:
requirement += "[{}]".format(",".join(self.extras)) requirement += "[{}]".format(",".join(self.extras))
if parsed_url.protocol is not None:
requirement += " @ {}+{}@{}".format(self._vcs, self._source, self.reference) requirement += " @ {}+{}@{}".format(self._vcs, self._source, self.reference)
else:
requirement += " @ {}+ssh://{}@{}".format(
self._vcs, parsed_url.format(), self.reference
)
return requirement return requirement
......
...@@ -86,7 +86,7 @@ class ParsedUrl: ...@@ -86,7 +86,7 @@ class ParsedUrl:
"{}@".format(self.user) if self.user else "", "{}@".format(self.user) if self.user else "",
self.resource, self.resource,
":{}".format(self.port) if self.port else "", ":{}".format(self.port) if self.port else "",
"/" + self.pathname if self.pathname.startswith(":") else self.pathname, "/" + self.pathname.lstrip(":/"),
) )
def format(self): def format(self):
......
...@@ -13,6 +13,14 @@ def test_to_pep_508(): ...@@ -13,6 +13,14 @@ def test_to_pep_508():
assert expected == dependency.to_pep_508() assert expected == dependency.to_pep_508()
def test_to_pep_508_ssh():
dependency = VCSDependency("poetry", "git", "git@github.com:sdispater/poetry.git")
expected = "poetry @ git+ssh://git@github.com/sdispater/poetry.git@master"
assert expected == dependency.to_pep_508()
def test_to_pep_508_with_extras(): def test_to_pep_508_with_extras():
dependency = VCSDependency( dependency = VCSDependency(
"poetry", "git", "https://github.com/python-poetry/poetry.git" "poetry", "git", "https://github.com/python-poetry/poetry.git"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment