File tree Expand file tree Collapse file tree 1 file changed +12
-5
lines changed
src/pip/_internal/resolution/resolvelib Expand file tree Collapse file tree 1 file changed +12
-5
lines changed Original file line number Diff line number Diff line change @@ -147,14 +147,20 @@ def get_preference(
147147 else :
148148 _icandidates , ireqs = (), ()
149149
150- operators = [
151- specifier .operator
150+ operators_versions = [
151+ ( specifier .operator , specifier . version )
152152 for specifier_set in (ireq .specifier for ireq in ireqs if ireq )
153153 for specifier in specifier_set
154154 ]
155-
156- pinned = any (op in ("==" , "===" ) for op in operators )
157- unfree = bool (operators )
155+ upper_bound = any (
156+ op in ("<" , "<=" , "~=" ) or (op == "==" and "*" in ver )
157+ for op , ver in operators_versions
158+ )
159+ pinned = any (
160+ op == "===" or (op == "==" and "*" not in ver )
161+ for op , ver in operators_versions
162+ )
163+ unfree = bool (operators_versions )
158164
159165 if identifier in self ._user_requested :
160166 requested_order : float = self ._user_requested [identifier ]
@@ -184,6 +190,7 @@ def get_preference(
184190 return (
185191 not requires_python ,
186192 not pinned ,
193+ not upper_bound ,
187194 not backtrack_cause ,
188195 inferred_depth ,
189196 requested_order ,
You can’t perform that action at this time.
0 commit comments