Skip to content

Commit 8b0e5ec

Browse files
author
nxexox
committed
fix for python3.4
1 parent a91e2d5 commit 8b0e5ec

File tree

3 files changed

+28
-18
lines changed

3 files changed

+28
-18
lines changed

rest_framework/serializers/fields.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
44
"""
55
import re
6-
import typing
6+
try:
7+
from typing import Mapping
8+
except ImportError:
9+
from collections import Mapping
710
import datetime
811
import json
912

@@ -48,7 +51,7 @@ def get_attribute(obj, attr_name):
4851
4952
"""
5053
# Search attribute.
51-
if isinstance(obj, typing.Mapping):
54+
if isinstance(obj, Mapping):
5255
attr = obj[attr_name]
5356
else:
5457
attr = getattr(obj, attr_name)
@@ -725,7 +728,7 @@ def to_internal_value(self, data):
725728
if html.is_html_input(data):
726729
data = html.parse_html_list(data)
727730

728-
if any((isinstance(data, type('')), isinstance(data, typing.Mapping), not hasattr(data, '__iter__'))):
731+
if any((isinstance(data, type('')), isinstance(data, Mapping), not hasattr(data, '__iter__'))):
729732
self.fail('not_a_list', input_type=type(data).__name__)
730733

731734
if not self.allow_empty and len(data) == 0:

rest_framework/serializers/serializers.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
"""
55
import copy
66
import inspect
7-
from typing import Mapping
7+
try:
8+
from typing import Mapping
9+
except ImportError:
10+
from collections import Mapping
11+
812
from collections import OrderedDict
913

1014
import six

rest_framework/tests/test_serializers.py

+17-14
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
66
"""
77
# import collections
8-
import typing
8+
try:
9+
from typing import Mapping
10+
except ImportError:
11+
from collections import Mapping
912
from unittest import TestCase
1013

1114
import six
@@ -312,7 +315,7 @@ def __create_object(self, data):
312315
313316
"""
314317
return type('object', (object,), {
315-
key: self.__create_object(val) if isinstance(val, typing.Mapping) else val
318+
key: self.__create_object(val) if isinstance(val, Mapping) else val
316319
for key, val in six.iteritems(data)
317320
})
318321

@@ -359,10 +362,10 @@ def test_data_serializer(self):
359362
# First we feed him empty data.
360363
ser = self.serializer_class(data=self.__create_params(fullness='empty'))
361364
assert ser.is_valid() is False, '`.is_valid()` must return False.'
362-
assert isinstance(ser.errors, typing.Mapping), \
365+
assert isinstance(ser.errors, Mapping), \
363366
'`.errors` must be dict. Reality: {}.'.format(type(ser.errors))
364367
assert len(ser.errors) > 0, '`.errors` must contain errors.'
365-
assert isinstance(ser.validated_data, typing.Mapping), \
368+
assert isinstance(ser.validated_data, Mapping), \
366369
'`.validated_data` must be dict. Reality: {}.'.format(type(ser.validated_data))
367370
assert len(ser.validated_data) == 0, '`.validated_data` must be empty. Reality: {},'.format(ser.validated_data)
368371

@@ -377,10 +380,10 @@ def test_data_serializer(self):
377380
# Now we feed the data partially.
378381
ser = self.serializer_class(data=self.__create_params(fullness='middle'))
379382
assert ser.is_valid() is False, '`.is_valid()` must return False.'
380-
assert isinstance(ser.errors, typing.Mapping), \
383+
assert isinstance(ser.errors, Mapping), \
381384
'`.errors` must be dict. Reality: {}.'.format(type(ser.errors))
382385
assert len(ser.errors) > 0, '`.errors` must contain errors.'
383-
assert isinstance(ser.validated_data, typing.Mapping), \
386+
assert isinstance(ser.validated_data, Mapping), \
384387
'`.validated_data` must be dict. Reality: {}.'.format(type(ser.validated_data))
385388
assert len(ser.validated_data) == 0, '`.validated_data` must be empty. Reality: {}.'.format(ser.validated_data)
386389

@@ -389,10 +392,10 @@ def test_data_serializer(self):
389392
ser = self.serializer_class(data=data)
390393
# Check logic.
391394
assert ser.is_valid() is True, '`.is_valid()` must return True.'
392-
assert isinstance(ser.errors, typing.Mapping), \
395+
assert isinstance(ser.errors, Mapping), \
393396
'`.errors` must be dict. Reality: {}.'.format(type(ser.errors))
394397
assert len(ser.errors) == 0, '`.errors` must be empty. Reality: {}.'.format(ser.errors)
395-
assert isinstance(ser.validated_data, typing.Mapping), \
398+
assert isinstance(ser.validated_data, Mapping), \
396399
'`.validated_data` must be dict. Reality: {}.'.format(ser.validated_data)
397400
assert len(ser.validated_data) > 0, '`.validated_data` must contain data.'
398401
# We check that all data is returned correctly.
@@ -410,12 +413,12 @@ def test_instance_object_serializer(self):
410413
"""
411414
# First we feed him an empty object.
412415
ser = self.serializer_class(instance=self.__create_object(self.__create_params(fullness='empty')))
413-
assert isinstance(ser.data, typing.Mapping), '`.data` must be dict. Reality: {}'.format(type(ser.data))
416+
assert isinstance(ser.data, Mapping), '`.data` must be dict. Reality: {}'.format(type(ser.data))
414417

