diff options
| author | Vytis Banaitis <vytis.banaitis@gmail.com> | 2017-02-01 18:41:56 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-02-01 11:41:56 -0500 |
| commit | 8838d4dd498c8f66ea4237fe8a79a5f77d6f95c9 (patch) | |
| tree | b75fa27930b8758ad36669b523b084ac09ce290b /django/core/serializers | |
| parent | 0ec4dc91e0e7befdd06aa0613b5d0fbe3c785ee7 (diff) | |
Refs #23919 -- Replaced kwargs.pop() with keyword-only arguments.
Diffstat (limited to 'django/core/serializers')
| -rw-r--r-- | django/core/serializers/base.py | 15 | ||||
| -rw-r--r-- | django/core/serializers/python.py | 14 | ||||
| -rw-r--r-- | django/core/serializers/xml_serializer.py | 6 |
3 files changed, 16 insertions, 19 deletions
diff --git a/django/core/serializers/base.py b/django/core/serializers/base.py index d1a5344064..2ffe022da9 100644 --- a/django/core/serializers/base.py +++ b/django/core/serializers/base.py @@ -62,19 +62,18 @@ class Serializer: progress_class = ProgressBar stream_class = StringIO - def serialize(self, queryset, **options): + def serialize(self, queryset, *, stream=None, fields=None, use_natural_foreign_keys=False, + use_natural_primary_keys=False, progress_output=None, object_count=0, **options): """ Serialize a queryset. """ self.options = options - self.stream = options.pop("stream", self.stream_class()) - self.selected_fields = options.pop("fields", None) - self.use_natural_foreign_keys = options.pop('use_natural_foreign_keys', False) - self.use_natural_primary_keys = options.pop('use_natural_primary_keys', False) - progress_bar = self.progress_class( - options.pop('progress_output', None), options.pop('object_count', 0) - ) + self.stream = stream if stream is not None else self.stream_class() + self.selected_fields = fields + self.use_natural_foreign_keys = use_natural_foreign_keys + self.use_natural_primary_keys = use_natural_primary_keys + progress_bar = self.progress_class(progress_output, object_count) self.start_serialization() self.first = True diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index 7b7510be41..a299ed62c8 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -79,15 +79,13 @@ class Serializer(base.Serializer): return self.objects -def Deserializer(object_list, **options): +def Deserializer(object_list, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False, **options): """ Deserialize simple Python objects back into Django ORM instances. It's expected that you pass the Python objects themselves (instead of a stream or a string) to the constructor """ - db = options.pop('using', DEFAULT_DB_ALIAS) - ignore = options.pop('ignorenonexistent', False) field_names_cache = {} # Model: <list of field_names> for d in object_list: @@ -95,7 +93,7 @@ def Deserializer(object_list, **options): try: Model = _get_model(d["model"]) except base.DeserializationError: - if ignore: + if ignorenonexistent: continue else: raise @@ -114,7 +112,7 @@ def Deserializer(object_list, **options): # Handle each field for (field_name, field_value) in d["fields"].items(): - if ignore and field_name not in field_names: + if ignorenonexistent and field_name not in field_names: # skip fields no longer on model continue @@ -131,7 +129,7 @@ def Deserializer(object_list, **options): if hasattr(model._default_manager, 'get_by_natural_key'): def m2m_convert(value): if hasattr(value, '__iter__') and not isinstance(value, str): - return model._default_manager.db_manager(db).get_by_natural_key(*value).pk + return model._default_manager.db_manager(using).get_by_natural_key(*value).pk else: return force_text(model._meta.pk.to_python(value), strings_only=True) else: @@ -154,7 +152,7 @@ def Deserializer(object_list, **options): field_name = field.remote_field.field_name if hasattr(default_manager, 'get_by_natural_key'): if hasattr(field_value, '__iter__') and not isinstance(field_value, str): - obj = default_manager.db_manager(db).get_by_natural_key(*field_value) + obj = default_manager.db_manager(using).get_by_natural_key(*field_value) value = getattr(obj, field.remote_field.field_name) # If this is a natural foreign key to an object that # has a FK/O2O as the foreign key, use the FK value @@ -177,7 +175,7 @@ def Deserializer(object_list, **options): except Exception as e: raise base.DeserializationError.WithData(e, d['model'], d.get('pk'), field_value) - obj = base.build_instance(Model, data, db) + obj = base.build_instance(Model, data, using) yield base.DeserializedObject(obj, m2m_data) diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py index ddf0bf3e1a..7e64952074 100644 --- a/django/core/serializers/xml_serializer.py +++ b/django/core/serializers/xml_serializer.py @@ -157,11 +157,11 @@ class Deserializer(base.Deserializer): Deserialize XML. """ - def __init__(self, stream_or_string, **options): + def __init__(self, stream_or_string, *, using=DEFAULT_DB_ALIAS, ignorenonexistent=False, **options): super().__init__(stream_or_string, **options) self.event_stream = pulldom.parse(self.stream, self._make_parser()) - self.db = options.pop('using', DEFAULT_DB_ALIAS) - self.ignore = options.pop('ignorenonexistent', False) + self.db = using + self.ignore = ignorenonexistent def _make_parser(self): """Create a hardened XML parser (no custom/external entities).""" |
