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