|
15 | 15 | import copy |
16 | 16 | import inspect |
17 | 17 | import traceback |
18 | | -from collections import OrderedDict, defaultdict |
| 18 | +from collections import defaultdict |
19 | 19 | from collections.abc import Mapping |
20 | 20 |
|
21 | 21 | from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured |
@@ -308,7 +308,7 @@ def visit(name): |
308 | 308 | for name, f in base._declared_fields.items() if name not in known |
309 | 309 | ] |
310 | 310 |
|
311 | | - return OrderedDict(base_fields + fields) |
| 311 | + return dict(base_fields + fields) |
312 | 312 |
|
313 | 313 | def __new__(cls, name, bases, attrs): |
314 | 314 | attrs['_declared_fields'] = cls._get_declared_fields(bases, attrs) |
@@ -393,20 +393,20 @@ def get_initial(self): |
393 | 393 | if hasattr(self, 'initial_data'): |
394 | 394 | # initial_data may not be a valid type |
395 | 395 | if not isinstance(self.initial_data, Mapping): |
396 | | - return OrderedDict() |
| 396 | + return {} |
397 | 397 |
|
398 | | - return OrderedDict([ |
399 | | - (field_name, field.get_value(self.initial_data)) |
| 398 | + return { |
| 399 | + field_name: field.get_value(self.initial_data) |
400 | 400 | for field_name, field in self.fields.items() |
401 | 401 | if (field.get_value(self.initial_data) is not empty) and |
402 | 402 | not field.read_only |
403 | | - ]) |
| 403 | + } |
404 | 404 |
|
405 | | - return OrderedDict([ |
406 | | - (field.field_name, field.get_initial()) |
| 405 | + return { |
| 406 | + field.field_name: field.get_initial() |
407 | 407 | for field in self.fields.values() |
408 | 408 | if not field.read_only |
409 | | - ]) |
| 409 | + } |
410 | 410 |
|
411 | 411 | def get_value(self, dictionary): |
412 | 412 | # We override the default field access in order to support |
@@ -441,7 +441,7 @@ def _read_only_defaults(self): |
441 | 441 | if (field.read_only) and (field.default != empty) and (field.source != '*') and ('.' not in field.source) |
442 | 442 | ] |
443 | 443 |
|
444 | | - defaults = OrderedDict() |
| 444 | + defaults = {} |
445 | 445 | for field in fields: |
446 | 446 | try: |
447 | 447 | default = field.get_default() |
@@ -474,8 +474,8 @@ def to_internal_value(self, data): |
474 | 474 | api_settings.NON_FIELD_ERRORS_KEY: [message] |
475 | 475 | }, code='invalid') |
476 | 476 |
|
477 | | - ret = OrderedDict() |
478 | | - errors = OrderedDict() |
| 477 | + ret = {} |
| 478 | + errors = {} |
479 | 479 | fields = self._writable_fields |
480 | 480 |
|
481 | 481 | for field in fields: |
@@ -503,7 +503,7 @@ def to_representation(self, instance): |
503 | 503 | """ |
504 | 504 | Object instance -> Dict of primitive datatypes. |
505 | 505 | """ |
506 | | - ret = OrderedDict() |
| 506 | + ret = {} |
507 | 507 | fields = self._readable_fields |
508 | 508 |
|
509 | 509 | for field in fields: |
@@ -1061,7 +1061,7 @@ def get_fields(self): |
1061 | 1061 | ) |
1062 | 1062 |
|
1063 | 1063 | # Determine the fields that should be included on the serializer. |
1064 | | - fields = OrderedDict() |
| 1064 | + fields = {} |
1065 | 1065 |
|
1066 | 1066 | for field_name in field_names: |
1067 | 1067 | # If the field is explicitly declared on the class then use that. |
@@ -1546,16 +1546,16 @@ def get_unique_together_validators(self): |
1546 | 1546 | # which may map onto a model field. Any dotted field name lookups |
1547 | 1547 | # cannot map to a field, and must be a traversal, so we're not |
1548 | 1548 | # including those. |
1549 | | - field_sources = OrderedDict( |
1550 | | - (field.field_name, field.source) for field in self._writable_fields |
| 1549 | + field_sources = { |
| 1550 | + field.field_name: field.source for field in self._writable_fields |
1551 | 1551 | if (field.source != '*') and ('.' not in field.source) |
1552 | | - ) |
| 1552 | + } |
1553 | 1553 |
|
1554 | 1554 | # Special Case: Add read_only fields with defaults. |
1555 | | - field_sources.update(OrderedDict( |
1556 | | - (field.field_name, field.source) for field in self.fields.values() |
| 1555 | + field_sources.update({ |
| 1556 | + field.field_name: field.source for field in self.fields.values() |
1557 | 1557 | if (field.read_only) and (field.default != empty) and (field.source != '*') and ('.' not in field.source) |
1558 | | - )) |
| 1558 | + }) |
1559 | 1559 |
|
1560 | 1560 | # Invert so we can find the serializer field names that correspond to |
1561 | 1561 | # the model field names in the unique_together sets. This also allows |
|
0 commit comments