Skip to content

Commit d76bf80

Browse files
add and implement --avoid-wheel-downloads option to download
1 parent ed39792 commit d76bf80

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

src/pip/_internal/cli/req_command.py

+2
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ def make_resolver(
308308
use_user_site: bool = False,
309309
ignore_installed: bool = True,
310310
ignore_requires_python: bool = False,
311+
avoid_wheel_downloads: bool = False,
311312
force_reinstall: bool = False,
312313
upgrade_strategy: str = "to-satisfy-only",
313314
use_pep517: Optional[bool] = None,
@@ -337,6 +338,7 @@ def make_resolver(
337338
ignore_dependencies=options.ignore_dependencies,
338339
ignore_installed=ignore_installed,
339340
ignore_requires_python=ignore_requires_python,
341+
avoid_wheel_downloads=avoid_wheel_downloads,
340342
force_reinstall=force_reinstall,
341343
upgrade_strategy=upgrade_strategy,
342344
py_version_info=py_version_info,

src/pip/_internal/commands/download.py

+10
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,15 @@ def add_options(self) -> None:
7171
help=("Print URLs of any downloaded distributions to this file."),
7272
)
7373

74+
self.cmd_opts.add_option(
75+
'--avoid-wheel-downloads',
76+
dest='avoid_wheel_downloads',
77+
default=False,
78+
action='store_true',
79+
help=("Where possible, avoid downloading wheels. This is "
80+
"currently only useful if --print-download-urls is set."),
81+
)
82+
7483
cmdoptions.add_target_python_options(self.cmd_opts)
7584

7685
index_opts = cmdoptions.make_option_group(
@@ -130,6 +139,7 @@ def run(self, options: Values, args: List[str]) -> int:
130139
options=options,
131140
ignore_requires_python=options.ignore_requires_python,
132141
py_version_info=options.python_version,
142+
avoid_wheel_downloads=options.avoid_wheel_downloads,
133143
)
134144

135145
self.trace_basic_info(finder)

src/pip/_internal/resolution/resolvelib/resolver.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def __init__(
4545
ignore_dependencies: bool,
4646
ignore_installed: bool,
4747
ignore_requires_python: bool,
48+
avoid_wheel_downloads: bool,
4849
force_reinstall: bool,
4950
upgrade_strategy: str,
5051
py_version_info: Optional[Tuple[int, ...]] = None,
@@ -64,6 +65,7 @@ def __init__(
6465
py_version_info=py_version_info,
6566
)
6667
self.ignore_dependencies = ignore_dependencies
68+
self.avoid_wheel_downloads = avoid_wheel_downloads
6769
self.upgrade_strategy = upgrade_strategy
6870
self._result: Optional[Result] = None
6971

@@ -157,8 +159,10 @@ def resolve(
157159

158160
req_set.add_named_requirement(ireq)
159161

160-
reqs = req_set.all_requirements
161-
self.factory.preparer.prepare_linked_requirements_more(reqs)
162+
if not self.avoid_wheel_downloads:
163+
reqs = req_set.all_requirements
164+
self.factory.preparer.prepare_linked_requirements_more(reqs)
165+
162166
return req_set
163167

164168
def get_installation_order(

0 commit comments

Comments
 (0)