22
22
from pip ._internal .utils .typing import MYPY_CHECK_RUNNING
23
23
from pip ._internal .utils .virtualenv import running_under_virtualenv
24
24
25
+ from .base import Constraint
25
26
from .candidates import (
26
27
AlreadyInstalledCandidate ,
27
28
EditableCandidate ,
@@ -152,6 +153,7 @@ def _iter_found_candidates(
152
153
self ,
153
154
ireqs , # type: Sequence[InstallRequirement]
154
155
specifier , # type: SpecifierSet
156
+ hashes , # type: Hashes
155
157
):
156
158
# type: (...) -> Iterable[Candidate]
157
159
if not ireqs :
@@ -164,7 +166,6 @@ def _iter_found_candidates(
164
166
template = ireqs [0 ]
165
167
name = canonicalize_name (template .req .name )
166
168
167
- hashes = Hashes ()
168
169
extras = frozenset () # type: FrozenSet[str]
169
170
for ireq in ireqs :
170
171
specifier &= ireq .req .specifier
@@ -218,7 +219,7 @@ def _iter_found_candidates(
218
219
return six .itervalues (candidates )
219
220
220
221
def find_candidates (self , requirements , constraint ):
221
- # type: (Sequence[Requirement], SpecifierSet ) -> Iterable[Candidate]
222
+ # type: (Sequence[Requirement], Constraint ) -> Iterable[Candidate]
222
223
explicit_candidates = set () # type: Set[Candidate]
223
224
ireqs = [] # type: List[InstallRequirement]
224
225
for req in requirements :
@@ -231,7 +232,11 @@ def find_candidates(self, requirements, constraint):
231
232
# If none of the requirements want an explicit candidate, we can ask
232
233
# the finder for candidates.
233
234
if not explicit_candidates :
234
- return self ._iter_found_candidates (ireqs , constraint )
235
+ return self ._iter_found_candidates (
236
+ ireqs ,
237
+ constraint .specifier ,
238
+ constraint .hashes ,
239
+ )
235
240
236
241
if constraint :
237
242
name = explicit_candidates .pop ().name
0 commit comments