From ea8fae00dc097d0be629c85828017083495ab173 Mon Sep 17 00:00:00 2001 From: Thorsten Franzel Date: Sat, 13 Jul 2019 22:49:30 +0200 Subject: [PATCH 1/2] Fix imports for upcoming DRF version --- src/drf_yasg/generators.py | 5 +++-- testproj/snippets/serializers.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/drf_yasg/generators.py b/src/drf_yasg/generators.py index 9011bbac..43cb38a0 100644 --- a/src/drf_yasg/generators.py +++ b/src/drf_yasg/generators.py @@ -7,9 +7,10 @@ from coreapi.compat import urlparse from rest_framework import versioning from rest_framework.compat import URLPattern, URLResolver, get_original_route +from rest_framework.schemas import SchemaGenerator from rest_framework.schemas.generators import EndpointEnumerator as _EndpointEnumerator -from rest_framework.schemas.generators import SchemaGenerator, endpoint_ordering, get_pk_name -from rest_framework.schemas.inspectors import get_pk_description +from rest_framework.schemas.generators import endpoint_ordering, get_pk_name +from rest_framework.schemas.utils import get_pk_description from rest_framework.settings import api_settings from . import openapi diff --git a/testproj/snippets/serializers.py b/testproj/snippets/serializers.py index a34156e8..e3b63a8c 100644 --- a/testproj/snippets/serializers.py +++ b/testproj/snippets/serializers.py @@ -1,8 +1,8 @@ from decimal import Decimal from django.contrib.auth import get_user_model +from django.core.validators import MaxLengthValidator, MinValueValidator from rest_framework import serializers -from rest_framework.compat import MaxLengthValidator, MinValueValidator from snippets.models import LANGUAGE_CHOICES, STYLE_CHOICES, Snippet, SnippetViewer From 126ecb05a6c177369240d4b301238824c174ccda Mon Sep 17 00:00:00 2001 From: Thorsten Franzel Date: Mon, 15 Jul 2019 21:41:40 +0200 Subject: [PATCH 2/2] add compatability checks and new tox target --- requirements/testproj.txt | 4 +++- src/drf_yasg/generators.py | 12 ++++++++++-- testproj/snippets/serializers.py | 7 ++++++- tox.ini | 2 ++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/requirements/testproj.txt b/requirements/testproj.txt index 13a56113..b79d77cc 100644 --- a/requirements/testproj.txt +++ b/requirements/testproj.txt @@ -3,7 +3,9 @@ Pillow>=4.3.0 django-cors-headers>=2.1.0 django-filter>=1.1.0,<2.0; python_version == "2.7" django-filter>=1.1.0; python_version >= "3.5" -djangorestframework-camel-case>=0.2.0 +#djangorestframework-camel-case>=0.2.0 +# tempory replacement of broken lib +-e git+https://github.com/tfranzel/djangorestframework-camel-case.git@bd556d38fa7382acadfe91d93d92d99c663248a9#egg=djangorestframework_camel_case djangorestframework-recursive>=0.1.2 dj-database-url>=0.4.2 user_agents>=1.1.0 diff --git a/src/drf_yasg/generators.py b/src/drf_yasg/generators.py index 43cb38a0..9c9a3931 100644 --- a/src/drf_yasg/generators.py +++ b/src/drf_yasg/generators.py @@ -4,15 +4,23 @@ from collections import OrderedDict, defaultdict import uritemplate +import rest_framework from coreapi.compat import urlparse from rest_framework import versioning from rest_framework.compat import URLPattern, URLResolver, get_original_route -from rest_framework.schemas import SchemaGenerator from rest_framework.schemas.generators import EndpointEnumerator as _EndpointEnumerator from rest_framework.schemas.generators import endpoint_ordering, get_pk_name -from rest_framework.schemas.utils import get_pk_description + from rest_framework.settings import api_settings +from packaging.version import Version +if Version(rest_framework.__version__) < Version('3.10'): + from rest_framework.schemas.generators import SchemaGenerator + from rest_framework.schemas.inspectors import get_pk_description +else: + from rest_framework.schemas import SchemaGenerator + from rest_framework.schemas.utils import get_pk_description + from . import openapi from .app_settings import swagger_settings from .errors import SwaggerGenerationError diff --git a/testproj/snippets/serializers.py b/testproj/snippets/serializers.py index e3b63a8c..4bbb8ad8 100644 --- a/testproj/snippets/serializers.py +++ b/testproj/snippets/serializers.py @@ -1,7 +1,12 @@ +import rest_framework from decimal import Decimal from django.contrib.auth import get_user_model -from django.core.validators import MaxLengthValidator, MinValueValidator +from packaging.version import Version +if Version(rest_framework.__version__) < Version('3.10'): + from rest_framework.compat import MaxLengthValidator, MinValueValidator +else: + from django.core.validators import MaxLengthValidator, MinValueValidator from rest_framework import serializers from snippets.models import LANGUAGE_CHOICES, STYLE_CHOICES, Snippet, SnippetViewer diff --git a/tox.ini b/tox.ini index 6f3d2836..644d5a0d 100644 --- a/tox.ini +++ b/tox.ini @@ -9,6 +9,7 @@ envlist = py27-django111-drf{38,39}, py{35,36}-django{111,21,22}-drf{38,39}, py37-django{21,22}-drf{38,39}, + py37-django{21,22}-drf310, djmaster, lint, docs [testenv:.package] @@ -23,6 +24,7 @@ deps = drf38: djangorestframework>=3.8,<3.9 drf39: djangorestframework>=3.9,<3.10 + drf310: djangorestframework>=3.10 typing: typing>=3.6.6