@@ -76,7 +76,8 @@ def __repr__(self):
76
76
@classmethod
77
77
def from_requirement (cls , provider , requirement , parent ):
78
78
"""Build an instance from a requirement."""
79
- cands = build_iter_view (provider .find_matches ([requirement ]))
79
+ matches = provider .find_matches (requirements = [requirement ])
80
+ cands = build_iter_view (matches )
80
81
infos = [RequirementInformation (requirement , parent )]
81
82
criterion = cls (cands , infos , incompatibilities = [])
82
83
if not cands :
@@ -93,7 +94,8 @@ def merged_with(self, provider, requirement, parent):
93
94
"""Build a new instance from this and a new requirement."""
94
95
infos = list (self .information )
95
96
infos .append (RequirementInformation (requirement , parent ))
96
- cands = build_iter_view (provider .find_matches ([r for r , _ in infos ]))
97
+ matches = provider .find_matches ([r for r , _ in infos ])
98
+ cands = build_iter_view (matches )
97
99
criterion = type (self )(cands , infos , list (self .incompatibilities ))
98
100
if not cands :
99
101
raise RequirementsConflicted (criterion )
@@ -165,22 +167,21 @@ def _push_new_state(self):
165
167
self ._states .append (state )
166
168
167
169
def _merge_into_criterion (self , requirement , parent ):
168
- self ._r .adding_requirement (requirement , parent )
169
- name = self ._p .identify (requirement )
170
- try :
170
+ self ._r .adding_requirement (requirement = requirement , parent = parent )
171
+ name = self ._p .identify (requirement_or_candidate = requirement )
172
+ if name in self . state . criteria :
171
173
crit = self .state .criteria [name ]
172
- except KeyError :
173
- crit = Criterion .from_requirement (self ._p , requirement , parent )
174
- else :
175
174
crit = crit .merged_with (self ._p , requirement , parent )
175
+ else :
176
+ crit = Criterion .from_requirement (self ._p , requirement , parent )
176
177
return name , crit
177
178
178
179
def _get_criterion_item_preference (self , item ):
179
180
name , criterion = item
180
181
return self ._p .get_preference (
181
- self .state .mapping .get (name ),
182
- criterion .candidates .for_preference (),
183
- criterion .information ,
182
+ resolution = self .state .mapping .get (name ),
183
+ candidates = criterion .candidates .for_preference (),
184
+ information = criterion .information ,
184
185
)
185
186
186
187
def _is_current_pin_satisfying (self , name , criterion ):
@@ -189,13 +190,13 @@ def _is_current_pin_satisfying(self, name, criterion):
189
190
except KeyError :
190
191
return False
191
192
return all (
192
- self ._p .is_satisfied_by (r , current_pin )
193
+ self ._p .is_satisfied_by (requirement = r , candidate = current_pin )
193
194
for r in criterion .iter_requirement ()
194
195
)
195
196
196
197
def _get_criteria_to_update (self , candidate ):
197
198
criteria = {}
198
- for r in self ._p .get_dependencies (candidate ):
199
+ for r in self ._p .get_dependencies (candidate = candidate ):
199
200
name , crit = self ._merge_into_criterion (r , parent = candidate )
200
201
criteria [name ] = crit
201
202
return criteria
@@ -214,15 +215,15 @@ def _attempt_to_pin_criterion(self, name, criterion):
214
215
# faulty provider, we will raise an error to notify the implementer
215
216
# to fix find_matches() and/or is_satisfied_by().
216
217
satisfied = all (
217
- self ._p .is_satisfied_by (r , candidate )
218
+ self ._p .is_satisfied_by (requirement = r , candidate = candidate )
218
219
for r in criterion .iter_requirement ()
219
220
)
220
221
if not satisfied :
221
222
raise InconsistentCandidate (candidate , criterion )
222
223
223
224
# Put newly-pinned candidate at the end. This is essential because
224
225
# backtracking looks at this mapping to get the last pin.
225
- self ._r .pinning (candidate )
226
+ self ._r .pinning (candidate = candidate )
226
227
self .state .mapping .pop (name , None )
227
228
self .state .mapping [name ] = candidate
228
229
self .state .criteria .update (criteria )
@@ -274,7 +275,7 @@ def _backtrack(self):
274
275
# Also mark the newly known incompatibility.
275
276
incompatibilities_from_broken .append ((name , [candidate ]))
276
277
277
- self ._r .backtracking (candidate )
278
+ self ._r .backtracking (candidate = candidate )
278
279
279
280
# Create a new state from the last known-to-work one, and apply
280
281
# the previously gathered incompatibility information.
@@ -326,7 +327,7 @@ def resolve(self, requirements, max_rounds):
326
327
self ._push_new_state ()
327
328
328
329
for round_index in range (max_rounds ):
329
- self ._r .starting_round (round_index )
330
+ self ._r .starting_round (index = round_index )
330
331
331
332
unsatisfied_criterion_items = [
332
333
item
@@ -336,7 +337,7 @@ def resolve(self, requirements, max_rounds):
336
337
337
338
# All criteria are accounted for. Nothing more to pin, we are done!
338
339
if not unsatisfied_criterion_items :
339
- self ._r .ending (self .state )
340
+ self ._r .ending (state = self .state )
340
341
return self .state
341
342
342
343
# Choose the most preferred unpinned criterion to try.
@@ -359,7 +360,7 @@ def resolve(self, requirements, max_rounds):
359
360
# Pinning was successful. Push a new state to do another pin.
360
361
self ._push_new_state ()
361
362
362
- self ._r .ending_round (round_index , self .state )
363
+ self ._r .ending_round (index = round_index , state = self .state )
363
364
364
365
raise ResolutionTooDeep (max_rounds )
365
366
0 commit comments