Skip to content

Commit c596437

Browse files
committed
Update self._logged_links after calling static function
1 parent 79b29f2 commit c596437

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

src/pip/_internal/index/package_finder.py

+19-10
Original file line numberDiff line numberDiff line change
@@ -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

tests/unit/test_resolution_legacy_resolver.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ class TestYankedWarning:
180180
"""
181181
def _make_test_resolver(self, monkeypatch, mock_candidates):
182182
def _find_candidates(package_finder, link_evaluator, project_name):
183-
return mock_candidates
183+
return (mock_candidates, [])
184184

185185
finder = make_test_finder()
186186
monkeypatch.setattr(

0 commit comments

Comments
 (0)