diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b9e57b519..b4f023f3f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,12 +8,29 @@ jobs: strategy: max-parallel: 4 matrix: - django: ["1.11", "2.2", "3.0", "3.1"] - python-version: ["3.6", "3.7", "3.8"] + django: ["2.2", "3.0", "3.1", "3.2", "4.0"] + python-version: ["3.8", "3.9"] include: - - django: "1.11" - python-version: "2.7" - + - django: "2.2" + python-version: "3.6" + - django: "2.2" + python-version: "3.7" + - django: "3.0" + python-version: "3.6" + - django: "3.0" + python-version: "3.7" + - django: "3.1" + python-version: "3.6" + - django: "3.1" + python-version: "3.7" + - django: "3.2" + python-version: "3.6" + - django: "3.2" + python-version: "3.7" + - django: "3.2" + python-version: "3.10" + - django: "4.0" + python-version: "3.10" steps: - uses: actions/checkout@v1 - name: Set up Python ${{ matrix.python-version }} diff --git a/graphene_django/tests/models.py b/graphene_django/tests/models.py index 9e7be29e5..659cf6df4 100644 --- a/graphene_django/tests/models.py +++ b/graphene_django/tests/models.py @@ -1,7 +1,7 @@ from __future__ import absolute_import from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ CHOICES = ((1, "this"), (2, _("that"))) diff --git a/graphene_django/tests/test_converter.py b/graphene_django/tests/test_converter.py index df3771c4e..7b38a45fd 100644 --- a/graphene_django/tests/test_converter.py +++ b/graphene_django/tests/test_converter.py @@ -2,7 +2,7 @@ import pytest from django.db import models -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from py.test import raises import graphene diff --git a/graphene_django/tests/urls.py b/graphene_django/tests/urls.py index 66b3fc4d2..f2faae2bd 100644 --- a/graphene_django/tests/urls.py +++ b/graphene_django/tests/urls.py @@ -1,8 +1,8 @@ -from django.conf.urls import url +from django.urls import re_path from ..views import GraphQLView urlpatterns = [ - url(r"^graphql/batch", GraphQLView.as_view(batch=True)), - url(r"^graphql", GraphQLView.as_view(graphiql=True)), + re_path(r"^graphql/batch", GraphQLView.as_view(batch=True)), + re_path(r"^graphql", GraphQLView.as_view(graphiql=True)), ] diff --git a/graphene_django/tests/urls_inherited.py b/graphene_django/tests/urls_inherited.py index 6fa801916..815d04db8 100644 --- a/graphene_django/tests/urls_inherited.py +++ b/graphene_django/tests/urls_inherited.py @@ -1,4 +1,4 @@ -from django.conf.urls import url +from django.urls import re_path from ..views import GraphQLView from .schema_view import schema @@ -10,4 +10,4 @@ class CustomGraphQLView(GraphQLView): pretty = True -urlpatterns = [url(r"^graphql/inherited/$", CustomGraphQLView.as_view())] +urlpatterns = [re_path(r"^graphql/inherited/$", CustomGraphQLView.as_view())] diff --git a/graphene_django/tests/urls_pretty.py b/graphene_django/tests/urls_pretty.py index 1133c870f..635d4f390 100644 --- a/graphene_django/tests/urls_pretty.py +++ b/graphene_django/tests/urls_pretty.py @@ -1,6 +1,6 @@ -from django.conf.urls import url +from django.urls import re_path from ..views import GraphQLView from .schema_view import schema -urlpatterns = [url(r"^graphql", GraphQLView.as_view(schema=schema, pretty=True))] +urlpatterns = [re_path(r"^graphql", GraphQLView.as_view(schema=schema, pretty=True))] diff --git a/graphene_django/utils/utils.py b/graphene_django/utils/utils.py index b1c9a7d0c..ff3b7f3ca 100644 --- a/graphene_django/utils/utils.py +++ b/graphene_django/utils/utils.py @@ -3,7 +3,7 @@ import six from django.db import connection, models, transaction from django.db.models.manager import Manager -from django.utils.encoding import force_text +from django.utils.encoding import force_str from django.utils.functional import Promise from graphene.utils.str_converters import to_camel_case @@ -26,7 +26,7 @@ def isiterable(value): def _camelize_django_str(s): if isinstance(s, Promise): - s = force_text(s) + s = force_str(s) return to_camel_case(s) if isinstance(s, six.string_types) else s diff --git a/tox.ini b/tox.ini index d2d3065f3..e8d01881d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,24 +1,26 @@ [tox] envlist = - py{27,35,36,37,38}-django{111,20,21,22,master}, - py{36,37,38}-django{30,31}, + py{36,37,38,39}-django22, + py{36,37,38,39}-django{30,31}, + py{36,37,38,39,310}-django32, + py{38,39,310}-django{40,master}, black,flake8 [gh-actions] python = - 2.7: py27 3.6: py36 3.7: py37 3.8: py38 + 3.9: py39 + 3.10: py310 [gh-actions:env] DJANGO = - 1.11: django111 - 2.0: django20 - 2.1: django21 2.2: django22 3.0: django30 3.1: django31 + 3.2: django32 + 4.0: django40 master: djangomaster [testenv] @@ -29,13 +31,11 @@ setenv = deps = -e.[test] psycopg2-binary - django111: Django>=1.11,<2.0 - django111: djangorestframework<3.12 - django20: Django>=2.0,<2.1 - django21: Django>=2.1,<2.2 django22: Django>=2.2,<3.0 - django30: Django>=3.0a1,<3.1 + django30: Django>=3.0,<3.1 django31: Django>=3.1,<3.2 + django32: Django>=3.2,<4.0 + django40: Django>=4.0,<4.1 djangomaster: https://github.com/django/django/archive/master.zip commands = {posargs:py.test --cov=graphene_django graphene_django examples}