@@ -279,6 +279,7 @@ def __init__(self, out: Formatter, err: Formatter, options):
279279
280280 self .nodes : set [GraphNode ] = set ()
281281 self .starting_nodes : set [GraphNode ] = set ()
282+ self .targets : tuple [package ] = ()
282283
283284 def mk_fake_pkg (self , pkg : package , keywords : set [str ]):
284285 return FakePkg (
@@ -295,6 +296,9 @@ def find_best_match(self, restrict, pkgset: list[package]) -> package:
295296 * restrict ,
296297 packages .PackageRestriction ("properties" , values .ContainmentMatch ("live" , negate = True )),
297298 )
299+ # prefer using user selected targets
300+ if intersect := tuple (filter (restrict .match , self .targets )):
301+ return max (intersect )
298302 # prefer using already selected packages in graph
299303 all_pkgs = (pkg for node in self .nodes for pkg , _ in node .pkgs )
300304 if intersect := tuple (filter (restrict .match , all_pkgs )):
@@ -345,6 +349,7 @@ def _find_dependencies(self, pkg: package, keywords: set[str]):
345349 yield from results .items ()
346350
347351 def build_full_graph (self , targets : list [package ]):
352+ self .targets = tuple (targets )
348353 check_nodes = [(pkg , set ()) for pkg in targets ]
349354
350355 vertices : dict [package , GraphNode ] = {}
0 commit comments