mirror of https://github.com/pypa/pip
Add project_name to CandidateEvaluator.
This commit is contained in:
parent
2c36f4d8eb
commit
0d96a49cf7
|
@ -189,7 +189,9 @@ class ListCommand(Command):
|
|||
all_candidates = [candidate for candidate in all_candidates
|
||||
if not candidate.version.is_prerelease]
|
||||
|
||||
evaluator = finder.make_candidate_evaluator()
|
||||
evaluator = finder.make_candidate_evaluator(
|
||||
project_name=dist.project_name,
|
||||
)
|
||||
best_candidate = evaluator.get_best_candidate(all_candidates)
|
||||
if best_candidate is None:
|
||||
continue
|
||||
|
|
|
@ -510,6 +510,7 @@ class CandidateEvaluator(object):
|
|||
@classmethod
|
||||
def create(
|
||||
cls,
|
||||
project_name, # type: str
|
||||
target_python=None, # type: Optional[TargetPython]
|
||||
prefer_binary=False, # type: bool
|
||||
allow_all_prereleases=False, # type: bool
|
||||
|
@ -529,6 +530,7 @@ class CandidateEvaluator(object):
|
|||
supported_tags = target_python.get_tags()
|
||||
|
||||
return cls(
|
||||
project_name=project_name,
|
||||
supported_tags=supported_tags,
|
||||
prefer_binary=prefer_binary,
|
||||
allow_all_prereleases=allow_all_prereleases,
|
||||
|
@ -537,6 +539,7 @@ class CandidateEvaluator(object):
|
|||
|
||||
def __init__(
|
||||
self,
|
||||
project_name, # type: str
|
||||
supported_tags, # type: List[Pep425Tag]
|
||||
prefer_binary=False, # type: bool
|
||||
allow_all_prereleases=False, # type: bool
|
||||
|
@ -550,6 +553,7 @@ class CandidateEvaluator(object):
|
|||
self._allow_all_prereleases = allow_all_prereleases
|
||||
self._hashes = hashes
|
||||
self._prefer_binary = prefer_binary
|
||||
self._project_name = project_name
|
||||
self._supported_tags = supported_tags
|
||||
|
||||
def get_applicable_candidates(
|
||||
|
@ -1105,12 +1109,17 @@ class PackageFinder(object):
|
|||
# This is an intentional priority ordering
|
||||
return file_versions + find_links_versions + page_versions
|
||||
|
||||
def make_candidate_evaluator(self, hashes=None):
|
||||
# type: (Optional[Hashes]) -> CandidateEvaluator
|
||||
def make_candidate_evaluator(
|
||||
self,
|
||||
project_name, # type: str
|
||||
hashes=None, # type: Optional[Hashes]
|
||||
):
|
||||
# type: (...) -> CandidateEvaluator
|
||||
"""Create a CandidateEvaluator object to use.
|
||||
"""
|
||||
candidate_prefs = self._candidate_prefs
|
||||
return CandidateEvaluator.create(
|
||||
project_name=project_name,
|
||||
target_python=self._target_python,
|
||||
prefer_binary=candidate_prefs.prefer_binary,
|
||||
allow_all_prereleases=candidate_prefs.allow_all_prereleases,
|
||||
|
@ -1133,7 +1142,10 @@ class PackageFinder(object):
|
|||
:return: A `FoundCandidates` instance.
|
||||
"""
|
||||
candidates = self.find_all_candidates(project_name)
|
||||
candidate_evaluator = self.make_candidate_evaluator(hashes=hashes)
|
||||
candidate_evaluator = self.make_candidate_evaluator(
|
||||
project_name=project_name,
|
||||
hashes=hashes,
|
||||
)
|
||||
return candidate_evaluator.make_found_candidates(
|
||||
candidates, specifier=specifier,
|
||||
)
|
||||
|
|
|
@ -216,7 +216,7 @@ class TestWheel:
|
|||
('pyT', 'TEST', 'any'),
|
||||
('pyT', 'none', 'any'),
|
||||
]
|
||||
evaluator = CandidateEvaluator(supported_tags=valid_tags)
|
||||
evaluator = CandidateEvaluator('my-project', supported_tags=valid_tags)
|
||||
sort_key = evaluator._sort_key
|
||||
results = sorted(links, key=sort_key, reverse=True)
|
||||
results2 = sorted(reversed(links), key=sort_key, reverse=True)
|
||||
|
@ -242,7 +242,7 @@ class TestWheel:
|
|||
Link("simplewheel-1.0-py2.py3-none-any.whl"),
|
||||
),
|
||||
]
|
||||
candidate_evaluator = CandidateEvaluator.create()
|
||||
candidate_evaluator = CandidateEvaluator.create('my-project')
|
||||
sort_key = candidate_evaluator._sort_key
|
||||
results = sorted(links, key=sort_key, reverse=True)
|
||||
results2 = sorted(reversed(links), key=sort_key, reverse=True)
|
||||
|
|
|
@ -219,6 +219,7 @@ class TestCandidateEvaluator:
|
|||
target_python = TargetPython()
|
||||
target_python._valid_tags = [('py36', 'none', 'any')]
|
||||
evaluator = CandidateEvaluator.create(
|
||||
project_name='my-project',
|
||||
target_python=target_python,
|
||||
allow_all_prereleases=allow_all_prereleases,
|
||||
prefer_binary=prefer_binary,
|
||||
|
@ -231,7 +232,7 @@ class TestCandidateEvaluator:
|
|||
"""
|
||||
Test passing target_python=None.
|
||||
"""
|
||||
evaluator = CandidateEvaluator.create()
|
||||
evaluator = CandidateEvaluator.create('my-project')
|
||||
expected_tags = get_supported()
|
||||
assert evaluator._supported_tags == expected_tags
|
||||
|
||||
|
@ -241,7 +242,7 @@ class TestCandidateEvaluator:
|
|||
candidates = [
|
||||
make_mock_candidate(version) for version in versions
|
||||
]
|
||||
evaluator = CandidateEvaluator.create()
|
||||
evaluator = CandidateEvaluator.create('my-project')
|
||||
actual = evaluator.get_applicable_candidates(
|
||||
candidates, specifier=specifier,
|
||||
)
|
||||
|
@ -275,7 +276,7 @@ class TestCandidateEvaluator:
|
|||
'sha256': [64 * 'b'],
|
||||
}
|
||||
hashes = Hashes(hashes_data)
|
||||
evaluator = CandidateEvaluator.create(hashes=hashes)
|
||||
evaluator = CandidateEvaluator.create('my-project', hashes=hashes)
|
||||
actual = evaluator.get_applicable_candidates(
|
||||
candidates, specifier=specifier,
|
||||
)
|
||||
|
@ -288,7 +289,7 @@ class TestCandidateEvaluator:
|
|||
candidates = [
|
||||
make_mock_candidate(version) for version in versions
|
||||
]
|
||||
evaluator = CandidateEvaluator.create()
|
||||
evaluator = CandidateEvaluator.create('my-project')
|
||||
found_candidates = evaluator.make_found_candidates(
|
||||
candidates, specifier=specifier,
|
||||
)
|
||||
|
@ -319,7 +320,7 @@ class TestCandidateEvaluator:
|
|||
'sha256': [64 * 'a'],
|
||||
}
|
||||
hashes = Hashes(hashes_data)
|
||||
evaluator = CandidateEvaluator.create(hashes=hashes)
|
||||
evaluator = CandidateEvaluator.create('my-project', hashes=hashes)
|
||||
sort_value = evaluator._sort_key(candidate)
|
||||
# The hash is reflected in the first element of the tuple.
|
||||
actual = sort_value[0]
|
||||
|
@ -336,7 +337,7 @@ class TestCandidateEvaluator:
|
|||
Test the effect of is_yanked on _sort_key()'s return value.
|
||||
"""
|
||||
candidate = make_mock_candidate('1.0', yanked_reason=yanked_reason)
|
||||
evaluator = CandidateEvaluator.create()
|
||||
evaluator = CandidateEvaluator.create('my-project')
|
||||
sort_value = evaluator._sort_key(candidate)
|
||||
# Yanked / non-yanked is reflected in the second element of the tuple.
|
||||
actual = sort_value[1]
|
||||
|
@ -346,7 +347,7 @@ class TestCandidateEvaluator:
|
|||
"""
|
||||
Test passing an empty list.
|
||||
"""
|
||||
evaluator = CandidateEvaluator.create()
|
||||
evaluator = CandidateEvaluator.create('my-project')
|
||||
actual = evaluator.get_best_candidate([])
|
||||
assert actual is None
|
||||
|
||||
|
@ -361,7 +362,7 @@ class TestCandidateEvaluator:
|
|||
make_mock_candidate('2.0', yanked_reason='bad metadata #2'),
|
||||
]
|
||||
expected_best = candidates[1]
|
||||
evaluator = CandidateEvaluator.create()
|
||||
evaluator = CandidateEvaluator.create('my-project')
|
||||
actual = evaluator.get_best_candidate(candidates)
|
||||
assert actual is expected_best
|
||||
assert str(actual.version) == '3.0'
|
||||
|
@ -392,7 +393,7 @@ class TestCandidateEvaluator:
|
|||
candidates = [
|
||||
make_mock_candidate('1.0', yanked_reason=yanked_reason),
|
||||
]
|
||||
evaluator = CandidateEvaluator.create()
|
||||
evaluator = CandidateEvaluator.create('my-project')
|
||||
actual = evaluator.get_best_candidate(candidates)
|
||||
assert str(actual.version) == '1.0'
|
||||
|
||||
|
@ -419,7 +420,7 @@ class TestCandidateEvaluator:
|
|||
make_mock_candidate('1.0'),
|
||||
]
|
||||
expected_best = candidates[1]
|
||||
evaluator = CandidateEvaluator.create()
|
||||
evaluator = CandidateEvaluator.create('my-project')
|
||||
actual = evaluator.get_best_candidate(candidates)
|
||||
assert actual is expected_best
|
||||
assert str(actual.version) == '2.0'
|
||||
|
@ -696,10 +697,13 @@ class TestPackageFinder:
|
|||
|
||||
# Pass hashes to check that _hashes is set.
|
||||
hashes = Hashes({'sha256': [64 * 'a']})
|
||||
evaluator = finder.make_candidate_evaluator(hashes=hashes)
|
||||
evaluator = finder.make_candidate_evaluator(
|
||||
'my-project', hashes=hashes,
|
||||
)
|
||||
assert evaluator._allow_all_prereleases == allow_all_prereleases
|
||||
assert evaluator._hashes == hashes
|
||||
assert evaluator._prefer_binary == prefer_binary
|
||||
assert evaluator._project_name == 'my-project'
|
||||
assert evaluator._supported_tags == [('py36', 'none', 'any')]
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue