Kaydet (Commit) bcb693eb authored tarafından Carl Meyer's avatar Carl Meyer

Revert "Fixed #23892 -- Made deconstructible classes forwards compatible"

This reverts commit f36151ed.

Adding kwargs to deconstructed objects does not achieve useful
forward-compatibility in general, since additional arguments are silently
dropped rather than having their intended effect. In fact, it can make the
failure more difficult to diagnose. Thanks Shai Berger for discussion.
üst f36151ed
...@@ -5,7 +5,7 @@ from django.db.migrations.operations.base import Operation ...@@ -5,7 +5,7 @@ from django.db.migrations.operations.base import Operation
class CreateExtension(Operation): class CreateExtension(Operation):
reversible = True reversible = True
def __init__(self, name, **kwargs): def __init__(self, name):
self.name = name self.name = name
def state_forwards(self, app_label, state): def state_forwards(self, app_label, state):
...@@ -23,7 +23,7 @@ class CreateExtension(Operation): ...@@ -23,7 +23,7 @@ class CreateExtension(Operation):
class HStoreExtension(CreateExtension): class HStoreExtension(CreateExtension):
def __init__(self, **kwargs): def __init__(self):
self.name = 'hstore' self.name = 'hstore'
def database_forwards(self, app_label, schema_editor, from_state, to_state): def database_forwards(self, app_label, schema_editor, from_state, to_state):
......
...@@ -30,7 +30,7 @@ class KeysValidator(object): ...@@ -30,7 +30,7 @@ class KeysValidator(object):
} }
strict = False strict = False
def __init__(self, keys, strict=False, messages=None, **kwargs): def __init__(self, keys, strict=False, messages=None):
self.keys = set(keys) self.keys = set(keys)
self.strict = strict self.strict = strict
if messages is not None: if messages is not None:
......
...@@ -150,7 +150,7 @@ class FileSystemStorage(Storage): ...@@ -150,7 +150,7 @@ class FileSystemStorage(Storage):
""" """
def __init__(self, location=None, base_url=None, file_permissions_mode=None, def __init__(self, location=None, base_url=None, file_permissions_mode=None,
directory_permissions_mode=None, **kwargs): directory_permissions_mode=None):
if location is None: if location is None:
location = settings.MEDIA_ROOT location = settings.MEDIA_ROOT
self.base_location = location self.base_location = location
......
...@@ -23,7 +23,7 @@ class RegexValidator(object): ...@@ -23,7 +23,7 @@ class RegexValidator(object):
inverse_match = False inverse_match = False
flags = 0 flags = 0
def __init__(self, regex=None, message=None, code=None, inverse_match=None, flags=None, **kwargs): def __init__(self, regex=None, message=None, code=None, inverse_match=None, flags=None):
if regex is not None: if regex is not None:
self.regex = regex self.regex = regex
if message is not None: if message is not None:
...@@ -134,7 +134,7 @@ class EmailValidator(object): ...@@ -134,7 +134,7 @@ class EmailValidator(object):
re.IGNORECASE) re.IGNORECASE)
domain_whitelist = ['localhost'] domain_whitelist = ['localhost']
def __init__(self, message=None, code=None, whitelist=None, **kwargs): def __init__(self, message=None, code=None, whitelist=None):
if message is not None: if message is not None:
self.message = message self.message = message
if code is not None: if code is not None:
...@@ -251,7 +251,7 @@ class BaseValidator(object): ...@@ -251,7 +251,7 @@ class BaseValidator(object):
message = _('Ensure this value is %(limit_value)s (it is %(show_value)s).') message = _('Ensure this value is %(limit_value)s (it is %(show_value)s).')
code = 'limit_value' code = 'limit_value'
def __init__(self, limit_value, message=None, **kwargs): def __init__(self, limit_value, message=None):
self.limit_value = limit_value self.limit_value = limit_value
if message: if message:
self.message = message self.message = message
......
...@@ -37,9 +37,6 @@ class Operation(object): ...@@ -37,9 +37,6 @@ class Operation(object):
self._constructor_args = (args, kwargs) self._constructor_args = (args, kwargs)
return self return self
def __init__(self, **kwargs):
pass
def deconstruct(self): def deconstruct(self):
""" """
Returns a 3-tuple of class import path (or just name if it lives Returns a 3-tuple of class import path (or just name if it lives
......
...@@ -10,7 +10,7 @@ class AddField(Operation): ...@@ -10,7 +10,7 @@ class AddField(Operation):
Adds a field to a model. Adds a field to a model.
""" """
def __init__(self, model_name, name, field, preserve_default=True, **kwargs): def __init__(self, model_name, name, field, preserve_default=True):
self.model_name = model_name self.model_name = model_name
self.name = name self.name = name
self.field = field self.field = field
...@@ -69,7 +69,7 @@ class RemoveField(Operation): ...@@ -69,7 +69,7 @@ class RemoveField(Operation):
Removes a field from a model. Removes a field from a model.
""" """
def __init__(self, model_name, name, **kwargs): def __init__(self, model_name, name):
self.model_name = model_name self.model_name = model_name
self.name = name self.name = name
...@@ -113,7 +113,7 @@ class AlterField(Operation): ...@@ -113,7 +113,7 @@ class AlterField(Operation):
Alters a field's database column (e.g. null, max_length) to the provided new field Alters a field's database column (e.g. null, max_length) to the provided new field
""" """
def __init__(self, model_name, name, field, preserve_default=True, **kwargs): def __init__(self, model_name, name, field, preserve_default=True):
self.model_name = model_name self.model_name = model_name
self.name = name self.name = name
self.field = field self.field = field
...@@ -177,7 +177,7 @@ class RenameField(Operation): ...@@ -177,7 +177,7 @@ class RenameField(Operation):
Renames a field on the model. Might affect db_column too. Renames a field on the model. Might affect db_column too.
""" """
def __init__(self, model_name, old_name, new_name, **kwargs): def __init__(self, model_name, old_name, new_name):
self.model_name = model_name self.model_name = model_name
self.old_name = old_name self.old_name = old_name
self.new_name = new_name self.new_name = new_name
......
...@@ -14,7 +14,7 @@ class CreateModel(Operation): ...@@ -14,7 +14,7 @@ class CreateModel(Operation):
serialization_expand_args = ['fields', 'options'] serialization_expand_args = ['fields', 'options']
def __init__(self, name, fields, options=None, bases=None, **kwargs): def __init__(self, name, fields, options=None, bases=None):
self.name = name self.name = name
self.fields = fields self.fields = fields
self.options = options or {} self.options = options or {}
...@@ -79,7 +79,7 @@ class DeleteModel(Operation): ...@@ -79,7 +79,7 @@ class DeleteModel(Operation):
Drops a model's table. Drops a model's table.
""" """
def __init__(self, name, **kwargs): def __init__(self, name):
self.name = name self.name = name
def deconstruct(self): def deconstruct(self):
...@@ -116,7 +116,7 @@ class RenameModel(Operation): ...@@ -116,7 +116,7 @@ class RenameModel(Operation):
Renames a model. Renames a model.
""" """
def __init__(self, old_name, new_name, **kwargs): def __init__(self, old_name, new_name):
self.old_name = old_name self.old_name = old_name
self.new_name = new_name self.new_name = new_name
...@@ -209,7 +209,7 @@ class AlterModelTable(Operation): ...@@ -209,7 +209,7 @@ class AlterModelTable(Operation):
Renames a model's table Renames a model's table
""" """
def __init__(self, name, table, **kwargs): def __init__(self, name, table):
self.name = name self.name = name
self.table = table self.table = table
...@@ -260,7 +260,7 @@ class AlterUniqueTogether(Operation): ...@@ -260,7 +260,7 @@ class AlterUniqueTogether(Operation):
""" """
option_name = "unique_together" option_name = "unique_together"
def __init__(self, name, unique_together, **kwargs): def __init__(self, name, unique_together):
self.name = name self.name = name
unique_together = normalize_together(unique_together) unique_together = normalize_together(unique_together)
self.unique_together = set(tuple(cons) for cons in unique_together) self.unique_together = set(tuple(cons) for cons in unique_together)
...@@ -305,7 +305,7 @@ class AlterIndexTogether(Operation): ...@@ -305,7 +305,7 @@ class AlterIndexTogether(Operation):
""" """
option_name = "index_together" option_name = "index_together"
def __init__(self, name, index_together, **kwargs): def __init__(self, name, index_together):
self.name = name self.name = name
index_together = normalize_together(index_together) index_together = normalize_together(index_together)
self.index_together = set(tuple(cons) for cons in index_together) self.index_together = set(tuple(cons) for cons in index_together)
...@@ -348,7 +348,7 @@ class AlterOrderWithRespectTo(Operation): ...@@ -348,7 +348,7 @@ class AlterOrderWithRespectTo(Operation):
Represents a change with the order_with_respect_to option. Represents a change with the order_with_respect_to option.
""" """
def __init__(self, name, order_with_respect_to, **kwargs): def __init__(self, name, order_with_respect_to):
self.name = name self.name = name
self.order_with_respect_to = order_with_respect_to self.order_with_respect_to = order_with_respect_to
...@@ -407,7 +407,7 @@ class AlterModelOptions(Operation): ...@@ -407,7 +407,7 @@ class AlterModelOptions(Operation):
"verbose_name_plural", "verbose_name_plural",
] ]
def __init__(self, name, options, **kwargs): def __init__(self, name, options):
self.name = name self.name = name
self.options = options self.options = options
......
...@@ -11,7 +11,7 @@ class SeparateDatabaseAndState(Operation): ...@@ -11,7 +11,7 @@ class SeparateDatabaseAndState(Operation):
that affect the state or not the database, or so on. that affect the state or not the database, or so on.
""" """
def __init__(self, database_operations=None, state_operations=None, **kwargs): def __init__(self, database_operations=None, state_operations=None):
self.database_operations = database_operations or [] self.database_operations = database_operations or []
self.state_operations = state_operations or [] self.state_operations = state_operations or []
...@@ -62,7 +62,7 @@ class RunSQL(Operation): ...@@ -62,7 +62,7 @@ class RunSQL(Operation):
by this SQL change, in case it's custom column/table creation/deletion. by this SQL change, in case it's custom column/table creation/deletion.
""" """
def __init__(self, sql, reverse_sql=None, state_operations=None, **kwargs): def __init__(self, sql, reverse_sql=None, state_operations=None):
self.sql = sql self.sql = sql
self.reverse_sql = reverse_sql self.reverse_sql = reverse_sql
self.state_operations = state_operations or [] self.state_operations = state_operations or []
...@@ -122,7 +122,7 @@ class RunPython(Operation): ...@@ -122,7 +122,7 @@ class RunPython(Operation):
reduces_to_sql = False reduces_to_sql = False
def __init__(self, code, reverse_code=None, atomic=True, **kwargs): def __init__(self, code, reverse_code=None, atomic=True):
self.atomic = atomic self.atomic = atomic
# Forwards code # Forwards code
if not callable(code): if not callable(code):
......
...@@ -77,7 +77,3 @@ Bugfixes ...@@ -77,7 +77,3 @@ Bugfixes
* Fixed a crash in migrations when deleting a field that is part of a * Fixed a crash in migrations when deleting a field that is part of a
``index/unique_together`` constraint (:ticket:`23794`). ``index/unique_together`` constraint (:ticket:`23794`).
* Made the initializers of deconstructible classes, such as migration
operations and validators, accept kwargs for forwards compatibility
(:ticket:`23892`).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment