Skip to content

Commit 8a03445

Browse files
charettestimgraham
authored andcommitted
Removed in_between from Operation.reduce()'s signature.
It isn't used since FieldOperation.references_model() takes into account models referenced by the field it's operating on.
1 parent 37cafbf commit 8a03445

File tree

4 files changed

+25
-25
lines changed

4 files changed

+25
-25
lines changed

django/db/migrations/operations/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def allow_migrate_model(self, connection_alias, model):
113113

114114
return router.allow_migrate_model(connection_alias, model)
115115

116-
def reduce(self, operation, in_between, app_label=None):
116+
def reduce(self, operation, app_label=None):
117117
"""
118118
Return either a list of operations the actual operation should be
119119
replaced with or a boolean that indicates whether or not the specified

django/db/migrations/operations/fields.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ def references_field(self, model_name, name, app_label=None):
6060
return True
6161
return False
6262

63-
def reduce(self, operation, in_between, app_label=None):
63+
def reduce(self, operation, app_label=None):
6464
return (
65-
super().reduce(operation, in_between, app_label=app_label) or
65+
super().reduce(operation, app_label=app_label) or
6666
not operation.references_field(self.model_name, self.name, app_label)
6767
)
6868

@@ -122,7 +122,7 @@ def database_backwards(self, app_label, schema_editor, from_state, to_state):
122122
def describe(self):
123123
return "Add field %s to %s" % (self.name, self.model_name)
124124

125-
def reduce(self, operation, in_between, app_label=None):
125+
def reduce(self, operation, app_label=None):
126126
if isinstance(operation, FieldOperation) and self.is_same_field_operation(operation):
127127
if isinstance(operation, AlterField):
128128
return [
@@ -142,7 +142,7 @@ def reduce(self, operation, in_between, app_label=None):
142142
field=self.field,
143143
),
144144
]
145-
return super().reduce(operation, in_between, app_label=app_label)
145+
return super().reduce(operation, app_label=app_label)
146146

147147

148148
class RemoveField(FieldOperation):
@@ -186,11 +186,11 @@ def database_backwards(self, app_label, schema_editor, from_state, to_state):
186186
def describe(self):
187187
return "Remove field %s from %s" % (self.name, self.model_name)
188188

189-
def reduce(self, operation, in_between, app_label=None):
189+
def reduce(self, operation, app_label=None):
190190
from .models import DeleteModel
191191
if isinstance(operation, DeleteModel) and operation.name_lower == self.model_name_lower:
192192
return [operation]
193-
return super().reduce(operation, in_between, app_label=app_label)
193+
return super().reduce(operation, app_label=app_label)
194194

195195

196196
class AlterField(FieldOperation):
@@ -256,7 +256,7 @@ def database_backwards(self, app_label, schema_editor, from_state, to_state):
256256
def describe(self):
257257
return "Alter field %s on %s" % (self.name, self.model_name)
258258

259-
def reduce(self, operation, in_between, app_label=None):
259+
def reduce(self, operation, app_label=None):
260260
if isinstance(operation, RemoveField) and self.is_same_field_operation(operation):
261261
return [operation]
262262
elif isinstance(operation, RenameField) and self.is_same_field_operation(operation):
@@ -268,7 +268,7 @@ def reduce(self, operation, in_between, app_label=None):
268268
field=self.field,
269269
),
270270
]
271-
return super().reduce(operation, in_between, app_label=app_label)
271+
return super().reduce(operation, app_label=app_label)
272272

273273

274274
class RenameField(FieldOperation):
@@ -383,7 +383,7 @@ def references_field(self, model_name, name, app_label=None):
383383
name.lower() == self.new_name_lower
384384
)
385385

386-
def reduce(self, operation, in_between, app_label=None):
386+
def reduce(self, operation, app_label=None):
387387
if (isinstance(operation, RenameField) and
388388
self.is_same_model_operation(operation) and
389389
self.new_name_lower == operation.old_name_lower):
@@ -397,6 +397,6 @@ def reduce(self, operation, in_between, app_label=None):
397397
# Skip `FieldOperation.reduce` as we want to run `references_field`
398398
# against self.new_name.
399399
return (
400-
super(FieldOperation, self).reduce(operation, in_between, app_label=app_label) or
400+
super(FieldOperation, self).reduce(operation, app_label=app_label) or
401401
not operation.references_field(self.model_name, self.new_name, app_label)
402402
)

django/db/migrations/operations/models.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ def name_lower(self):
3131
def references_model(self, name, app_label=None):
3232
return name.lower() == self.name_lower
3333

34-
def reduce(self, operation, in_between, app_label=None):
34+
def reduce(self, operation, app_label=None):
3535
return (
36-
super().reduce(operation, in_between, app_label=app_label) or
36+
super().reduce(operation, app_label=app_label) or
3737
not operation.references_model(self.name, app_label)
3838
)
3939

@@ -117,7 +117,7 @@ def references_model(self, name, app_label=None):
117117
return True
118118
return False
119119

120-
def reduce(self, operation, in_between, app_label=None):
120+
def reduce(self, operation, app_label=None):
121121
if (isinstance(operation, DeleteModel) and
122122
self.name_lower == operation.name_lower and
123123
not self.options.get("proxy", False)):
@@ -193,7 +193,7 @@ def reduce(self, operation, in_between, app_label=None):
193193
managers=self.managers,
194194
),
195195
]
196-
return super().reduce(operation, in_between, app_label=app_label)
196+
return super().reduce(operation, app_label=app_label)
197197

198198

199199
class DeleteModel(ModelOperation):
@@ -368,7 +368,7 @@ def references_model(self, name, app_label=None):
368368
def describe(self):
369369
return "Rename model %s to %s" % (self.old_name, self.new_name)
370370

371-
def reduce(self, operation, in_between, app_label=None):
371+
def reduce(self, operation, app_label=None):
372372
if (isinstance(operation, RenameModel) and
373373
self.new_name_lower == operation.old_name_lower):
374374
return [
@@ -380,7 +380,7 @@ def reduce(self, operation, in_between, app_label=None):
380380
# Skip `ModelOperation.reduce` as we want to run `references_model`
381381
# against self.new_name.
382382
return (
383-
super(ModelOperation, self).reduce(operation, in_between, app_label=app_label) or
383+
super(ModelOperation, self).reduce(operation, app_label=app_label) or
384384
not operation.references_model(self.new_name, app_label)
385385
)
386386

@@ -434,26 +434,26 @@ def describe(self):
434434
self.table if self.table is not None else "(default)"
435435
)
436436

437-
def reduce(self, operation, in_between, app_label=None):
437+
def reduce(self, operation, app_label=None):
438438
if isinstance(operation, (AlterModelTable, DeleteModel)) and self.name_lower == operation.name_lower:
439439
return [operation]
440-
return super().reduce(operation, in_between, app_label=app_label)
440+
return super().reduce(operation, app_label=app_label)
441441

442442

443443
class ModelOptionOperation(ModelOperation):
444-
def reduce(self, operation, in_between, app_label=None):
444+
def reduce(self, operation, app_label=None):
445445
if isinstance(operation, (self.__class__, DeleteModel)) and self.name_lower == operation.name_lower:
446446
return [operation]
447-
return super().reduce(operation, in_between, app_label=app_label)
447+
return super().reduce(operation, app_label=app_label)
448448

449449

450450
class FieldRelatedOptionOperation(ModelOptionOperation):
451-
def reduce(self, operation, in_between, app_label=None):
451+
def reduce(self, operation, app_label=None):
452452
if (isinstance(operation, FieldOperation) and
453453
self.name_lower == operation.model_name_lower and
454454
not self.references_field(operation.model_name, operation.name)):
455455
return [operation, self]
456-
return super().reduce(operation, in_between, app_label=app_label)
456+
return super().reduce(operation, app_label=app_label)
457457

458458

459459
class AlterUniqueTogether(FieldRelatedOptionOperation):

django/db/migrations/optimizer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ def optimize_inner(self, operations, app_label=None):
4646
# Compare it to each operation after it
4747
for j, other in enumerate(operations[i + 1:]):
4848
in_between = operations[i + 1:i + j + 1]
49-
result = operation.reduce(other, in_between, app_label)
49+
result = operation.reduce(other, app_label)
5050
if isinstance(result, list):
5151
if right:
5252
new_operations.extend(in_between)
5353
new_operations.extend(result)
54-
elif all(op.reduce(other, [], app_label) is True for op in in_between):
54+
elif all(op.reduce(other, app_label) is True for op in in_between):
5555
# Perform a left reduction if all of the in-between
5656
# operations can optimize through other.
5757
new_operations.extend(result)

0 commit comments

Comments
 (0)