Skip to content

Commit c2c69a3

Browse files
authored
every Repository is named (#5910)
* every Repository is named * assert repository not added to pool twice
1 parent f97b372 commit c2c69a3

File tree

17 files changed

+107
-88
lines changed

17 files changed

+107
-88
lines changed

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

+5-6
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def handle(self) -> int:
8585

8686
pool = self.poetry.pool
8787

88-
solver = Solver(package, pool, Repository(), Repository(), self.io)
88+
solver = Solver(package, pool, [], [], self.io)
8989

9090
ops = solver.solve().calculate_operations()
9191

@@ -98,13 +98,12 @@ def handle(self) -> int:
9898
show_command.init_styles(self.io)
9999

100100
packages = [op.package for op in ops]
101-
repo = Repository(packages=packages)
102101

103102
requires = package.all_requires
104-
for pkg in repo.packages:
103+
for pkg in packages:
105104
for require in requires:
106105
if pkg.name == require.name:
107-
show_command.display_package_tree(self.io, pkg, repo)
106+
show_command.display_package_tree(self.io, pkg, packages)
108107
break
109108

110109
return 0
@@ -116,13 +115,13 @@ def handle(self) -> int:
116115
if self.option("install"):
117116
env = EnvManager(self.poetry).get()
118117
pool = Pool()
119-
locked_repository = Repository()
118+
locked_repository = Repository("poetry-locked")
120119
for op in ops:
121120
locked_repository.add_package(op.package)
122121

123122
pool.add_repository(locked_repository)
124123

125-
solver = Solver(package, pool, Repository(), Repository(), NullIO())
124+
solver = Solver(package, pool, [], [], NullIO())
126125
with solver.use_environment(env):
127126
ops = solver.solve().calculate_operations()
128127

src/poetry/console/commands/show.py

+28-16
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from poetry.core.packages.package import Package
1616
from poetry.core.packages.project_package import ProjectPackage
1717

18-
from poetry.repositories.installed_repository import InstalledRepository
1918
from poetry.repositories.repository import Repository
2019

2120

@@ -74,7 +73,6 @@ def handle(self) -> int:
7473
from poetry.puzzle.solver import Solver
7574
from poetry.repositories.installed_repository import InstalledRepository
7675
from poetry.repositories.pool import Pool
77-
from poetry.repositories.repository import Repository
7876
from poetry.utils.helpers import get_package_version_display_string
7977

8078
package = self.argument("package")
@@ -119,7 +117,7 @@ def handle(self) -> int:
119117
for p in packages:
120118
for require in requires:
121119
if p.name == require.name:
122-
self.display_package_tree(self.io, p, locked_repo)
120+
self.display_package_tree(self.io, p, packages)
123121
break
124122

125123
return 0
@@ -131,8 +129,8 @@ def handle(self) -> int:
131129
solver = Solver(
132130
root,
133131
pool=pool,
134-
installed=Repository(),
135-
locked=locked_repo,
132+
installed=[],
133+
locked=locked_packages,
136134
io=NullIO(),
137135
)
138136
solver.provider.load_deferred(False)
@@ -174,11 +172,11 @@ def handle(self) -> int:
174172

175173
for p in packages:
176174
self.display_package_tree(
177-
self.io, p, locked_repo, why_package=pkg
175+
self.io, p, locked_packages, why_package=pkg
178176
)
179177

180178
else:
181-
self.display_package_tree(self.io, pkg, locked_repo)
179+
self.display_package_tree(self.io, pkg, locked_packages)
182180

183181
return 0
184182

@@ -224,7 +222,9 @@ def handle(self) -> int:
224222

225223
current_length = len(locked.pretty_name)
226224
if not self.io.output.is_decorated():
227-
installed_status = self.get_installed_status(locked, installed_repo)
225+
installed_status = self.get_installed_status(
226+
locked, installed_repo.packages
227+
)
228228

229229
if installed_status == "not-installed":
230230
current_length += 4
@@ -300,7 +300,9 @@ def handle(self) -> int:
300300

301301
color = "black;options=bold"
302302
else:
303-
installed_status = self.get_installed_status(locked, installed_repo)
303+
installed_status = self.get_installed_status(
304+
locked, installed_repo.packages
305+
)
304306
if installed_status == "not-installed":
305307
color = "red"
306308

@@ -371,7 +373,7 @@ def display_package_tree(
371373
self,
372374
io: IO,
373375
package: Package,
374-
installed_repo: Repository,
376+
installed_packages: list[Package],
375377
why_package: Package | None = None,
376378
) -> None:
377379
io.write(f"<c1>{package.pretty_name}</c1>")
@@ -408,22 +410,27 @@ def display_package_tree(
408410
packages_in_tree = [package.name, dependency.name]
409411

410412
self._display_tree(
411-
io, dependency, installed_repo, packages_in_tree, tree_bar, level + 1
413+
io,
414+
dependency,
415+
installed_packages,
416+
packages_in_tree,
417+
tree_bar,
418+
level + 1,
412419
)
413420

414421
def _display_tree(
415422
self,
416423
io: IO,
417424
dependency: Dependency,
418-
installed_repo: Repository,
425+
installed_packages: list[Package],
419426
packages_in_tree: list[str],
420427
previous_tree_bar: str = "├",
421428
level: int = 1,
422429
) -> None:
423430
previous_tree_bar = previous_tree_bar.replace("├", "│")
424431

425432
dependencies = []
426-
for package in installed_repo.packages:
433+
for package in installed_packages:
427434
if package.name == dependency.name:
428435
dependencies = package.requires
429436

@@ -459,7 +466,12 @@ def _display_tree(
459466
current_tree.append(dependency.name)
460467

461468
self._display_tree(
462-
io, dependency, installed_repo, current_tree, tree_bar, level + 1
469+
io,
470+
dependency,
471+
installed_packages,
472+
current_tree,
473+
tree_bar,
474+
level + 1,
463475
)
464476

465477
def _write_tree_line(self, io: IO, line: str) -> None:
@@ -517,9 +529,9 @@ def get_update_status(self, latest: Package, package: Package) -> str:
517529
return "update-possible"
518530

519531
def get_installed_status(
520-
self, locked: Package, installed_repo: InstalledRepository
532+
self, locked: Package, installed_packages: list[Package]
521533
) -> str:
522-
for package in installed_repo.packages:
534+
for package in installed_packages:
523535
if locked.name == package.name:
524536
return "installed"
525537

src/poetry/installation/installer.py

+11-7
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ def _do_refresh(self) -> int:
193193
solver = Solver(
194194
self._package,
195195
self._pool,
196-
locked_repository,
197-
locked_repository,
196+
locked_repository.packages,
197+
locked_repository.packages,
198198
self._io,
199199
)
200200

@@ -213,7 +213,7 @@ def _do_refresh(self) -> int:
213213
def _do_install(self) -> int:
214214
from poetry.puzzle.solver import Solver
215215

216-
locked_repository = Repository()
216+
locked_repository = Repository("poetry-locked")
217217
if self._update:
218218
if self._locker.is_locked() and not self._lock:
219219
locked_repository = self._locker.locked_repository()
@@ -233,8 +233,8 @@ def _do_install(self) -> int:
233233
solver = Solver(
234234
self._package,
235235
self._pool,
236-
self._installed_repository,
237-
locked_repository,
236+
self._installed_repository.packages,
237+
locked_repository.packages,
238238
self._io,
239239
)
240240

@@ -291,15 +291,19 @@ def _do_install(self) -> int:
291291

292292
# Making a new repo containing the packages
293293
# newly resolved and the ones from the current lock file
294-
repo = Repository()
294+
repo = Repository("poetry-repo")
295295
for package in lockfile_repo.packages + locked_repository.packages:
296296
if not package.is_direct_origin() and not repo.has_package(package):
297297
repo.add_package(package)
298298

299299
pool.add_repository(repo)
300300

301301
solver = Solver(
302-
root, pool, self._installed_repository, locked_repository, NullIO()
302+
root,
303+
pool,
304+
self._installed_repository.packages,
305+
locked_repository.packages,
306+
NullIO(),
303307
)
304308
# Everything is resolved at this point, so we no longer need
305309
# to load deferred dependencies (i.e. VCS, URL and path dependencies)

src/poetry/packages/locker.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,10 @@ def locked_repository(self) -> Repository:
102102
from poetry.repositories import Repository
103103

104104
if not self.is_locked():
105-
return Repository()
105+
return Repository("poetry-locked")
106106

107107
lock_data = self.lock_data
108-
packages = Repository()
108+
packages = Repository("poetry-locked")
109109
locked_packages = cast("list[dict[str, Any]]", lock_data["package"])
110110

111111
if not locked_packages:

src/poetry/puzzle/provider.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
from poetry.core.version.markers import BaseMarker
5454

5555
from poetry.repositories import Pool
56-
from poetry.repositories import Repository
5756
from poetry.utils.env import Env
5857

5958

@@ -127,7 +126,7 @@ def __init__(
127126
pool: Pool,
128127
io: IO,
129128
env: Env | None = None,
130-
installed: Repository | None = None,
129+
installed: list[Package] | None = None,
131130
) -> None:
132131
self._package = package
133132
self._pool = pool
@@ -140,7 +139,7 @@ def __init__(
140139
self._deferred_cache: dict[Dependency, Package] = {}
141140
self._load_deferred = True
142141
self._source_root: Path | None = None
143-
self._installed = installed
142+
self._installed_packages = installed if installed is not None else []
144143

145144
@property
146145
def pool(self) -> Pool:
@@ -201,7 +200,7 @@ def search_for_installed_packages(
201200
This is useful when dealing with packages that are under development, not
202201
published on package sources and/or only available via system installations.
203202
"""
204-
if not self._installed:
203+
if not self._installed_packages:
205204
return []
206205

207206
logger.debug(
@@ -210,7 +209,7 @@ def search_for_installed_packages(
210209
)
211210
packages = [
212211
package
213-
for package in self._installed.packages
212+
for package in self._installed_packages
214213
if package.provides(specification)
215214
]
216215
logger.debug(

src/poetry/puzzle/solver.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929

3030
from poetry.puzzle.transaction import Transaction
3131
from poetry.repositories import Pool
32-
from poetry.repositories import Repository
3332
from poetry.utils.env import Env
3433

3534

@@ -38,15 +37,15 @@ def __init__(
3837
self,
3938
package: ProjectPackage,
4039
pool: Pool,
41-
installed: Repository,
42-
locked: Repository,
40+
installed: list[Package],
41+
locked: list[Package],
4342
io: IO,
4443
provider: Provider | None = None,
4544
) -> None:
4645
self._package = package
4746
self._pool = pool
48-
self._installed = installed
49-
self._locked = locked
47+
self._installed_packages = installed
48+
self._locked_packages = locked
5049
self._io = io
5150

5251
if provider is None:
@@ -85,9 +84,9 @@ def solve(self, use_latest: list[str] | None = None) -> Transaction:
8584
)
8685

8786
return Transaction(
88-
self._locked.packages,
87+
self._locked_packages,
8988
list(zip(packages, depths)),
90-
installed_packages=self._installed.packages,
89+
installed_packages=self._installed_packages,
9190
root_package=self._package,
9291
)
9392

@@ -128,7 +127,7 @@ def _solve(
128127
self._overrides.append(self._provider._overrides)
129128

130129
locked: dict[str, list[DependencyPackage]] = defaultdict(list)
131-
for package in self._locked.packages:
130+
for package in self._locked_packages:
132131
locked[package.name].append(
133132
DependencyPackage(package.to_dependency(), package)
134133
)

src/poetry/repositories/installed_repository.py

+3
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333

3434

3535
class InstalledRepository(Repository):
36+
def __init__(self) -> None:
37+
super().__init__("poetry-installed")
38+
3639
@classmethod
3740
def get_package_paths(cls, env: Env, name: str) -> set[Path]:
3841
"""

src/poetry/repositories/lockfile_repository.py

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ class LockfileRepository(Repository):
1515
but also by source type, url, etc.
1616
"""
1717

18+
def __init__(self) -> None:
19+
super().__init__("poetry-lockfile")
20+
1821
def has_package(self, package: Package) -> bool:
1922
return any(p == package for p in self.packages)
2023

0 commit comments

Comments
 (0)