diff --git a/src/poetry/inspection/info.py b/src/poetry/inspection/info.py index 4e2c6642532..935216079f1 100644 --- a/src/poetry/inspection/info.py +++ b/src/poetry/inspection/info.py @@ -395,7 +395,22 @@ def _find_dist_info(path: Path) -> Iterator[Path]: yield Path(d) @classmethod - def from_metadata(cls, path: Path) -> PackageInfo | None: + def from_metadata(cls, metadata: RawMetadata) -> PackageInfo: + """ + Create package information from core metadata. + + :param metadata: raw metadata + """ + return cls( + name=metadata.get("name"), + version=metadata.get("version"), + summary=metadata.get("summary"), + requires_dist=metadata.get("requires_dist"), + requires_python=metadata.get("requires_python"), + ) + + @classmethod + def from_metadata_directory(cls, path: Path) -> PackageInfo | None: """ Helper method to parse package information from an unpacked metadata directory. @@ -477,7 +492,7 @@ def from_directory(cls, path: Path, disable_build: bool = False) -> PackageInfo: if project_package: info = cls.from_package(project_package) else: - info = cls.from_metadata(path) + info = cls.from_metadata_directory(path) if not info or info.requires_dist is None: try: @@ -523,21 +538,6 @@ def from_wheel(cls, path: Path) -> PackageInfo: except ValueError: return PackageInfo() - @classmethod - def from_wheel_metadata(cls, metadata: RawMetadata) -> PackageInfo: - """ - Gather package information from metadata of a remote wheel. - - :param metadata: metadata of the wheel. - """ - return cls( - name=metadata.get("name"), - version=metadata.get("version"), - summary=metadata.get("summary"), - requires_dist=metadata.get("requires_dist"), - requires_python=metadata.get("requires_python"), - ) - @classmethod def from_bdist(cls, path: Path) -> PackageInfo: """ @@ -601,7 +601,7 @@ def get_pep517_metadata(path: Path) -> PackageInfo: *PEP517_META_BUILD_DEPS, ) venv.run_python_script(pep517_meta_build_script) - info = PackageInfo.from_metadata(dest_dir) + info = PackageInfo.from_metadata_directory(dest_dir) except EnvCommandError as e: # something went wrong while attempting pep517 metadata build # fallback to egg_info if setup.py available @@ -618,7 +618,7 @@ def get_pep517_metadata(path: Path) -> PackageInfo: os.chdir(path) try: venv.run("python", "setup.py", "egg_info") - info = PackageInfo.from_metadata(path) + info = PackageInfo.from_metadata_directory(path) except EnvCommandError as fbe: raise PackageInfoError( path, e, "Fallback egg_info generation failed.", fbe diff --git a/src/poetry/repositories/http_repository.py b/src/poetry/repositories/http_repository.py index 9c89ec83ee1..61f1a088dac 100644 --- a/src/poetry/repositories/http_repository.py +++ b/src/poetry/repositories/http_repository.py @@ -118,7 +118,7 @@ def _get_info_from_wheel(self, url: str) -> PackageInfo: # or we don't know yet, we try range requests. if self._lazy_wheel and self._supports_range_requests.get(netloc, True): try: - package_info = PackageInfo.from_wheel_metadata( + package_info = PackageInfo.from_metadata( metadata_from_wheel_url(link.filename, link.url, self.session) ) except HTTPRangeRequestUnsupported: diff --git a/tests/inspection/test_info.py b/tests/inspection/test_info.py index aa55b76295a..56fadf25631 100644 --- a/tests/inspection/test_info.py +++ b/tests/inspection/test_info.py @@ -145,7 +145,7 @@ def test_info_from_wheel(demo_wheel: Path) -> None: def test_info_from_wheel_metadata(demo_wheel_metadata: RawMetadata) -> None: - info = PackageInfo.from_wheel_metadata(demo_wheel_metadata) + info = PackageInfo.from_metadata(demo_wheel_metadata) demo_check_info(info) assert info.requires_python == ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" assert info._source_type is None @@ -158,7 +158,7 @@ def test_info_from_wheel_metadata_incomplete() -> None: it is important that the representation of missing fields does not change! """ metadata, _ = parse_email(b"Metadata-Version: 2.1\nName: demo\nVersion: 0.1.0\n") - info = PackageInfo.from_wheel_metadata(metadata) + info = PackageInfo.from_metadata(metadata) assert info.name == "demo" assert info.version == "0.1.0" assert info.summary is None @@ -199,7 +199,7 @@ def test_info_from_poetry_directory_fallback_on_poetry_create_error( def test_info_from_requires_txt(fixture_dir: FixtureDirGetter) -> None: - info = PackageInfo.from_metadata( + info = PackageInfo.from_metadata_directory( fixture_dir("inspection") / "demo_only_requires_txt.egg-info" ) assert info is not None