mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-18 04:20:53 +03:00
Fix DeprecationWarning when accessing collections.abc classes via collections (#6268)
* Use compat version of collections.abc.Mapping Since the Mapping class will no longer be available to import directly from the collections module in Python 3.8, we should use the compatibility helper introduced in #6154 in the fields module. * Alias and use compat version of collections.abc.MutableMapping Since the MutableMapping class will no longer be available to import directly from the collections module in Python 3.8, we should create an alias for it in the compat module and use that instead.
This commit is contained in:
parent
286cf57a8d
commit
07c5c968ce
|
@ -12,10 +12,10 @@ from django.views.generic import View
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Python 3
|
# Python 3
|
||||||
from collections.abc import Mapping # noqa
|
from collections.abc import Mapping, MutableMapping # noqa
|
||||||
except ImportError:
|
except ImportError:
|
||||||
# Python 2.7
|
# Python 2.7
|
||||||
from collections import Mapping # noqa
|
from collections import Mapping, MutableMapping # noqa
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from django.urls import ( # noqa
|
from django.urls import ( # noqa
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import collections
|
|
||||||
import copy
|
import copy
|
||||||
import datetime
|
import datetime
|
||||||
import decimal
|
import decimal
|
||||||
|
@ -33,7 +32,7 @@ from pytz.exceptions import InvalidTimeError
|
||||||
|
|
||||||
from rest_framework import ISO_8601
|
from rest_framework import ISO_8601
|
||||||
from rest_framework.compat import (
|
from rest_framework.compat import (
|
||||||
MaxLengthValidator, MaxValueValidator, MinLengthValidator,
|
Mapping, MaxLengthValidator, MaxValueValidator, MinLengthValidator,
|
||||||
MinValueValidator, ProhibitNullCharactersValidator, unicode_repr,
|
MinValueValidator, ProhibitNullCharactersValidator, unicode_repr,
|
||||||
unicode_to_repr
|
unicode_to_repr
|
||||||
)
|
)
|
||||||
|
@ -96,7 +95,7 @@ def get_attribute(instance, attrs):
|
||||||
"""
|
"""
|
||||||
for attr in attrs:
|
for attr in attrs:
|
||||||
try:
|
try:
|
||||||
if isinstance(instance, collections.Mapping):
|
if isinstance(instance, Mapping):
|
||||||
instance = instance[attr]
|
instance = instance[attr]
|
||||||
else:
|
else:
|
||||||
instance = getattr(instance, attr)
|
instance = getattr(instance, attr)
|
||||||
|
@ -1661,7 +1660,7 @@ class ListField(Field):
|
||||||
"""
|
"""
|
||||||
if html.is_html_input(data):
|
if html.is_html_input(data):
|
||||||
data = html.parse_html_list(data, default=[])
|
data = html.parse_html_list(data, default=[])
|
||||||
if isinstance(data, type('')) or isinstance(data, collections.Mapping) or not hasattr(data, '__iter__'):
|
if isinstance(data, type('')) or isinstance(data, Mapping) or not hasattr(data, '__iter__'):
|
||||||
self.fail('not_a_list', input_type=type(data).__name__)
|
self.fail('not_a_list', input_type=type(data).__name__)
|
||||||
if not self.allow_empty and len(data) == 0:
|
if not self.allow_empty and len(data) == 0:
|
||||||
self.fail('empty')
|
self.fail('empty')
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import collections
|
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
from rest_framework.compat import unicode_to_repr
|
from rest_framework.compat import MutableMapping, unicode_to_repr
|
||||||
from rest_framework.utils import json
|
from rest_framework.utils import json
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,7 +129,7 @@ class NestedBoundField(BoundField):
|
||||||
return self.__class__(self._field, values, self.errors, self._prefix)
|
return self.__class__(self._field, values, self.errors, self._prefix)
|
||||||
|
|
||||||
|
|
||||||
class BindingDict(collections.MutableMapping):
|
class BindingDict(MutableMapping):
|
||||||
"""
|
"""
|
||||||
This dict-like object is used to store fields on a serializer.
|
This dict-like object is used to store fields on a serializer.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user