Skip to content

Commit d1c3243

Browse files
committed
refactor: make artifact_cache part of Repositorypool
1 parent b06818d commit d1c3243

File tree

12 files changed

+77
-148
lines changed

12 files changed

+77
-148
lines changed

src/poetry/console/commands/debug/resolve.py

+2-7
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
from poetry.console.commands.init import InitCommand
1010
from poetry.console.commands.show import ShowCommand
11-
from poetry.utils.cache import ArtifactCache
1211

1312

1413
if TYPE_CHECKING:
@@ -83,11 +82,7 @@ def handle(self) -> int:
8382
)
8483

8584
pool = self.poetry.pool
86-
artifact_cache = ArtifactCache(
87-
cache_dir=self.poetry.config.artifacts_cache_directory
88-
)
89-
90-
solver = Solver(package, pool, artifact_cache, [], [], self.io)
85+
solver = Solver(package, pool, [], [], self.io)
9186

9287
ops = solver.solve().calculate_operations()
9388

@@ -124,7 +119,7 @@ def handle(self) -> int:
124119

125120
pool.add_repository(locked_repository)
126121

127-
solver = Solver(package, pool, artifact_cache, [], [], NullIO())
122+
solver = Solver(package, pool, [], [], NullIO())
128123
with solver.use_environment(env):
129124
ops = solver.solve().calculate_operations()
130125

src/poetry/console/commands/init.py

+1-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
from poetry.console.commands.command import Command
1515
from poetry.console.commands.env_command import EnvCommand
16-
from poetry.utils.cache import ArtifactCache
1716
from poetry.utils.dependency_specification import parse_dependency_specification
1817

1918

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

436435
try:
437436
cwd = self.poetry.file.parent
437+
artifact_cache = self.poetry.pool.artifact_cache
438438
except (PyProjectException, RuntimeError):
439439
cwd = Path.cwd()
440-
441-
try:
442-
artifact_cache = ArtifactCache(
443-
cache_dir=self.poetry.config.artifacts_cache_directory
444-
)
445-
except (PyProjectException, RuntimeError):
446440
artifact_cache = None
447441

