def test_as_pep440_requirement_vcs(): direct_url = DirectUrl( url="https:///g.c/u/p.git", info=VcsInfo(vcs="git", commit_id="1b8c5bc61a86f377fea47b4276c8c8a5842d2220")) direct_url.validate() assert (direct_url_as_pep440_direct_reference( direct_url, "pkg") == "pkg @ git+https:///g.c/u/p.git" "@1b8c5bc61a86f377fea47b4276c8c8a5842d2220") direct_url.subdirectory = "subdir" direct_url.validate() assert (direct_url_as_pep440_direct_reference( direct_url, "pkg") == "pkg @ git+https:///g.c/u/p.git" "@1b8c5bc61a86f377fea47b4276c8c8a5842d2220#subdirectory=subdir")
def test_as_pep440_requirement_dir() -> None: direct_url = DirectUrl( url="file:///home/user/project", info=DirInfo(editable=False), ) direct_url.validate() assert (direct_url_as_pep440_direct_reference( direct_url, "pkg") == "pkg @ file:///home/user/project")
def test_as_pep440_requirement_archive(): direct_url = DirectUrl( url="file:///home/user/archive.tgz", info=ArchiveInfo(), ) direct_url.validate() assert (direct_url_as_pep440_direct_reference( direct_url, "pkg") == "pkg @ file:///home/user/archive.tgz") direct_url.subdirectory = "subdir" direct_url.validate() assert (direct_url_as_pep440_direct_reference( direct_url, "pkg") == "pkg @ file:///home/user/archive.tgz#subdirectory=subdir") direct_url.info.hash = "sha1=1b8c5bc61a86f377fea47b4276c8c8a5842d2220" direct_url.validate() assert ( direct_url_as_pep440_direct_reference( direct_url, "pkg") == "pkg @ file:///home/user/archive.tgz" "#sha1=1b8c5bc61a86f377fea47b4276c8c8a5842d2220&subdirectory=subdir")
def test_as_pep440_requirement_editable_dir() -> None: # direct_url_as_pep440_direct_reference behaves the same # irrespective of the editable flag. It's the responsibility of # callers to render it as editable direct_url = DirectUrl( url="file:///home/user/project", info=DirInfo(editable=True), ) direct_url.validate() assert (direct_url_as_pep440_direct_reference( direct_url, "pkg") == "pkg @ file:///home/user/project")
def from_dist(cls, dist: BaseDistribution) -> "FrozenRequirement": editable = dist.editable if editable: req, comments = _get_editable_info(dist) else: comments = [] direct_url = dist.direct_url if direct_url: # if PEP 610 metadata is present, use it req = direct_url_as_pep440_direct_reference(direct_url, dist.raw_name) else: # name==version requirement req = _format_as_name_version(dist) return cls(dist.raw_name, req, editable, comments=comments)
def from_dist(cls, dist: BaseDistribution) -> "FrozenRequirement": # TODO `get_requirement_info` is taking care of editable requirements. # TODO This should be refactored when we will add detection of # editable that provide .dist-info metadata. req, editable, comments = _get_editable_info(dist) if req is None and not editable: # if PEP 610 metadata is present, attempt to use it direct_url = dist.direct_url if direct_url: req = direct_url_as_pep440_direct_reference( direct_url, dist.raw_name) comments = [] if req is None: # name==version requirement req = _format_as_name_version(dist) return cls(dist.raw_name, req, editable, comments=comments)