From 7db57478a28ee88d1e168077853d879a2154435a Mon Sep 17 00:00:00 2001 From: Chris Hunt Date: Thu, 5 Dec 2019 20:26:53 -0500 Subject: [PATCH 1/2] Construct Downloader outside RequirementPreparer Reduces RequirementPreparer responsibilities, and will let us get rid of some constructor arguments. --- src/pip/_internal/cli/req_command.py | 5 +++++ src/pip/_internal/operations/prepare.py | 5 +++-- tests/unit/test_operations_prepare.py | 2 +- tests/unit/test_req.py | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pip/_internal/cli/req_command.py b/src/pip/_internal/cli/req_command.py index 5f0752ff40a..39409ca0689 100644 --- a/src/pip/_internal/cli/req_command.py +++ b/src/pip/_internal/cli/req_command.py @@ -18,6 +18,7 @@ from pip._internal.index.package_finder import PackageFinder from pip._internal.legacy_resolve import Resolver from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.network.download import Downloader from pip._internal.network.session import PipSession from pip._internal.operations.prepare import RequirementPreparer from pip._internal.req.constructors import ( @@ -162,8 +163,11 @@ def make_requirement_preparer( """ Create a RequirementPreparer instance for the given parameters. """ + downloader = Downloader(session, progress_bar=options.progress_bar) + temp_build_dir_path = temp_build_dir.path assert temp_build_dir_path is not None + return RequirementPreparer( build_dir=temp_build_dir_path, src_dir=options.src_dir, @@ -173,6 +177,7 @@ def make_requirement_preparer( build_isolation=options.build_isolation, req_tracker=req_tracker, session=session, + downloader=downloader, finder=finder, require_hashes=options.require_hashes, use_user_site=use_user_site, diff --git a/src/pip/_internal/operations/prepare.py b/src/pip/_internal/operations/prepare.py index 6a7ae749bc4..1709d60f8f6 100644 --- a/src/pip/_internal/operations/prepare.py +++ b/src/pip/_internal/operations/prepare.py @@ -26,7 +26,6 @@ PreviousBuildDirError, VcsHashUnsupported, ) -from pip._internal.network.download import Downloader from pip._internal.utils.compat import expanduser from pip._internal.utils.filesystem import copy2_fixed from pip._internal.utils.hashes import MissingHashes @@ -56,6 +55,7 @@ from pip._internal.distributions import AbstractDistribution from pip._internal.index.package_finder import PackageFinder from pip._internal.models.link import Link + from pip._internal.network.download import Downloader from pip._internal.network.session import PipSession from pip._internal.req.req_install import InstallRequirement from pip._internal.req.req_tracker import RequirementTracker @@ -363,6 +363,7 @@ def __init__( build_isolation, # type: bool req_tracker, # type: RequirementTracker session, # type: PipSession + downloader, # type: Downloader finder, # type: PackageFinder require_hashes, # type: bool use_user_site, # type: bool @@ -373,7 +374,7 @@ def __init__( self.src_dir = src_dir self.build_dir = build_dir self.req_tracker = req_tracker - self.downloader = Downloader(session, progress_bar) + self.downloader = downloader self.finder = finder # Where still-packed archives should be written to. If None, they are diff --git a/tests/unit/test_operations_prepare.py b/tests/unit/test_operations_prepare.py index 7845e6ce116..adec8e020d7 100644 --- a/tests/unit/test_operations_prepare.py +++ b/tests/unit/test_operations_prepare.py @@ -9,9 +9,9 @@ from pip._internal.exceptions import HashMismatch from pip._internal.models.link import Link +from pip._internal.network.download import Downloader from pip._internal.network.session import PipSession from pip._internal.operations.prepare import ( - Downloader, _copy_source_tree, _download_http_url, unpack_file_url, diff --git a/tests/unit/test_req.py b/tests/unit/test_req.py index 361e2893e2f..2f234a8d5e3 100644 --- a/tests/unit/test_req.py +++ b/tests/unit/test_req.py @@ -19,6 +19,7 @@ PreviousBuildDirError, ) from pip._internal.legacy_resolve import Resolver +from pip._internal.network.download import Downloader from pip._internal.network.session import PipSession from pip._internal.operations.prepare import RequirementPreparer from pip._internal.req import InstallRequirement, RequirementSet @@ -81,6 +82,7 @@ def _basic_resolver(self, finder, require_hashes=False): build_isolation=True, req_tracker=tracker, session=PipSession(), + downloader=Downloader(PipSession(), progress_bar="on"), finder=finder, require_hashes=require_hashes, use_user_site=False, From 24d2f1e719499f7e53e29bd12c6b8f3004bf9268 Mon Sep 17 00:00:00 2001 From: Chris Hunt Date: Thu, 5 Dec 2019 20:27:38 -0500 Subject: [PATCH 2/2] Remove unused arguments --- src/pip/_internal/cli/req_command.py | 2 -- src/pip/_internal/operations/prepare.py | 3 --- tests/unit/test_req.py | 2 -- 3 files changed, 7 deletions(-) diff --git a/src/pip/_internal/cli/req_command.py b/src/pip/_internal/cli/req_command.py index 39409ca0689..e5d1e8b2b0f 100644 --- a/src/pip/_internal/cli/req_command.py +++ b/src/pip/_internal/cli/req_command.py @@ -173,10 +173,8 @@ def make_requirement_preparer( src_dir=options.src_dir, download_dir=download_dir, wheel_download_dir=wheel_download_dir, - progress_bar=options.progress_bar, build_isolation=options.build_isolation, req_tracker=req_tracker, - session=session, downloader=downloader, finder=finder, require_hashes=options.require_hashes, diff --git a/src/pip/_internal/operations/prepare.py b/src/pip/_internal/operations/prepare.py index 1709d60f8f6..8dff48914e3 100644 --- a/src/pip/_internal/operations/prepare.py +++ b/src/pip/_internal/operations/prepare.py @@ -56,7 +56,6 @@ from pip._internal.index.package_finder import PackageFinder from pip._internal.models.link import Link from pip._internal.network.download import Downloader - from pip._internal.network.session import PipSession from pip._internal.req.req_install import InstallRequirement from pip._internal.req.req_tracker import RequirementTracker from pip._internal.utils.hashes import Hashes @@ -359,10 +358,8 @@ def __init__( download_dir, # type: Optional[str] src_dir, # type: str wheel_download_dir, # type: Optional[str] - progress_bar, # type: str build_isolation, # type: bool req_tracker, # type: RequirementTracker - session, # type: PipSession downloader, # type: Downloader finder, # type: PackageFinder require_hashes, # type: bool diff --git a/tests/unit/test_req.py b/tests/unit/test_req.py index 2f234a8d5e3..0d5790831c6 100644 --- a/tests/unit/test_req.py +++ b/tests/unit/test_req.py @@ -78,10 +78,8 @@ def _basic_resolver(self, finder, require_hashes=False): src_dir=os.path.join(self.tempdir, 'src'), download_dir=None, wheel_download_dir=None, - progress_bar="on", build_isolation=True, req_tracker=tracker, - session=PipSession(), downloader=Downloader(PipSession(), progress_bar="on"), finder=finder, require_hashes=require_hashes,