448442
return [

src/poetry/console/commands/show.py

+6-8
Original file line numberDiff line numberDiff line change
@@ -214,15 +214,16 @@ def _display_packages_information(
214214
from poetry.utils.helpers import get_package_version_display_string
215215

216216
locked_packages = locked_repository.packages
217-
pool = RepositoryPool(ignore_repository_names=True)
218-
pool.add_repository(locked_repository)
219-
artifact_cache = ArtifactCache(
220-
cache_dir=self.poetry.config.artifacts_cache_directory
217+
pool = RepositoryPool(
218+
ignore_repository_names=True,
219+
artifact_cache=ArtifactCache(
220+
cache_dir=self.poetry.config.artifacts_cache_directory
221+
),
221222
)
223+
pool.add_repository(locked_repository)
222224
solver = Solver(
223225
root,
224226
pool=pool,
225-
artifact_cache=artifact_cache,
226227
installed=[],
227228
locked=locked_packages,
228229
io=NullIO(),
@@ -555,9 +556,6 @@ def find_latest_package(
555556
provider = Provider(
556557
root,
557558
self.poetry.pool,
558-
ArtifactCache(
559-
cache_dir=self.poetry.config.artifacts_cache_directory
560-
),
561559
NullIO(),
562560
)
563561
return provider.search_for_direct_origin_dependency(dep)

src/poetry/factory.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from poetry.plugins.plugin_manager import PluginManager
2222
from poetry.poetry import Poetry
2323
from poetry.toml.file import TOMLFile
24+
from poetry.utils.cache import ArtifactCache
2425

2526

2627
if TYPE_CHECKING:
@@ -118,7 +119,7 @@ def get_package(cls, name: str, version: str) -> ProjectPackage:
118119
@classmethod
119120
def create_pool(
120121
cls,
121-
auth_config: Config,
122+
config: Config,
122123
sources: Iterable[dict[str, Any]] = (),
123124
io: IO | None = None,
124125
disable_cache: bool = False,
@@ -132,11 +133,13 @@ def create_pool(
132133
if disable_cache:
133134
logger.debug("Disabling source caches")
134135

135-
pool = RepositoryPool()
136+
pool = RepositoryPool(
137+
artifact_cache=ArtifactCache(cache_dir=config.artifacts_cache_directory)
138+
)
136139

137140
for source in sources:
138141
repository = cls.create_package_source(
139-
source, auth_config, disable_cache=disable_cache
142+
source, config, disable_cache=disable_cache
140143
)
141144
priority = Priority[source.get("priority", Priority.PRIMARY.name).upper()]
142145
if "default" in source or "secondary" in source:
@@ -184,7 +187,7 @@ def create_pool(
184187

185188
@classmethod
186189
def create_package_source(
187-
cls, source: dict[str, str], auth_config: Config, disable_cache: bool = False
190+
cls, source: dict[str, str], config: Config, disable_cache: bool = False
188191
) -> LegacyRepository:
189192
from poetry.repositories.legacy_repository import LegacyRepository
190193
from poetry.repositories.single_page_repository import SinglePageRepository
@@ -206,7 +209,7 @@ def create_package_source(
206209
return repository_class(
207210
name,
208211
url,
209-
config=auth_config,
212+
config=config,
210213
disable_cache=disable_cache,
211214
)
212215

src/poetry/installation/installer.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,6 @@ def _do_refresh(self) -> int:
214214
solver = Solver(
215215
self._package,
216216
self._pool,
217-
self._artifact_cache,
218217
locked_repository.packages,
219218
locked_repository.packages,
220219
self._io,
@@ -261,7 +260,6 @@ def _do_install(self) -> int:
261260
solver = Solver(
262261
self._package,
263262
self._pool,
264-
self._artifact_cache,
265263
self._installed_repository.packages,
266264
locked_repository.packages,
267265
self._io,
@@ -318,7 +316,9 @@ def _do_install(self) -> int:
318316
)
319317

320318
# We resolve again by only using the lock file
321-
pool = RepositoryPool(ignore_repository_names=True)
319+
pool = RepositoryPool(
320+
ignore_repository_names=True, artifact_cache=self._artifact_cache
321+
)
322322

323323
# Making a new repo containing the packages
324324
# newly resolved and the ones from the current lock file
@@ -332,7 +332,6 @@ def _do_install(self) -> int:
332332
solver = Solver(
333333
root,
334334
pool,
335-
self._artifact_cache,
336335
self._installed_repository.packages,
337336
locked_repository.packages,
338337
NullIO(),

src/poetry/puzzle/provider.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,13 @@ def __init__(
142142
self,
143143
package: Package,
144144
pool: RepositoryPool,
145-
artifact_cache: ArtifactCache,
146145
io: IO,
147146
*,
148147
installed: list[Package] | None = None,
149148
locked: list[Package] | None = None,
150149
) -> None:
151150
self._package = package
152151
self._pool = pool
153-
self._artifact_cache = artifact_cache
154152
self._io = io
155153
self._env: Env | None = None
156154
self._python_constraint = package.python_constraint
@@ -443,7 +441,7 @@ def get_package_from_directory(cls, directory: Path) -> Package:
443441
return PackageInfo.from_directory(path=directory).to_package(root_dir=directory)
444442

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

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

src/poetry/puzzle/solver.py

-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
from poetry.packages import DependencyPackage
3131
from poetry.puzzle.transaction import Transaction
3232
from poetry.repositories import RepositoryPool
33-
from poetry.utils.cache import ArtifactCache
3433
from poetry.utils.env import Env
3534

3635

@@ -39,7 +38,6 @@ def __init__(
3938
self,
4039
package: ProjectPackage,
4140
pool: RepositoryPool,
42-
artifact_cache: ArtifactCache,
4341
installed: list[Package],
4442
locked: list[Package],
4543
io: IO,
@@ -53,7 +51,6 @@ def __init__(
5351
self._provider = Provider(
5452
self._package,
5553
self._pool,
56-
artifact_cache,
5754
self._io,
5855
installed=installed,
5956
locked=locked,

src/poetry/repositories/repository_pool.py

+8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from poetry.core.packages.package import Package
1919

2020
from poetry.repositories.repository import Repository
21+
from poetry.utils.cache import ArtifactCache
2122

2223

2324
class Priority(IntEnum):
@@ -40,6 +41,7 @@ def __init__(
4041
self,
4142
repositories: list[Repository] | None = None,
4243
ignore_repository_names: bool = False,
44+
artifact_cache: ArtifactCache | None = None,
4345
) -> None:
4446
super().__init__("poetry-repository-pool")
4547
self._repositories: OrderedDict[str, PrioritizedRepository] = OrderedDict()
@@ -50,6 +52,8 @@ def __init__(
5052
for repository in repositories:
5153
self.add_repository(repository)
5254

55+
self._artifact_cache = artifact_cache
56+
5357
@property
5458
def repositories(self) -> list[Repository]:
5559
"""
@@ -77,6 +81,10 @@ def _sorted_repositories(self) -> list[PrioritizedRepository]:
7781
self._repositories.values(), key=lambda prio_repo: prio_repo.priority
7882
)
7983

84+
@property
85+
def artifact_cache(self) -> ArtifactCache | None:
86+
return self._artifact_cache
87+
8088
def has_default(self) -> bool:
8189
return self._contains_priority(Priority.DEFAULT)
8290

tests/mixology/version_solver/conftest.py

+2-12
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,9 @@
1010
from poetry.puzzle.provider import Provider as BaseProvider
1111
from poetry.repositories import Repository
1212
from poetry.repositories import RepositoryPool
13-
from poetry.utils.cache import ArtifactCache
1413

1514

1615
if TYPE_CHECKING:
17-
from pathlib import Path
18-
1916
from tests.helpers import TestRepository
2017

2118

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

4037

41-
@pytest.fixture
42-
def artifact_cache(tmp_path: Path) -> ArtifactCache:
43-
return ArtifactCache(cache_dir=tmp_path)
44-
45-
4638
@pytest.fixture
4739
def root() -> ProjectPackage:
4840
return ProjectPackage("myapp", "0.0.0")
4941

5042

5143
@pytest.fixture
52-
def provider(
53-
pool: RepositoryPool, root: ProjectPackage, artifact_cache: ArtifactCache
54-
) -> Provider:
55-
return Provider(root, pool, artifact_cache, NullIO())
44+
def provider(pool: RepositoryPool, root: ProjectPackage) -> Provider:
45+
return Provider(root, pool, NullIO())

0 commit comments

Comments
 (0)