Exemple #1
0
    def _save_url_reference(self, operation: "OperationTypes") -> None:
        """
        Create and store a PEP-610 `direct_url.json` file, if needed.
        """
        if operation.job_type not in {"install", "update"}:
            return

        from poetry.core.masonry.utils.helpers import escape_name
        from poetry.core.masonry.utils.helpers import escape_version

        package = operation.package

        if not package.source_url:
            # Since we are installing from our own distribution cache
            # pip will write a `direct_url.json` file pointing to the cache
            # distribution.
            # That's not what we want so we remove the direct_url.json file,
            # if it exists.
            dist_info = self._env.site_packages.path.joinpath(
                "{}-{}.dist-info".format(
                    escape_name(package.pretty_name),
                    escape_version(package.version.text),
                ))
            if dist_info.exists() and dist_info.joinpath(
                    "direct_url.json").exists():
                dist_info.joinpath("direct_url.json").unlink()

            return

        url_reference = None

        if package.source_type == "git":
            url_reference = self._create_git_url_reference(package)
        elif package.source_type == "url":
            url_reference = self._create_url_url_reference(package)
        elif package.source_type == "directory":
            url_reference = self._create_directory_url_reference(package)
        elif package.source_type == "file":
            url_reference = self._create_file_url_reference(package)

        if url_reference:
            dist_info = self._env.site_packages.path.joinpath(
                "{}-{}.dist-info".format(escape_name(package.name),
                                         escape_version(package.version.text)))

            if dist_info.exists():
                dist_info.joinpath("direct_url.json").write_text(
                    json.dumps(url_reference), encoding="utf-8")
Exemple #2
0
 def find_links_for_package(self, package):
     return [
         Link(
             "https://foo.bar/files/{}-{}-py2.py3-none-any.whl".format(
                 escape_name(package.name), escape_version(package.version.text)
             )
         )
     ]
Exemple #3
0
    def files(self):  # type: () -> List[Path]
        dist = self._poetry.file.parent / "dist"
        version = normalize_version(self._package.version.text)

        wheels = list(
            dist.glob("{}-{}-*.whl".format(
                escape_name(self._package.pretty_name),
                escape_version(version))))
        tars = list(
            dist.glob("{}-{}.tar.gz".format(self._package.pretty_name,
                                            version)))

        return sorted(wheels + tars)
Exemple #4
0
    def dist_info_name(self, distribution: str, version: str) -> str:
        escaped_name = escape_name(distribution)
        escaped_version = escape_version(version)

        return f"{escaped_name}-{escaped_version}.dist-info"
Exemple #5
0
 def wheel_filename(self) -> str:
     name = escape_name(self._package.pretty_name)
     version = escape_version(self._meta.version)
     return f"{name}-{version}-{self.tag}.whl"