Skip to content

Commit 179d30d

Browse files
committed
Make sure user_supplied is propagated where needed
1 parent c580d66 commit 179d30d

File tree

4 files changed

+33
-13
lines changed

4 files changed

+33
-13
lines changed

src/pip/_internal/cli/req_command.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -309,25 +309,25 @@ def get_requirements(
309309
req_to_add = install_req_from_parsed_requirement(
310310
parsed_req,
311311
isolated=options.isolated_mode,
312+
user_supplied=False,
312313
)
313-
req_to_add.user_supplied = False
314314
requirements.append(req_to_add)
315315

316316
for req in args:
317317
req_to_add = install_req_from_line(
318318
req, None, isolated=options.isolated_mode,
319319
use_pep517=options.use_pep517,
320+
user_supplied=True,
320321
)
321-
req_to_add.user_supplied = True
322322
requirements.append(req_to_add)
323323

324324
for req in options.editables:
325325
req_to_add = install_req_from_editable(
326326
req,
327+
user_supplied=True,
327328
isolated=options.isolated_mode,
328329
use_pep517=options.use_pep517,
329330
)
330-
req_to_add.user_supplied = True
331331
requirements.append(req_to_add)
332332

333333
# NOTE: options.require_hashes may be set if --require-hashes is True
@@ -338,9 +338,9 @@ def get_requirements(
338338
req_to_add = install_req_from_parsed_requirement(
339339
parsed_req,
340340
isolated=options.isolated_mode,
341-
use_pep517=options.use_pep517
341+
use_pep517=options.use_pep517,
342+
user_supplied=True,
342343
)
343-
req_to_add.user_supplied = True
344344
requirements.append(req_to_add)
345345

346346
# If any requirement has hash options, enable hash checking.

src/pip/_internal/req/constructors.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ def install_req_from_editable(
222222
use_pep517=None, # type: Optional[bool]
223223
isolated=False, # type: bool
224224
options=None, # type: Optional[Dict[str, Any]]
225-
constraint=False # type: bool
225+
constraint=False, # type: bool
226+
user_supplied=False, # type: bool
226227
):
227228
# type: (...) -> InstallRequirement
228229

@@ -231,6 +232,7 @@ def install_req_from_editable(
231232
return InstallRequirement(
232233
parts.requirement,
233234
comes_from=comes_from,
235+
user_supplied=user_supplied,
234236
editable=True,
235237
link=parts.link,
236238
constraint=constraint,
@@ -385,6 +387,7 @@ def install_req_from_line(
385387
options=None, # type: Optional[Dict[str, Any]]
386388
constraint=False, # type: bool
387389
line_source=None, # type: Optional[str]
390+
user_supplied=False, # type: bool
388391
):
389392
# type: (...) -> InstallRequirement
390393
"""Creates an InstallRequirement from a name, which might be a
@@ -396,8 +399,13 @@ def install_req_from_line(
396399
parts = parse_req_from_line(name, line_source)
397400

398401
return InstallRequirement(
399-
parts.requirement, comes_from, link=parts.link, markers=parts.markers,
400-
use_pep517=use_pep517, isolated=isolated,
402+
parts.requirement,
403+
comes_from=comes_from,
404+
user_supplied=user_supplied,
405+
link=parts.link,
406+
markers=parts.markers,
407+
use_pep517=use_pep517,
408+
isolated=isolated,
401409
install_options=options.get("install_options", []) if options else [],
402410
global_options=options.get("global_options", []) if options else [],
403411
hash_options=options.get("hashes", {}) if options else {},
@@ -410,7 +418,8 @@ def install_req_from_req_string(
410418
req_string, # type: str
411419
comes_from=None, # type: Optional[InstallRequirement]
412420
isolated=False, # type: bool
413-
use_pep517=None # type: Optional[bool]
421+
use_pep517=None, # type: Optional[bool]
422+
user_supplied=False, # type: bool
414423
):
415424
# type: (...) -> InstallRequirement
416425
try:
@@ -432,14 +441,19 @@ def install_req_from_req_string(
432441
)
433442

434443
return InstallRequirement(
435-
req, comes_from, isolated=isolated, use_pep517=use_pep517
444+
req,
445+
comes_from=comes_from,
446+
user_supplied=user_supplied,
447+
isolated=isolated,
448+
use_pep517=use_pep517,
436449
)
437450

438451

439452
def install_req_from_parsed_requirement(
440453
parsed_req, # type: ParsedRequirement
441454
isolated=False, # type: bool
442-
use_pep517=None # type: Optional[bool]
455+
use_pep517=None, # type: Optional[bool]
456+
user_supplied=False, # type: bool
443457
):
444458
# type: (...) -> InstallRequirement
445459
if parsed_req.is_editable:
@@ -449,6 +463,7 @@ def install_req_from_parsed_requirement(
449463
use_pep517=use_pep517,
450464
constraint=parsed_req.constraint,
451465
isolated=isolated,
466+
user_supplied=user_supplied,
452467
)
453468

454469
else:
@@ -460,5 +475,6 @@ def install_req_from_parsed_requirement(
460475
options=parsed_req.options,
461476
constraint=parsed_req.constraint,
462477
line_source=parsed_req.line_source,
478+
user_supplied=user_supplied,
463479
)
464480
return req

src/pip/_internal/req/req_install.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ def __init__(
110110
global_options=None, # type: Optional[List[str]]
111111
hash_options=None, # type: Optional[Dict[str, List[str]]]
112112
constraint=False, # type: bool
113-
extras=() # type: Iterable[str]
113+
extras=(), # type: Iterable[str]
114+
user_supplied=False, # type: bool
114115
):
115116
# type: (...) -> None
116117
assert req is None or isinstance(req, Requirement), req
@@ -174,7 +175,7 @@ def __init__(
174175
# User supplied requirement are explicitly requested for installation
175176
# by the user via CLI arguments or requirements files, as opposed to,
176177
# e.g. dependencies, extras or constraints.
177-
self.user_supplied = False
178+
self.user_supplied = user_supplied
178179

179180
# Set by the legacy resolver when the requirement has been downloaded
180181
# TODO: This introduces a strong coupling between the resolver and the

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def make_install_req_from_link(link, parent):
4747
line = link.url
4848
ireq = install_req_from_line(
4949
line,
50+
user_supplied=parent.user_supplied,
5051
comes_from=parent.comes_from,
5152
use_pep517=parent.use_pep517,
5253
isolated=parent.isolated,
@@ -68,6 +69,7 @@ def make_install_req_from_editable(link, parent):
6869
assert parent.editable, "parent not editable"
6970
return install_req_from_editable(
7071
link.url,
72+
user_supplied=parent.user_supplied,
7173
comes_from=parent.comes_from,
7274
use_pep517=parent.use_pep517,
7375
isolated=parent.isolated,
@@ -91,6 +93,7 @@ def make_install_req_from_dist(dist, parent):
9193
line = "{}=={}".format(project_name, dist.parsed_version)
9294
ireq = install_req_from_line(
9395
line,
96+
user_supplied=parent.user_supplied,
9497
comes_from=parent.comes_from,
9598
use_pep517=parent.use_pep517,
9699
isolated=parent.isolated,

0 commit comments

Comments
 (0)