Skip to content

Commit 8f7ef08

Browse files
committed
Make sure user_supplied is propagated where needed
1 parent 618aaa3 commit 8f7ef08

File tree

4 files changed

+27
-11
lines changed

4 files changed

+27
-11
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: 16 additions & 4 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
@@ -403,14 +406,16 @@ def install_req_from_line(
403406
hash_options=options.get("hashes", {}) if options else {},
404407
constraint=constraint,
405408
extras=parts.extras,
409+
user_supplied=user_supplied,
406410
)
407411

408412

409413
def install_req_from_req_string(
410414
req_string, # type: str
411415
comes_from=None, # type: Optional[InstallRequirement]
412416
isolated=False, # type: bool
413-
use_pep517=None # type: Optional[bool]
417+
use_pep517=None, # type: Optional[bool]
418+
user_supplied=False, # type: bool
414419
):
415420
# type: (...) -> InstallRequirement
416421
try:
@@ -432,14 +437,19 @@ def install_req_from_req_string(
432437
)
433438

434439
return InstallRequirement(
435-
req, comes_from, isolated=isolated, use_pep517=use_pep517
440+
req,
441+
comes_from,
442+
isolated=isolated,
443+
use_pep517=use_pep517,
444+
user_supplied=user_supplied,
436445
)
437446

438447

439448
def install_req_from_parsed_requirement(
440449
parsed_req, # type: ParsedRequirement
441450
isolated=False, # type: bool
442-
use_pep517=None # type: Optional[bool]
451+
use_pep517=None, # type: Optional[bool]
452+
user_supplied=False, # type: bool
443453
):
444454
# type: (...) -> InstallRequirement
445455
if parsed_req.is_editable:
@@ -449,6 +459,7 @@ def install_req_from_parsed_requirement(
449459
use_pep517=use_pep517,
450460
constraint=parsed_req.constraint,
451461
isolated=isolated,
462+
user_supplied=user_supplied,
452463
)
453464

454465
else:
@@ -460,5 +471,6 @@ def install_req_from_parsed_requirement(
460471
options=parsed_req.options,
461472
constraint=parsed_req.constraint,
462473
line_source=parsed_req.line_source,
474+
user_supplied=user_supplied,
463475
)
464476
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)