Skip to content

Commit

Permalink
refactor: make artifact_cache part of Repositorypool
Browse files Browse the repository at this point in the history
  • Loading branch information
ralbertazzi committed Apr 19, 2023
1 parent b06818d commit d1c3243
Show file tree
Hide file tree
Showing 12 changed files with 77 additions and 148 deletions.
9 changes: 2 additions & 7 deletions src/poetry/console/commands/debug/resolve.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

from poetry.console.commands.init import InitCommand
from poetry.console.commands.show import ShowCommand
from poetry.utils.cache import ArtifactCache


if TYPE_CHECKING:
Expand Down Expand Up @@ -83,11 +82,7 @@ def handle(self) -> int:
)

pool = self.poetry.pool
artifact_cache = ArtifactCache(
cache_dir=self.poetry.config.artifacts_cache_directory
)

solver = Solver(package, pool, artifact_cache, [], [], self.io)
solver = Solver(package, pool, [], [], self.io)

ops = solver.solve().calculate_operations()

Expand Down Expand Up @@ -124,7 +119,7 @@ def handle(self) -> int:

pool.add_repository(locked_repository)

solver = Solver(package, pool, artifact_cache, [], [], NullIO())
solver = Solver(package, pool, [], [], NullIO())
with solver.use_environment(env):
ops = solver.solve().calculate_operations()

Expand Down
8 changes: 1 addition & 7 deletions src/poetry/console/commands/init.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

from poetry.console.commands.command import Command
from poetry.console.commands.env_command import EnvCommand
from poetry.utils.cache import ArtifactCache
from poetry.utils.dependency_specification import parse_dependency_specification


Expand Down Expand Up @@ -435,14 +434,9 @@ def _parse_requirements(self, requirements: list[str]) -> list[dict[str, Any]]:

try:
cwd = self.poetry.file.parent
artifact_cache = self.poetry.pool.artifact_cache
except (PyProjectException, RuntimeError):
cwd = Path.cwd()

try:
artifact_cache = ArtifactCache(
cache_dir=self.poetry.config.artifacts_cache_directory
)
except (PyProjectException, RuntimeError):
artifact_cache = None

