Skip to content

Commit 73edd74

Browse files
committed
Detect user-requested package names by preparing
This always prepares each explicit requirements when the resolver is run, instead of when they are being resolved. But we always want to prepare them anyway (an explicit requirement has only one candidate, so it's either do or die), so this is not really a problem.
1 parent 5d81040 commit 73edd74

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

news/9204.bugfix.rst

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
New resolver: Detect an unnamed requirement is user-specified (by building its
2+
metadata for the project name) so it can be correctly ordered in the resolver.

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

+5-6
Original file line numberDiff line numberDiff line change
@@ -469,16 +469,15 @@ def collect_root_requirements(
469469
else:
470470
collected.constraints[name] = Constraint.from_ireq(ireq)
471471
else:
472-
if ireq.user_supplied and ireq.name:
473-
canonical_name = canonicalize_name(ireq.name)
474-
if canonical_name not in collected.user_requested:
475-
collected.user_requested[canonical_name] = i
476472
req = self._make_requirement_from_install_req(
477473
ireq,
478474
requested_extras=(),
479475
)
480-
if req is not None:
481-
collected.requirements.append(req)
476+
if req is None:
477+
continue
478+
if ireq.user_supplied and req.name not in collected.user_requested:
479+
collected.user_requested[req.name] = i
480+
collected.requirements.append(req)
482481
return collected
483482

484483
def make_requirement_from_candidate(

0 commit comments

Comments
 (0)