Skip to content

Commit 76d2923

Browse files
committed
Only attempt to fetch eggs for unsatisfied requirements.
Ref #4998
1 parent 486081e commit 76d2923

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

newsfragments/4998.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Only attempt to fetch eggs for unsatisfied requirements.

setuptools/installer.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import annotations
22

33
import glob
4+
import itertools
45
import os
56
import subprocess
67
import sys
@@ -35,12 +36,20 @@ def fetch_build_egg(dist, req):
3536
return _fetch_build_egg_no_warn(dist, req)
3637

3738

39+
def _present(req):
40+
return any(_dist_matches_req(dist, req) for dist in metadata.distributions())
41+
42+
3843
def _fetch_build_eggs(dist, requires: _reqs._StrOrIter) -> list[metadata.Distribution]:
3944
_DeprecatedInstaller.emit(stacklevel=3)
4045
_warn_wheel_not_available(dist)
4146

47+
parsed_reqs = _reqs.parse(requires)
48+
49+
missing_reqs = itertools.filterfalse(_present, parsed_reqs)
50+
4251
needed_reqs = (
43-
req for req in _reqs.parse(requires) if not req.marker or req.marker.evaluate()
52+
req for req in missing_reqs if not req.marker or req.marker.evaluate()
4453
)
4554
resolved_dists = [_fetch_build_egg_no_warn(dist, req) for req in needed_reqs]
4655
for dist in resolved_dists:

0 commit comments

Comments
 (0)