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
......@@ -73,11 +75,17 @@ class VCSDependency(Dependency):
@property
def base_pep_508_name(self): # type: () -> str
requirement = self.pretty_name
parsed_url = git.ParsedUrl.parse(self._source)
if self.extras:
requirement += "[{}]".format(",".join(self.extras))
if parsed_url.protocol is not None:
requirement += " @ {}+{}@{}".format(self._vcs, self._source, self.reference)
else:
requirement += " @ {}+ssh://{}@{}".format(
self._vcs, parsed_url.format(), self.reference
)
return requirement
......
......@@ -86,7 +86,7 @@ class ParsedUrl:
"{}@".format(self.user) if self.user else "",
self.resource,
":{}".format(self.port) if self.port else "",
"/" + self.pathname if self.pathname.startswith(":") else self.pathname,
"/" + self.pathname.lstrip(":/"),
)
def format(self):
......
......@@ -13,6 +13,14 @@ def test_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():
dependency = VCSDependency(
"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