Skip to content

Commit

Permalink
[fast-deps] Check download directory before making requests
Browse files Browse the repository at this point in the history
  • Loading branch information
McSinyx committed Sep 17, 2020
1 parent 53efda7 commit c947d00
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
3 changes: 3 additions & 0 deletions news/8804.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Check the download directory for existing wheels to possibly avoid
fetching metadata when the ``fast-deps`` feature is used with
``pip wheel`` and ``pip download``.
29 changes: 15 additions & 14 deletions src/pip/_internal/operations/prepare.py
Original file line number Diff line number Diff line change
Expand Up @@ -486,26 +486,27 @@ def prepare_linked_requirement(self, req, parallel_builds=False):
link = req.link
self._log_preparing_link(req)
with indent_log():
wheel_dist = self._fetch_metadata_using_lazy_wheel(link)
if wheel_dist is not None:
req.needs_more_preparation = True
return wheel_dist
download_dir = self._get_download_dir(req.link)
if download_dir is not None and link.is_wheel:
hashes = self._get_linked_req_hashes(req)
file_path = _check_download_dir(req.link, download_dir, hashes)
if file_path is not None:
self._downloaded[req.link.url] = file_path, None
else:
file_path = None

if file_path is None:
wheel_dist = self._fetch_metadata_using_lazy_wheel(link)
if wheel_dist is not None:
req.needs_more_preparation = True
return wheel_dist
return self._prepare_linked_requirement(req, parallel_builds)

def prepare_linked_requirements_more(self, reqs, parallel_builds=False):
# type: (Iterable[InstallRequirement], bool) -> None
"""Prepare a linked requirement more, if needed."""
reqs = [req for req in reqs if req.needs_more_preparation]
links = [] # type: List[Link]
for req in reqs:
download_dir = self._get_download_dir(req.link)
if download_dir is not None:
hashes = self._get_linked_req_hashes(req)
file_path = _check_download_dir(req.link, download_dir, hashes)
if download_dir is None or file_path is None:
links.append(req.link)
else:
self._downloaded[req.link.url] = file_path, None
links = [req.link for req in reqs]

# Let's download to a temporary directory.
tmpdir = TempDirectory(kind="unpack", globally_managed=True).path
Expand Down

0 comments on commit c947d00

Please sign in to comment.