Fix unicode attribute error if typing installed on py2.7 (#363)
parent
91ef83e830
commit
b5aba7243d
|
|
@ -2,6 +2,7 @@ import datetime
|
||||||
import inspect
|
import inspect
|
||||||
import logging
|
import logging
|
||||||
import operator
|
import operator
|
||||||
|
import sys
|
||||||
import uuid
|
import uuid
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
@ -489,6 +490,9 @@ hinting_type_info = [
|
||||||
(datetime.date, (openapi.TYPE_STRING, openapi.FORMAT_DATE)),
|
(datetime.date, (openapi.TYPE_STRING, openapi.FORMAT_DATE)),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if sys.version_info < (3, 0):
|
||||||
|
hinting_type_info.append((unicode, (openapi.TYPE_STRING, None)))
|
||||||
|
|
||||||
if typing:
|
if typing:
|
||||||
def inspect_collection_hint_class(hint_class):
|
def inspect_collection_hint_class(hint_class):
|
||||||
args = hint_class.__args__
|
args = hint_class.__args__
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import sys
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
|
@ -6,7 +8,10 @@ from snippets.models import Snippet
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import typing # noqa: F401
|
import typing # noqa: F401
|
||||||
|
if sys.version_info >= (3, 4):
|
||||||
from .method_serializers_with_typing import MethodFieldExampleSerializer
|
from .method_serializers_with_typing import MethodFieldExampleSerializer
|
||||||
|
else:
|
||||||
|
from .method_serializers_without_typing import MethodFieldExampleSerializer
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from .method_serializers_without_typing import MethodFieldExampleSerializer
|
from .method_serializers_without_typing import MethodFieldExampleSerializer
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -204,6 +204,7 @@ def test_action_mapping():
|
||||||
|
|
||||||
@pytest.mark.parametrize('choices, expected_type', [
|
@pytest.mark.parametrize('choices, expected_type', [
|
||||||
(['A', 'B'], openapi.TYPE_STRING),
|
(['A', 'B'], openapi.TYPE_STRING),
|
||||||
|
([u'A', u'B'], openapi.TYPE_STRING),
|
||||||
([123, 456], openapi.TYPE_INTEGER),
|
([123, 456], openapi.TYPE_INTEGER),
|
||||||
([1.2, 3.4], openapi.TYPE_NUMBER),
|
([1.2, 3.4], openapi.TYPE_NUMBER),
|
||||||
(['A', 456], openapi.TYPE_STRING)
|
(['A', 456], openapi.TYPE_STRING)
|
||||||
|
|
|
||||||
3
tox.ini
3
tox.ini
|
|
@ -5,6 +5,7 @@ isolated_build_env = .package
|
||||||
|
|
||||||
# https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django
|
# https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django
|
||||||
envlist =
|
envlist =
|
||||||
|
py27-django111-drf39-typing,
|
||||||
py{27,34,35,36}-django111-drf{37,38,39},
|
py{27,34,35,36}-django111-drf{37,38,39},
|
||||||
py{34,35,36,37}-django20-drf{37,38,39},
|
py{34,35,36,37}-django20-drf{37,38,39},
|
||||||
py{35,36,37}-django21-drf{37,38,39},
|
py{35,36,37}-django21-drf{37,38,39},
|
||||||
|
|
@ -26,6 +27,8 @@ deps =
|
||||||
drf38: djangorestframework>=3.8.0,<3.9
|
drf38: djangorestframework>=3.8.0,<3.9
|
||||||
drf39: djangorestframework>=3.9,<3.10
|
drf39: djangorestframework>=3.9,<3.10
|
||||||
|
|
||||||
|
typing: typing>=3.6.6
|
||||||
|
|
||||||
# test with the latest build of django-rest-framework to get early warning of compatibility issues
|
# test with the latest build of django-rest-framework to get early warning of compatibility issues
|
||||||
djmaster: https://github.com/encode/django-rest-framework/archive/master.tar.gz
|
djmaster: https://github.com/encode/django-rest-framework/archive/master.tar.gz
|
||||||
djmaster: https://github.com/django/django/archive/master.tar.gz
|
djmaster: https://github.com/django/django/archive/master.tar.gz
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue