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