diff --git a/graphene_django/converter.py b/graphene_django/converter.py index bd8f79d..36116ed 100644 --- a/graphene_django/converter.py +++ b/graphene_django/converter.py @@ -1,4 +1,6 @@ from collections import OrderedDict +from functools import singledispatch + from django.db import models from django.utils.encoding import force_str from django.utils.module_loading import import_string @@ -26,9 +28,6 @@ from graphql import assert_valid_name from .settings import graphene_settings from .compat import ArrayField, HStoreField, JSONField, RangeField from .fields import DjangoListField, DjangoConnectionField -from .utils import import_single_dispatch - -singledispatch = import_single_dispatch() def convert_choice_name(name): diff --git a/graphene_django/forms/converter.py b/graphene_django/forms/converter.py index 8916456..7b154b4 100644 --- a/graphene_django/forms/converter.py +++ b/graphene_django/forms/converter.py @@ -1,13 +1,11 @@ +from functools import singledispatch + from django import forms from django.core.exceptions import ImproperlyConfigured from graphene import ID, Boolean, Float, Int, List, String, UUID, Date, DateTime, Time from .forms import GlobalIDFormField, GlobalIDMultipleChoiceField -from ..utils import import_single_dispatch - - -singledispatch = import_single_dispatch() @singledispatch diff --git a/graphene_django/rest_framework/serializer_converter.py b/graphene_django/rest_framework/serializer_converter.py index 82a113a..b26e5e6 100644 --- a/graphene_django/rest_framework/serializer_converter.py +++ b/graphene_django/rest_framework/serializer_converter.py @@ -1,3 +1,5 @@ +from functools import singledispatch + from django.core.exceptions import ImproperlyConfigured from rest_framework import serializers @@ -5,11 +7,8 @@ import graphene from ..registry import get_global_registry from ..converter import convert_choices_to_named_enum_with_descriptions -from ..utils import import_single_dispatch from .types import DictType -singledispatch = import_single_dispatch() - @singledispatch def get_graphene_type_from_serializer_field(field): diff --git a/graphene_django/utils/__init__.py b/graphene_django/utils/__init__.py index 9d8658b..671b060 100644 --- a/graphene_django/utils/__init__.py +++ b/graphene_django/utils/__init__.py @@ -4,7 +4,6 @@ from .utils import ( camelize, get_model_fields, get_reverse_fields, - import_single_dispatch, is_valid_django_model, maybe_queryset, ) @@ -16,6 +15,5 @@ __all__ = [ "get_model_fields", "camelize", "is_valid_django_model", - "import_single_dispatch", "GraphQLTestCase", ] diff --git a/graphene_django/utils/utils.py b/graphene_django/utils/utils.py index 3bee5aa..c5ea85b 100644 --- a/graphene_django/utils/utils.py +++ b/graphene_django/utils/utils.py @@ -76,26 +76,3 @@ def get_model_fields(model): def is_valid_django_model(model): return inspect.isclass(model) and issubclass(model, models.Model) - - -def import_single_dispatch(): - try: - from functools import singledispatch - except ImportError: - singledispatch = None - - if not singledispatch: - try: - from singledispatch import singledispatch - except ImportError: - pass - - if not singledispatch: - raise Exception( - "It seems your python version does not include " - "functools.singledispatch. Please install the 'singledispatch' " - "package. More information here: " - "https://pypi.python.org/pypi/singledispatch" - ) - - return singledispatch diff --git a/setup.py b/setup.py index 36882d2..3639fb1 100644 --- a/setup.py +++ b/setup.py @@ -55,7 +55,6 @@ setup( "graphene>=2.1.7,<3", "graphql-core>=2.1.0,<3", "Django>=1.11,!=2.0.*,!=2.1.*", - "singledispatch>=3.4.0.3", "promise>=2.1", ], setup_requires=["pytest-runner"],