diff --git a/src/poetry/inspection/info.py b/src/poetry/inspection/info.py index 23a64604aa4..e6429165772 100644 --- a/src/poetry/inspection/info.py +++ b/src/poetry/inspection/info.py @@ -114,10 +114,7 @@ def load(cls, data: dict[str, Any]) -> PackageInfo: return cls(cache_version=cache_version, **data) def to_package( - self, - name: str | None = None, - extras: list[str] | None = None, - root_dir: Path | None = None, + self, name: str | None = None, root_dir: Path | None = None ) -> Package: """ Create a new `poetry.core.packages.package.Package` instance using metadata from diff --git a/src/poetry/puzzle/provider.py b/src/poetry/puzzle/provider.py index 1d081a3ca17..f1334e0e3bf 100644 --- a/src/poetry/puzzle/provider.py +++ b/src/poetry/puzzle/provider.py @@ -1,5 +1,6 @@ from __future__ import annotations +import functools import itertools import logging import re @@ -148,6 +149,8 @@ def __init__( reverse=True, ) + self._get_package_from_pool = functools.cache(self._pool.package) + @property def pool(self) -> RepositoryPool: return self._pool @@ -446,10 +449,9 @@ def complete_package( else: dependency_package = DependencyPackage( dependency, - self._pool.package( + self._get_package_from_pool( package.pretty_name, package.version, - extras=list(dependency.extras), repository_name=dependency.source_name, ), ) diff --git a/src/poetry/repositories/abstract_repository.py b/src/poetry/repositories/abstract_repository.py index 97894e4f134..31a63880064 100644 --- a/src/poetry/repositories/abstract_repository.py +++ b/src/poetry/repositories/abstract_repository.py @@ -26,9 +26,4 @@ def find_packages(self, dependency: Dependency) -> list[Package]: ... def search(self, query: str | list[str]) -> list[Package]: ... @abstractmethod - def package( - self, - name: str, - version: Version, - extras: list[str] | None = None, - ) -> Package: ... + def package(self, name: str, version: Version) -> Package: ... diff --git a/src/poetry/repositories/cached_repository.py b/src/poetry/repositories/cached_repository.py index cb5bac13915..c52ea61ea23 100644 --- a/src/poetry/repositories/cached_repository.py +++ b/src/poetry/repositories/cached_repository.py @@ -66,12 +66,7 @@ def get_release_info(self, name: NormalizedName, version: Version) -> PackageInf return PackageInfo.load(cached) - def package( - self, - name: str, - version: Version, - extras: list[str] | None = None, - ) -> Package: + def package(self, name: str, version: Version) -> Package: return self.get_release_info(canonicalize_name(name), version).to_package( - name=name, extras=extras + name=name ) diff --git a/src/poetry/repositories/legacy_repository.py b/src/poetry/repositories/legacy_repository.py index 712e59474de..f3f83bbfc01 100644 --- a/src/poetry/repositories/legacy_repository.py +++ b/src/poetry/repositories/legacy_repository.py @@ -46,9 +46,7 @@ def __init__( pool_size=pool_size, ) - def package( - self, name: str, version: Version, extras: list[str] | None = None - ) -> Package: + def package(self, name: str, version: Version) -> Package: """ Retrieve the release information. @@ -65,7 +63,7 @@ def package( return self._packages[index] except ValueError: - package = super().package(name, version, extras) + package = super().package(name, version) package._source_type = "legacy" package._source_url = self._url package._source_reference = self.name diff --git a/src/poetry/repositories/repository.py b/src/poetry/repositories/repository.py index 3c7ebc23ba4..d7559087c8c 100644 --- a/src/poetry/repositories/repository.py +++ b/src/poetry/repositories/repository.py @@ -102,9 +102,7 @@ def __len__(self) -> int: def find_links_for_package(self, package: Package) -> list[Link]: return [] - def package( - self, name: str, version: Version, extras: list[str] | None = None - ) -> Package: + def package(self, name: str, version: Version) -> Package: canonicalized_name = canonicalize_name(name) for package in self.packages: if canonicalized_name == package.name and package.version == version: diff --git a/src/poetry/repositories/repository_pool.py b/src/poetry/repositories/repository_pool.py index 9ea493b5109..3a85f527986 100644 --- a/src/poetry/repositories/repository_pool.py +++ b/src/poetry/repositories/repository_pool.py @@ -152,20 +152,14 @@ def remove_repository(self, name: str) -> RepositoryPool: return self def package( - self, - name: str, - version: Version, - extras: list[str] | None = None, - repository_name: str | None = None, + self, name: str, version: Version, repository_name: str | None = None ) -> Package: if repository_name: - return self.repository(repository_name).package( - name, version, extras=extras - ) + return self.repository(repository_name).package(name, version) for repo in self.repositories: try: - return repo.package(name, version, extras=extras) + return repo.package(name, version) except PackageNotFoundError: continue raise PackageNotFoundError(f"Package {name} ({version}) not found.")