12
12
from poetry .repositories import Pool
13
13
from poetry .repositories import Repository
14
14
from poetry .repositories .installed_repository import InstalledRepository
15
+ from poetry .repositories .lockfile_repository import LockfileRepository
15
16
from poetry .utils .extras import get_extra_package_names
16
17
from poetry .utils .helpers import canonicalize_name
17
18
from poetry .utils .helpers import pluralize
@@ -107,9 +108,7 @@ def run(self) -> int:
107
108
self ._write_lock = False
108
109
self ._execute_operations = False
109
110
110
- local_repo = Repository ()
111
-
112
- return self ._do_install (local_repo )
111
+ return self ._do_install ()
113
112
114
113
def dry_run (self , dry_run : bool = True ) -> Installer :
115
114
self ._dry_run = dry_run
@@ -204,14 +203,14 @@ def _do_refresh(self) -> int:
204
203
):
205
204
ops = solver .solve (use_latest = []).calculate_operations ()
206
205
207
- local_repo = Repository ()
208
- self ._populate_local_repo ( local_repo , ops )
206
+ lockfile_repo = LockfileRepository ()
207
+ self ._populate_lockfile_repo ( lockfile_repo , ops )
209
208
210
- self ._write_lock_file (local_repo , force = True )
209
+ self ._write_lock_file (lockfile_repo , force = True )
211
210
212
211
return 0
213
212
214
- def _do_install (self , local_repo : Repository ) -> int :
213
+ def _do_install (self ) -> int :
215
214
from poetry .puzzle .solver import Solver
216
215
217
216
locked_repository = Repository ()
@@ -266,10 +265,11 @@ def _do_install(self, local_repo: Repository) -> int:
266
265
# currently installed
267
266
ops = self ._get_operations_from_lock (locked_repository )
268
267
269
- self ._populate_local_repo (local_repo , ops )
268
+ lockfile_repo = LockfileRepository ()
269
+ self ._populate_lockfile_repo (lockfile_repo , ops )
270
270
271
271
if self ._update :
272
- self ._write_lock_file (local_repo )
272
+ self ._write_lock_file (lockfile_repo )
273
273
274
274
if self ._lock :
275
275
# If we are only in lock mode, no need to go any further
@@ -292,8 +292,8 @@ def _do_install(self, local_repo: Repository) -> int:
292
292
# Making a new repo containing the packages
293
293
# newly resolved and the ones from the current lock file
294
294
repo = Repository ()
295
- for package in local_repo .packages + locked_repository .packages :
296
- if not repo .has_package (package ):
295
+ for package in lockfile_repo .packages + locked_repository .packages :
296
+ if not package . is_direct_origin () and not repo .has_package (package ):
297
297
repo .add_package (package )
298
298
299
299
pool .add_repository (repo )
@@ -318,7 +318,7 @@ def _do_install(self, local_repo: Repository) -> int:
318
318
319
319
transaction = Transaction (
320
320
locked_repository .packages ,
321
- [(package , 0 ) for package in local_repo .packages ],
321
+ [(package , 0 ) for package in lockfile_repo .packages ],
322
322
installed_packages = self ._installed_repository .packages ,
323
323
root_package = root ,
324
324
)
@@ -332,12 +332,12 @@ def _do_install(self, local_repo: Repository) -> int:
332
332
# We need to filter operations so that packages
333
333
# not compatible with the current system,
334
334
# or optional and not requested, are dropped
335
- self ._filter_operations (ops , local_repo )
335
+ self ._filter_operations (ops , lockfile_repo )
336
336
337
337
# Execute operations
338
338
return self ._execute (ops )
339
339
340
- def _write_lock_file (self , repo : Repository , force : bool = False ) -> None :
340
+ def _write_lock_file (self , repo : LockfileRepository , force : bool = False ) -> None :
341
341
if self ._write_lock and (force or self ._update ):
342
342
updated_lock = self ._locker .set_lock_data (self ._package , repo .packages )
343
343
@@ -460,8 +460,8 @@ def _execute_uninstall(self, operation: Uninstall) -> None:
460
460
461
461
self ._installer .remove (operation .package )
462
462
463
- def _populate_local_repo (
464
- self , local_repo : Repository , ops : Sequence [Operation ]
463
+ def _populate_lockfile_repo (
464
+ self , repo : LockfileRepository , ops : Sequence [Operation ]
465
465
) -> None :
466
466
for op in ops :
467
467
if isinstance (op , Uninstall ):
@@ -471,8 +471,8 @@ def _populate_local_repo(
471
471
else :
472
472
package = op .package
473
473
474
- if not local_repo .has_package (package ):
475
- local_repo .add_package (package )
474
+ if not repo .has_package (package ):
475
+ repo .add_package (package )
476
476
477
477
def _get_operations_from_lock (
478
478
self , locked_repository : Repository
0 commit comments