Skip to content

Commit bde44f9

Browse files
committed
[fast-deps] Check download directory before making requests
1 parent ffbe932 commit bde44f9

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

news/8804.feature

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Check the download directory for existing wheels to possibly avoid
2+
fetching metadata when the ``fast-deps`` feature is used with
3+
``pip wheel`` and ``pip download``.

src/pip/_internal/operations/prepare.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -486,26 +486,27 @@ def prepare_linked_requirement(self, req, parallel_builds=False):
486486
link = req.link
487487
self._log_preparing_link(req)
488488
with indent_log():
489-
wheel_dist = self._fetch_metadata_using_lazy_wheel(link)
490-
if wheel_dist is not None:
491-
req.needs_more_preparation = True
492-
return wheel_dist
489+
download_dir = self._get_download_dir(req.link)
490+
if download_dir is not None and link.is_wheel:
491+
hashes = self._get_linked_req_hashes(req)
492+
file_path = _check_download_dir(req.link, download_dir, hashes)
493+
if file_path is not None:
494+
self._downloaded[req.link.url] = file_path, None
495+
else:
496+
file_path = None
497+
498+
if file_path is None:
499+
wheel_dist = self._fetch_metadata_using_lazy_wheel(link)
500+
if wheel_dist is not None:
501+
req.needs_more_preparation = True
502+
return wheel_dist
493503
return self._prepare_linked_requirement(req, parallel_builds)
494504

495505
def prepare_linked_requirements_more(self, reqs, parallel_builds=False):
496506
# type: (Iterable[InstallRequirement], bool) -> None
497507
"""Prepare a linked requirement more, if needed."""
498508
reqs = [req for req in reqs if req.needs_more_preparation]
499-
links = [] # type: List[Link]
500-
for req in reqs:
501-
download_dir = self._get_download_dir(req.link)
502-
if download_dir is not None:
503-
hashes = self._get_linked_req_hashes(req)
504-
file_path = _check_download_dir(req.link, download_dir, hashes)
505-
if download_dir is None or file_path is None:
506-
links.append(req.link)
507-
else:
508-
self._downloaded[req.link.url] = file_path, None
509+
links = [req.link for req in reqs]
509510

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

0 commit comments

Comments
 (0)