return [
Expand Down
14 changes: 6 additions & 8 deletions src/poetry/console/commands/show.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,15 +214,16 @@ def _display_packages_information(
from poetry.utils.helpers import get_package_version_display_string

locked_packages = locked_repository.packages
pool = RepositoryPool(ignore_repository_names=True)
pool.add_repository(locked_repository)
artifact_cache = ArtifactCache(
cache_dir=self.poetry.config.artifacts_cache_directory
pool = RepositoryPool(
ignore_repository_names=True,
artifact_cache=ArtifactCache(
cache_dir=self.poetry.config.artifacts_cache_directory
),
)
pool.add_repository(locked_repository)
solver = Solver(
root,
pool=pool,
artifact_cache=artifact_cache,
installed=[],
locked=locked_packages,
io=NullIO(),
Expand Down Expand Up @@ -555,9 +556,6 @@ def find_latest_package(
provider = Provider(
root,
self.poetry.pool,
ArtifactCache(
cache_dir=self.poetry.config.artifacts_cache_directory
),
NullIO(),
)
return provider.search_for_direct_origin_dependency(dep)
Expand Down
13 changes: 8 additions & 5 deletions src/poetry/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from poetry.plugins.plugin_manager import PluginManager
from poetry.poetry import Poetry
from poetry.toml.file import TOMLFile
from poetry.utils.cache import ArtifactCache


if TYPE_CHECKING:
Expand Down Expand Up @@ -118,7 +119,7 @@ def get_package(cls, name: str, version: str) -> ProjectPackage:
@classmethod
def create_pool(
cls,
auth_config: Config,
config: Config,
sources: Iterable[dict[str, Any]] = (),
io: IO | None = None,
disable_cache: bool = False,
Expand All @@ -132,11 +133,13 @@ def create_pool(
if disable_cache:
logger.debug("Disabling source caches")

pool = RepositoryPool()
pool = RepositoryPool(
artifact_cache=ArtifactCache(cache_dir=config.artifacts_cache_directory)
)

for source in sources:
repository = cls.create_package_source(
source, auth_config, disable_cache=disable_cache
source, config, disable_cache=disable_cache
)
priority = Priority[source.get("priority", Priority.PRIMARY.name).upper()]
if "default" in source or "secondary" in source:
Expand Down Expand Up @@ -184,7 +187,7 @@ def create_pool(

@classmethod
def create_package_source(
cls, source: dict[str, str], auth_config: Config, disable_cache: bool = False
cls, source: dict[str, str], config: Config, disable_cache: bool = False
) -> LegacyRepository:
from poetry.repositories.legacy_repository import LegacyRepository
from poetry.repositories.single_page_repository import SinglePageRepository
Expand All @@ -206,7 +209,7 @@ def create_package_source(
return repository_class(
name,
url,
config=auth_config,
config=config,
disable_cache=disable_cache,
)

Expand Down
7 changes: 3 additions & 4 deletions src/poetry/installation/installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,6 @@ def _do_refresh(self) -> int:
solver = Solver(
self._package,
self._pool,
self._artifact_cache,
locked_repository.packages,
locked_repository.packages,
self._io,
Expand Down Expand Up @@ -261,7 +260,6 @@ def _do_install(self) -> int:
solver = Solver(
self._package,
self._pool,
self._artifact_cache,
self._installed_repository.packages,
locked_repository.packages,
self._io,
Expand Down Expand Up @@ -318,7 +316,9 @@ def _do_install(self) -> int:
)

# We resolve again by only using the lock file
pool = RepositoryPool(ignore_repository_names=True)
pool = RepositoryPool(
ignore_repository_names=True, artifact_cache=self._artifact_cache
)

# Making a new repo containing the packages
# newly resolved and the ones from the current lock file
Expand All @@ -332,7 +332,6 @@ def _do_install(self) -> int:
solver = Solver(
root,
pool,
self._artifact_cache,
self._installed_repository.packages,
locked_repository.packages,
NullIO(),
Expand Down
4 changes: 1 addition & 3 deletions src/poetry/puzzle/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,15 +142,13 @@ def __init__(
self,
package: Package,
pool: RepositoryPool,
artifact_cache: ArtifactCache,
io: IO,
*,
installed: list[Package] | None = None,
locked: list[Package] | None = None,
) -> None:
self._package = package
self._pool = pool
self._artifact_cache = artifact_cache
self._io = io
self._env: Env | None = None
self._python_constraint = package.python_constraint
Expand Down Expand Up @@ -443,7 +441,7 @@ def get_package_from_directory(cls, directory: Path) -> Package:
return PackageInfo.from_directory(path=directory).to_package(root_dir=directory)

def _search_for_url(self, dependency: URLDependency) -> Package:
package = self.get_package_from_url(dependency.url, self._artifact_cache)
package = self.get_package_from_url(dependency.url, self._pool.artifact_cache)

self.validate_package_for_dependency(dependency=dependency, package=package)

Expand Down
3 changes: 0 additions & 3 deletions src/poetry/puzzle/solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
from poetry.packages import DependencyPackage
from poetry.puzzle.transaction import Transaction
from poetry.repositories import RepositoryPool
from poetry.utils.cache import ArtifactCache
from poetry.utils.env import Env


Expand All @@ -39,7 +38,6 @@ def __init__(
self,
package: ProjectPackage,
pool: RepositoryPool,
artifact_cache: ArtifactCache,
installed: list[Package],
locked: list[Package],
io: IO,
Expand All @@ -53,7 +51,6 @@ def __init__(
self._provider = Provider(
self._package,
self._pool,
artifact_cache,
self._io,
installed=installed,
locked=locked,
Expand Down
8 changes: 8 additions & 0 deletions src/poetry/repositories/repository_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from poetry.core.packages.package import Package

from poetry.repositories.repository import Repository
from poetry.utils.cache import ArtifactCache


class Priority(IntEnum):
Expand All @@ -40,6 +41,7 @@ def __init__(
self,
repositories: list[Repository] | None = None,
ignore_repository_names: bool = False,
artifact_cache: ArtifactCache | None = None,
) -> None:
super().__init__("poetry-repository-pool")
self._repositories: OrderedDict[str, PrioritizedRepository] = OrderedDict()
Expand All @@ -50,6 +52,8 @@ def __init__(
for repository in repositories:
self.add_repository(repository)

self._artifact_cache = artifact_cache

@property
def repositories(self) -> list[Repository]:
"""
Expand Down Expand Up @@ -77,6 +81,10 @@ def _sorted_repositories(self) -> list[PrioritizedRepository]:
self._repositories.values(), key=lambda prio_repo: prio_repo.priority
)

@property
def artifact_cache(self) -> ArtifactCache | None:
return self._artifact_cache

def has_default(self) -> bool:
return self._contains_priority(Priority.DEFAULT)

Expand Down
14 changes: 2 additions & 12 deletions tests/mixology/version_solver/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,9 @@
from poetry.puzzle.provider import Provider as BaseProvider
from poetry.repositories import Repository
from poetry.repositories import RepositoryPool
from poetry.utils.cache import ArtifactCache


if TYPE_CHECKING:
from pathlib import Path

from tests.helpers import TestRepository


Expand All @@ -38,18 +35,11 @@ def pool(repo: TestRepository) -> RepositoryPool:
return pool


@pytest.fixture
def artifact_cache(tmp_path: Path) -> ArtifactCache:
return ArtifactCache(cache_dir=tmp_path)


@pytest.fixture
def root() -> ProjectPackage:
return ProjectPackage("myapp", "0.0.0")


@pytest.fixture
def provider(
pool: RepositoryPool, root: ProjectPackage, artifact_cache: ArtifactCache
) -> Provider:
return Provider(root, pool, artifact_cache, NullIO())
def provider(pool: RepositoryPool, root: ProjectPackage) -> Provider:
return Provider(root, pool, NullIO())
Loading

0 comments on commit d1c3243

Please sign in to comment.