@@ -909,7 +909,7 @@ def _find_all_candidates_static(
909909 link_evaluator_tuple , # type: LinkEvaluatorTuple
910910 project_name # type: str
911911 ):
912- # type: (...) -> List[InstallationCandidate]
912+ # type: (...) -> Tuple[ List[InstallationCandidate], Set[Link] ]
913913 """Find all available InstallationCandidate for project_name
914914
915915 This checks index_urls and find_links.
@@ -919,15 +919,13 @@ def _find_all_candidates_static(
919919 are accepted.
920920 """
921921
922- # Need to convert logged_links to normal set, so we can update it.
923922 package_finder_tuple = PackageFinderTuple (
924923 logged_links = set (package_finder_tuple .logged_links ),
925924 link_collector = package_finder_tuple .link_collector ,
926925 target_python = package_finder_tuple .target_python ,
927926 candidate_prefs = package_finder_tuple .candidate_prefs
928927 )
929928
930- # Add link_collector to the tuple
931929 collected_links = package_finder_tuple .link_collector .collect_links (
932930 project_name
933931 )
@@ -938,7 +936,6 @@ def _find_all_candidates_static(
938936 links = collected_links .find_links ,
939937 )
940938
941- # Only needs link collector from package_finder
942939 page_versions = []
943940 for project_url in collected_links .project_urls :
944941 package_links = PackageFinder ._process_project_url_static (
@@ -964,7 +961,10 @@ def _find_all_candidates_static(
964961 )
965962
966963 # This is an intentional priority ordering
967- return file_versions + find_links_versions + page_versions
964+ return (
965+ file_versions + find_links_versions + page_versions ,
966+ package_finder_tuple .logged_links
967+ )
968968
969969 def find_all_candidates (self , project_name ):
970970 # type: (str) -> List[InstallationCandidate]
@@ -980,12 +980,17 @@ def find_all_candidates(self, project_name):
980980
981981 package_finder_tuple = self .get_state_as_tuple (immutable = True )
982982 link_evaluator_tuple = link_evaluator .get_state_as_tuple ()
983- return self ._find_all_candidates_static (
983+
984+ (candidates , logged_links ) = self ._find_all_candidates_static (
984985 package_finder_tuple ,
985986 link_evaluator_tuple ,
986987 project_name
987988 )
988989
990+ self ._logged_links = logged_links
991+
992+ return candidates
993+
989994 @staticmethod
990995 def _make_candidate_evaluator_static (
991996 package_finder_tuple , # type: PackageFinderTuple
@@ -1030,20 +1035,20 @@ def _find_best_candidate_static(
10301035 specifier = None , # type: Optional[specifiers.BaseSpecifier]
10311036 hashes = None # type: Optional[Hashes]
10321037 ):
1033- # type: (...) -> BestCandidateResult
1038+ # type: (...) -> Tuple[ BestCandidateResult, Set[Link]]
10341039 candidate_evaluator = PackageFinder ._make_candidate_evaluator_static (
10351040 package_finder_tuple ,
10361041 project_name ,
10371042 specifier ,
10381043 hashes
10391044 )
1040- candidates = PackageFinder ._find_all_candidates_static (
1045+ ( candidates , logged_links ) = PackageFinder ._find_all_candidates_static (
10411046 package_finder_tuple ,
10421047 link_evaluator_tuple ,
10431048 project_name
10441049 )
10451050
1046- return candidate_evaluator .compute_best_candidate (candidates )
1051+ return ( candidate_evaluator .compute_best_candidate (candidates ), logged_links )
10471052
10481053 def find_best_candidate (
10491054 self ,
@@ -1066,14 +1071,18 @@ def find_best_candidate(
10661071 package_finder_tuple = self .get_state_as_tuple (immutable = True )
10671072 link_evaluator_tuple = link_evaluator .get_state_as_tuple ()
10681073
1069- return self ._find_best_candidate_static (
1074+ ( best_candidate , logged_links ) = self ._find_best_candidate_static (
10701075 package_finder_tuple ,
10711076 link_evaluator_tuple ,
10721077 project_name ,
10731078 specifier ,
10741079 hashes
10751080 )
10761081
1082+ self ._logged_links = logged_links
1083+
1084+ return best_candidate
1085+
10771086 def find_requirement (self , req , upgrade ):
10781087 # type: (InstallRequirement, bool) -> Optional[InstallationCandidate]
10791088 """Try to find a Link matching req
0 commit comments