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

This reverts commit f36151ed16.

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.
This commit is contained in:
Carl Meyer 2014-11-22 22:29:23 -07:00
parent f36151ed16
commit bcb693ebd4
9 changed files with 22 additions and 29 deletions

View File

@ -5,7 +5,7 @@ from django.db.migrations.operations.base import Operation
class CreateExtension(Operation):
reversible = True
def __init__(self, name, **kwargs):
def __init__(self, name):
self.name = name
def state_forwards(self, app_label, state):
@ -23,7 +23,7 @@ class CreateExtension(Operation):
class HStoreExtension(CreateExtension):
def __init__(self, **kwargs):
def __init__(self):
self.name = 'hstore'
def database_forwards(self, app_label, schema_editor, from_state, to_state):

View File

@ -30,7 +30,7 @@ class KeysValidator(object):
}
strict = False
def __init__(self, keys, strict=False, messages=None, **kwargs):
def __init__(self, keys, strict=False, messages=None):
self.keys = set(keys)
self.strict = strict
if messages is not None:

View File

@ -150,7 +150,7 @@ class FileSystemStorage(Storage):
"""
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:
location = settings.MEDIA_ROOT
self.base_location = location

View File

@ -23,7 +23,7 @@ class RegexValidator(object):
inverse_match = False
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:
self.regex = regex
if message is not None:
@ -134,7 +134,7 @@ class EmailValidator(object):
re.IGNORECASE)
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:
self.message = message
if code is not None:
@ -251,7 +251,7 @@ class BaseValidator(object):
message = _('Ensure this value is %(limit_value)s (it is %(show_value)s).')
code = 'limit_value'
def __init__(self, limit_value, message=None, **kwargs):
def __init__(self, limit_value, message=None):
self.limit_value = limit_value
if message:
self.message = message

View File

@ -37,9 +37,6 @@ class Operation(object):
self._constructor_args = (args, kwargs)
return self
def __init__(self, **kwargs):
pass
def deconstruct(self):
"""
Returns a 3-tuple of class import path (or just name if it lives

View File

@ -10,7 +10,7 @@ class AddField(Operation):
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.name = name
self.field = field
@ -69,7 +69,7 @@ class RemoveField(Operation):
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.name = name
@ -113,7 +113,7 @@ class AlterField(Operation):
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.name = name
self.field = field
@ -177,7 +177,7 @@ class RenameField(Operation):
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.old_name = old_name
self.new_name = new_name

View File

@ -14,7 +14,7 @@ class CreateModel(Operation):
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.fields = fields
self.options = options or {}
@ -79,7 +79,7 @@ class DeleteModel(Operation):
Drops a model's table.
"""
def __init__(self, name, **kwargs):
def __init__(self, name):
self.name = name
def deconstruct(self):
@ -116,7 +116,7 @@ class RenameModel(Operation):
Renames a model.
"""
def __init__(self, old_name, new_name, **kwargs):
def __init__(self, old_name, new_name):
self.old_name = old_name
self.new_name = new_name
@ -209,7 +209,7 @@ class AlterModelTable(Operation):
Renames a model's table
"""
def __init__(self, name, table, **kwargs):
def __init__(self, name, table):
self.name = name
self.table = table
@ -260,7 +260,7 @@ class AlterUniqueTogether(Operation):
"""
option_name = "unique_together"
def __init__(self, name, unique_together, **kwargs):
def __init__(self, name, unique_together):
self.name = name
unique_together = normalize_together(unique_together)
self.unique_together = set(tuple(cons) for cons in unique_together)
@ -305,7 +305,7 @@ class AlterIndexTogether(Operation):
"""
option_name = "index_together"
def __init__(self, name, index_together, **kwargs):
def __init__(self, name, index_together):
self.name = name
index_together = normalize_together(index_together)
self.index_together = set(tuple(cons) for cons in index_together)
@ -348,7 +348,7 @@ class AlterOrderWithRespectTo(Operation):
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.order_with_respect_to = order_with_respect_to
@ -407,7 +407,7 @@ class AlterModelOptions(Operation):
"verbose_name_plural",
]
def __init__(self, name, options, **kwargs):
def __init__(self, name, options):
self.name = name
self.options = options

View File

@ -11,7 +11,7 @@ class SeparateDatabaseAndState(Operation):
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.state_operations = state_operations or []
@ -62,7 +62,7 @@ class RunSQL(Operation):
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.reverse_sql = reverse_sql
self.state_operations = state_operations or []
@ -122,7 +122,7 @@ class RunPython(Operation):
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
# Forwards code
if not callable(code):

View File

@ -77,7 +77,3 @@ Bugfixes
* Fixed a crash in migrations when deleting a field that is part of a
``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`).