@@ -488,28 +488,34 @@ def _get_comp_key(self, dependency: Dependency) -> CompKey:
488
488
https://github.com/python-poetry/poetry/pull/8255#issuecomment-1657198242
489
489
for more details).
490
490
"""
491
+ preference = Preference .DEFAULT
492
+
491
493
# Direct origin dependencies must be handled first: we don't want to resolve
492
494
# a regular dependency for some package only to find later that we had a
493
495
# direct-origin dependency.
494
496
if dependency .is_direct_origin ():
495
- return Preference .DIRECT_ORIGIN , 0 , False , 0
497
+ preference = Preference .DIRECT_ORIGIN
496
498
499
+ packages : list [DependencyPackage ] = []
497
500
use_latest = dependency .name in self ._provider .use_latest
498
501
if not use_latest :
499
502
locked = self ._provider .get_locked (dependency )
500
503
if locked :
501
- return Preference .LOCKED , 0 , False , 0
504
+ if preference == Preference .DEFAULT :
505
+ preference = Preference .LOCKED
506
+ packages = [locked ]
502
507
503
- packages = self ._dependency_cache .search_for (
504
- dependency , self ._solution .decision_level
505
- )
508
+ if not packages :
509
+ packages = self ._dependency_cache .search_for (
510
+ dependency , self ._solution .decision_level
511
+ )
506
512
num_packages = len (packages )
507
513
if packages :
508
514
package = packages [0 ].package
509
515
if package .is_root ():
510
516
relevant_dependencies = package .all_requires
511
517
else :
512
- if not package .is_direct_origin ():
518
+ if preference != Preference . LOCKED and not package .is_direct_origin ():
513
519
# We have to get the package from the pool,
514
520
# otherwise `requires` will be empty.
515
521
#
@@ -542,12 +548,11 @@ def _get_comp_key(self, dependency: Dependency) -> CompKey:
542
548
has_deps = False
543
549
num_deps_upper_bound = 0
544
550
545
- if num_packages < 2 :
546
- preference = Preference .NO_CHOICE
547
- elif use_latest :
548
- preference = Preference .USE_LATEST
549
- else :
550
- preference = Preference .DEFAULT
551
+ if preference == Preference .DEFAULT :
552
+ if num_packages < 2 :
553
+ preference = Preference .NO_CHOICE
554
+ elif use_latest :
555
+ preference = Preference .USE_LATEST
551
556
return preference , - num_deps_upper_bound , not has_deps , - num_packages
552
557
553
558
def _choose_next (self , unsatisfied : list [Dependency ]) -> Dependency :
0 commit comments