Skip to content

Commit aa0c167

Browse files
committed
Make sure user_supplied is propagated where needed
1 parent b9a19f6 commit aa0c167

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
@@ -219,7 +219,8 @@ def install_req_from_editable(
219219
use_pep517=None, # type: Optional[bool]
220220
isolated=False, # type: bool
221221
options=None, # type: Optional[Dict[str, Any]]
222-
constraint=False # type: bool
222+
constraint=False, # type: bool
223+
user_supplied=False, # type: bool
223224
):
224225
# type: (...) -> InstallRequirement
225226

@@ -228,6 +229,7 @@ def install_req_from_editable(
228229
return InstallRequirement(
229230
parts.requirement,
230231
comes_from=comes_from,
232+
user_supplied=user_supplied,
231233
editable=True,
232234
link=parts.link,
233235
constraint=constraint,
@@ -382,6 +384,7 @@ def install_req_from_line(
382384
options=None, # type: Optional[Dict[str, Any]]
383385
constraint=False, # type: bool
384386
line_source=None, # type: Optional[str]
387+
user_supplied=False, # type: bool
385388
):
386389
# type: (...) -> InstallRequirement
387390
"""Creates an InstallRequirement from a name, which might be a
@@ -400,14 +403,16 @@ def install_req_from_line(
400403
hash_options=options.get("hashes", {}) if options else {},
401404
constraint=constraint,
402405
extras=parts.extras,
406+
user_supplied=user_supplied,
403407
)
404408

405409

406410
def install_req_from_req_string(
407411
req_string, # type: str
408412
comes_from=None, # type: Optional[InstallRequirement]
409413
isolated=False, # type: bool
410-
use_pep517=None # type: Optional[bool]
414+
use_pep517=None, # type: Optional[bool]
415+
user_supplied=False, # type: bool
411416
):
412417
# type: (...) -> InstallRequirement
413418
try:
@@ -429,14 +434,19 @@ def install_req_from_req_string(
429434
)
430435

431436
return InstallRequirement(
432-
req, comes_from, isolated=isolated, use_pep517=use_pep517
437+
req,
438+
comes_from,
439+
isolated=isolated,
440+
use_pep517=use_pep517,
441+
user_supplied=user_supplied,
433442
)
434443

435444

436445
def install_req_from_parsed_requirement(
437446
parsed_req, # type: ParsedRequirement
438447
isolated=False, # type: bool
439-
use_pep517=None # type: Optional[bool]
448+
use_pep517=None, # type: Optional[bool]
449+
user_supplied=False, # type: bool
440450
):
441451
# type: (...) -> InstallRequirement
442452
if parsed_req.is_editable:
@@ -446,6 +456,7 @@ def install_req_from_parsed_requirement(
446456
use_pep517=use_pep517,
447457
constraint=parsed_req.constraint,
448458
isolated=isolated,
459+
user_supplied=user_supplied,
449460
)
450461

451462
else:
@@ -457,5 +468,6 @@ def install_req_from_parsed_requirement(
457468
options=parsed_req.options,
458469
constraint=parsed_req.constraint,
459470
line_source=parsed_req.line_source,
471+
user_supplied=user_supplied,
460472
)
461473
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, template):
4747
line = link.url
4848
ireq = install_req_from_line(
4949
line,
50+
user_supplied=template.user_supplied,
5051
comes_from=template.comes_from,
5152
use_pep517=template.use_pep517,
5253
isolated=template.isolated,
@@ -68,6 +69,7 @@ def make_install_req_from_editable(link, template):
6869
assert template.editable, "template not editable"
6970
return install_req_from_editable(
7071
link.url,
72+
user_supplied=template.user_supplied,
7173
comes_from=template.comes_from,
7274
use_pep517=template.use_pep517,
7375
isolated=template.isolated,
@@ -91,6 +93,7 @@ def make_install_req_from_dist(dist, template):
9193
line = "{}=={}".format(project_name, dist.parsed_version)
9294
ireq = install_req_from_line(
9395
line,
96+
user_supplied=template.user_supplied,
9497
comes_from=template.comes_from,
9598
use_pep517=template.use_pep517,
9699
isolated=template.isolated,

0 commit comments

Comments
 (0)