415418
# Now we feed the data partially.
416419
data = self.__create_params(fullness='middle')
417420
ser = self.serializer_class(instance=self.__create_object(data))
418-
assert isinstance(ser.data, typing.Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
421+
assert isinstance(ser.data, Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
419422
for k, v in six.iteritems(ser.data):
420423
if k in data:
421424
assert v == data[k], 'Object attribute `{}` must be `{}`, reality `{}`.'.format(k, v, data[k])
@@ -425,7 +428,7 @@ def test_instance_object_serializer(self):
425428
# Now we feed the data completely.
426429
data = self.__create_params(fullness='full')
427430
ser = self.serializer_class(instance=self.__create_object(data))
428-
assert isinstance(ser.data, typing.Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
431+
assert isinstance(ser.data, Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
429432
for k, v in six.iteritems(ser.data):
430433
if k in data:
431434
assert v == data[k], 'Object attribute `{}` must be `{}`, reality `{}`.'.format(k, v, data[k])
@@ -440,12 +443,12 @@ def test_instance_dict_serializer(self):
440443
"""
441444
# First we feed him an empty object..
442445
ser = self.serializer_class(instance=self.__create_params(fullness='empty'))
443-
assert isinstance(ser.data, typing.Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
446+
assert isinstance(ser.data, Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
444447

445448
# Now we feed the data partially.
446449
data = self.__create_params(fullness='middle')
447450
ser = self.serializer_class(instance=data)
448-
assert isinstance(ser.data, typing.Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
451+
assert isinstance(ser.data, Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
449452
for k, v in six.iteritems(ser.data):
450453
if k in data:
451454
assert v == data[k], 'Object attribute`{}` must be `{}`, reality `{}`.'.format(k, v, data[k])
@@ -455,7 +458,7 @@ def test_instance_dict_serializer(self):
455458
# Now we feed the data completely.
456459
data = self.__create_params(fullness='full')
457460
ser = self.serializer_class(instance=data)
458-
assert isinstance(ser.data, typing.Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
461+
assert isinstance(ser.data, Mapping), '`.data` must be dict. Reality: {}.'.format(type(ser.data))
459462
for k, v in six.iteritems(ser.data):
460463
if k in data:
461464
assert v == data[k], 'Object attribute `{}` must be `{}`, reality `{}`.'.format(k, v, data[k])

0 commit comments

Comments
 (0)