From 550ae907bd711c308c040efd2d50a033f7d41c31 Mon Sep 17 00:00:00 2001 From: Chris Hunt Date: Wed, 5 Feb 2020 21:21:52 -0500 Subject: [PATCH] Parameterize check_supported_wheels to Resolver.resolve This reduces our dependence on the input RequirementSet. --- src/pip/_internal/commands/download.py | 4 +++- src/pip/_internal/commands/install.py | 4 +++- src/pip/_internal/commands/wheel.py | 4 +++- src/pip/_internal/legacy_resolve.py | 5 ++--- tests/unit/test_req.py | 10 ++++++++-- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/pip/_internal/commands/download.py b/src/pip/_internal/commands/download.py index 13e6a24e9..37ea918d7 100644 --- a/src/pip/_internal/commands/download.py +++ b/src/pip/_internal/commands/download.py @@ -132,7 +132,9 @@ class DownloadCommand(RequirementCommand): self.trace_basic_info(finder) - requirement_set = resolver.resolve(requirement_set) + requirement_set = resolver.resolve( + requirement_set, requirement_set.check_supported_wheels + ) downloaded = ' '.join([ req.name for req in requirement_set.successfully_downloaded diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py index 5c4966608..c4cad9139 100644 --- a/src/pip/_internal/commands/install.py +++ b/src/pip/_internal/commands/install.py @@ -328,7 +328,9 @@ class InstallCommand(RequirementCommand): self.trace_basic_info(finder) - requirement_set = resolver.resolve(requirement_set) + requirement_set = resolver.resolve( + requirement_set, requirement_set.check_supported_wheels + ) try: pip_req = requirement_set.get_requirement("pip") diff --git a/src/pip/_internal/commands/wheel.py b/src/pip/_internal/commands/wheel.py index 8e64c97f1..0f1474bf5 100644 --- a/src/pip/_internal/commands/wheel.py +++ b/src/pip/_internal/commands/wheel.py @@ -158,7 +158,9 @@ class WheelCommand(RequirementCommand): self.trace_basic_info(finder) - requirement_set = resolver.resolve(requirement_set) + requirement_set = resolver.resolve( + requirement_set, requirement_set.check_supported_wheels + ) reqs_to_build = [ r for r in requirement_set.requirements.values() diff --git a/src/pip/_internal/legacy_resolve.py b/src/pip/_internal/legacy_resolve.py index cfd538a01..3e53c3af9 100644 --- a/src/pip/_internal/legacy_resolve.py +++ b/src/pip/_internal/legacy_resolve.py @@ -147,8 +147,8 @@ class Resolver(object): self._discovered_dependencies = \ defaultdict(list) # type: DiscoveredDependencies - def resolve(self, requirement_set): - # type: (RequirementSet) -> RequirementSet + def resolve(self, requirement_set, check_supported_wheels): + # type: (RequirementSet, bool) -> RequirementSet """Resolve what operations need to be done As a side-effect of this method, the packages (and their dependencies) @@ -163,7 +163,6 @@ class Resolver(object): requirement_set.unnamed_requirements + list(requirement_set.requirements.values()) ) - check_supported_wheels = requirement_set.check_supported_wheels requirement_set = RequirementSet( check_supported_wheels=check_supported_wheels ) diff --git a/tests/unit/test_req.py b/tests/unit/test_req.py index ee0b6a5d6..9392096fd 100644 --- a/tests/unit/test_req.py +++ b/tests/unit/test_req.py @@ -113,6 +113,7 @@ class TestRequirementSet(object): (req, build_dir.replace('\\', '\\\\')), resolver.resolve, reqset, + True, ) # TODO: Update test when Python 2.7 is dropped. @@ -129,7 +130,7 @@ class TestRequirementSet(object): reqset.add_requirement(req) finder = make_test_finder(find_links=[data.find_links]) with self._basic_resolver(finder) as resolver: - reqset = resolver.resolve(reqset) + reqset = resolver.resolve(reqset, True) # This is hacky but does test both case in py2 and py3 if sys.version_info[:2] == (2, 7): assert reqset.has_requirement('simple') @@ -155,7 +156,8 @@ class TestRequirementSet(object): r' simple==1.0 --hash=sha256:393043e672415891885c9a2a0929b1' r'af95fb866d6ca016b42d2e6ce53619b653$', resolver.resolve, - reqset + reqset, + True, ) def test_missing_hash_with_require_hashes_in_reqs_file(self, data, tmpdir): @@ -210,6 +212,7 @@ class TestRequirementSet(object): r"\(from -r file \(line 2\)\)".format(sep=sep), resolver.resolve, reqset, + True, ) def test_unpinned_hash_checking(self, data): @@ -238,6 +241,7 @@ class TestRequirementSet(object): r' simple2>1.0 .* \(from -r file \(line 2\)\)', resolver.resolve, reqset, + True, ) def test_hash_mismatch(self, data): @@ -259,6 +263,7 @@ class TestRequirementSet(object): r'866d6ca016b42d2e6ce53619b653$', resolver.resolve, reqset, + True, ) def test_unhashed_deps_on_require_hashes(self, data): @@ -281,6 +286,7 @@ class TestRequirementSet(object): r' TopoRequires from .*$', resolver.resolve, reqset, + True, ) def test_hashed_deps_on_require_hashes(self):