Skip to content

Commit 99b4a41

Browse files
committed
Merge remote-tracking branch 'origin/main' into Use-new-narrow_requirement_selection-resolvelib-API-to-speed-up-resolution
2 parents 3981979 + 2014c69 commit 99b4a41

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

news/13252.bugfix.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
When choosing a preferred requirement for resolving dependencies
2+
do not consider a specifier with a * in it, e.g. "==1.*", to be a
3+
pinned specifier.

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,14 +185,14 @@ def get_preference(
185185
else:
186186
candidate, ireqs = None, ()
187187

188-
operators = [
189-
specifier.operator
188+
operators: list[tuple[str, str]] = [
189+
(specifier.operator, specifier.version)
190190
for specifier_set in (ireq.specifier for ireq in ireqs if ireq)
191191
for specifier in specifier_set
192192
]
193193

194194
direct = candidate is not None
195-
pinned = any(op[:2] == "==" for op in operators)
195+
pinned = any(((op[:2] == "==") and ("*" not in ver)) for op, ver in operators)
196196
unfree = bool(operators)
197197
requested_order = self._user_requested.get(identifier, math.inf)
198198

tests/unit/resolution_resolvelib/test_provider.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,23 @@ def build_req_info(
4242
{"pinned-package": [build_req_info("pinned-package==1.0")]},
4343
[],
4444
{},
45-
(False, False, math.inf, False, "pinned-package"),
45+
(True, False, False, True, math.inf, False, "pinned-package"),
46+
),
47+
# Star-specified package, i.e. with "*"
48+
(
49+
"star-specified-package",
50+
{"star-specified-package": [build_req_info("star-specified-package==1.*")]},
51+
[],
52+
{},
53+
(True, False, True, True, math.inf, False, "star-specified-package"),
54+
),
55+
# Package that caused backtracking
56+
(
57+
"backtrack-package",
58+
{"backtrack-package": [build_req_info("backtrack-package")]},
59+
[build_req_info("backtrack-package")],
60+
{},
61+
(True, False, True, False, math.inf, True, "backtrack-package"),
4662
),
4763
# Root package requested by user
4864
(

0 commit comments

Comments
 (0)