diff --git a/.isort.cfg b/.isort.cfg index d4ed37be..76c6f842 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -1,2 +1,2 @@ [settings] -known_third_party = aniso8601,graphql,graphql_relay,promise,pytest,pytz,pyutils,setuptools,six,snapshottest,sphinx_graphene_theme +known_third_party = aniso8601,graphql,graphql_relay,promise,pytest,pytz,pyutils,setuptools,snapshottest,sphinx_graphene_theme diff --git a/graphene/pyutils/compat.py b/graphene/pyutils/compat.py index 3d3ce2fe..2581446b 100644 --- a/graphene/pyutils/compat.py +++ b/graphene/pyutils/compat.py @@ -1,7 +1,5 @@ from __future__ import absolute_import -import six - from graphql.pyutils.compat import Enum try: @@ -9,13 +7,6 @@ try: except ImportError: from .signature import signature -if six.PY2: - def func_name(func): - return func.func_name - - -else: - - def func_name(func): - return func.__name__ +def func_name(func): + return func.__name__ diff --git a/graphene/test/__init__.py b/graphene/test/__init__.py index dab3b51b..7d554fb6 100644 --- a/graphene/test/__init__.py +++ b/graphene/test/__init__.py @@ -1,5 +1,4 @@ from promise import Promise, is_thenable -import six from graphql.error import format_error as format_graphql_error from graphql.error import GraphQLError @@ -9,8 +8,7 @@ from graphene.types.schema import Schema def default_format_error(error): if isinstance(error, GraphQLError): return format_graphql_error(error) - - return {"message": six.text_type(error)} + return {"message": str(error)} def format_execution_result(execution_result, format_error): diff --git a/graphene/types/base.py b/graphene/types/base.py index f43feb47..3bbebbe3 100644 --- a/graphene/types/base.py +++ b/graphene/types/base.py @@ -1,9 +1,7 @@ from ..utils.subclass_with_meta import SubclassWithMeta from ..utils.trim_docstring import trim_docstring -import six -if six.PY3: - from typing import Type +from typing import Type class BaseOptions(object): diff --git a/graphene/types/datetime.py b/graphene/types/datetime.py index 3519d76d..ca96547f 100644 --- a/graphene/types/datetime.py +++ b/graphene/types/datetime.py @@ -4,7 +4,6 @@ import datetime from aniso8601 import parse_date, parse_datetime, parse_time from graphql.language import ast -from six import string_types from .scalars import Scalar @@ -35,7 +34,7 @@ class Date(Scalar): try: if isinstance(value, datetime.date): return value - elif isinstance(value, string_types): + elif isinstance(value, str): return parse_date(value) except ValueError: return None @@ -65,7 +64,7 @@ class DateTime(Scalar): try: if isinstance(value, datetime.datetime): return value - elif isinstance(value, string_types): + elif isinstance(value, str): return parse_datetime(value) except ValueError: return None @@ -95,7 +94,7 @@ class Time(Scalar): try: if isinstance(value, datetime.time): return value - elif isinstance(value, string_types): + elif isinstance(value, str): return parse_time(value) except ValueError: return None diff --git a/graphene/types/enum.py b/graphene/types/enum.py index 8c95efbe..38dada0f 100644 --- a/graphene/types/enum.py +++ b/graphene/types/enum.py @@ -1,7 +1,5 @@ from collections import OrderedDict -import six - from graphene.utils.subclass_with_meta import SubclassWithMeta_Meta from ..pyutils.compat import Enum as PyEnum @@ -66,7 +64,7 @@ class EnumMeta(SubclassWithMeta_Meta): return type(meta_class.enum.__name__, (Enum,), {"Meta": meta_class}) -class Enum(six.with_metaclass(EnumMeta, UnmountedType, BaseType)): +class Enum(UnmountedType, BaseType, metaclass=EnumMeta): """ Enum type definition diff --git a/graphene/types/scalars.py b/graphene/types/scalars.py index c5f43787..769c406f 100644 --- a/graphene/types/scalars.py +++ b/graphene/types/scalars.py @@ -1,11 +1,9 @@ -import six from graphql.language.ast import BooleanValue, FloatValue, IntValue, StringValue from .base import BaseOptions, BaseType from .unmountedtype import UnmountedType -if six.PY3: - from typing import Any +from typing import Any class ScalarOptions(BaseOptions): @@ -114,7 +112,7 @@ class String(Scalar): def coerce_string(value): if isinstance(value, bool): return u"true" if value else u"false" - return six.text_type(value) + return str(value) serialize = coerce_string parse_value = coerce_string diff --git a/graphene/types/tests/test_enum.py b/graphene/types/tests/test_enum.py index 6086f54c..b29764f2 100644 --- a/graphene/types/tests/test_enum.py +++ b/graphene/types/tests/test_enum.py @@ -1,5 +1,3 @@ -import six - from ..argument import Argument from ..enum import Enum, PyEnum from ..field import Field @@ -115,8 +113,6 @@ def test_enum_from_builtin_enum_accepts_lambda_description(): def test_enum_from_python3_enum_uses_enum_doc(): - if not six.PY3: - return from enum import Enum as PyEnum diff --git a/graphene/types/utils.py b/graphene/types/utils.py index b026355b..a7e23572 100644 --- a/graphene/types/utils.py +++ b/graphene/types/utils.py @@ -2,8 +2,6 @@ import inspect from collections import OrderedDict from functools import partial -from six import string_types - from ..utils.module_loading import import_string from .mountedtype import MountedType from .unmountedtype import UnmountedType @@ -39,7 +37,7 @@ def yank_fields_from_attrs(attrs, _as=None, sort=True): def get_type(_type): - if isinstance(_type, string_types): + if isinstance(_type, str): return import_string(_type) if inspect.isfunction(_type) or isinstance(_type, partial): return _type() diff --git a/graphene/types/uuid.py b/graphene/types/uuid.py index 0628200b..d6d35eed 100644 --- a/graphene/types/uuid.py +++ b/graphene/types/uuid.py @@ -1,5 +1,4 @@ from __future__ import absolute_import -import six from uuid import UUID as _UUID from graphql.language import ast @@ -15,7 +14,7 @@ class UUID(Scalar): @staticmethod def serialize(uuid): - if isinstance(uuid, six.string_types): + if isinstance(uuid, str): uuid = _UUID(uuid) assert isinstance(uuid, _UUID), "Expected UUID instance, received {}".format( diff --git a/graphene/utils/annotate.py b/graphene/utils/annotate.py index 43a26ef6..f62586d6 100644 --- a/graphene/utils/annotate.py +++ b/graphene/utils/annotate.py @@ -1,11 +1,9 @@ -import six - from ..pyutils.compat import func_name, signature from .deprecated import warn_deprecation def annotate(_func=None, _trigger_warning=True, **annotations): - if not six.PY2 and _trigger_warning: + if _trigger_warning: warn_deprecation( "annotate is intended for use in Python 2 only, as you can use type annotations Python 3.\n" "Read more in https://docs.python.org/3/library/typing.html" diff --git a/graphene/utils/subclass_with_meta.py b/graphene/utils/subclass_with_meta.py index 01fc5375..600de3d8 100644 --- a/graphene/utils/subclass_with_meta.py +++ b/graphene/utils/subclass_with_meta.py @@ -1,7 +1,5 @@ from inspect import isclass -import six - from ..pyutils.init_subclass import InitSubclassMeta from .props import props @@ -18,7 +16,7 @@ class SubclassWithMeta_Meta(InitSubclassMeta): return "<{} meta={}>".format(cls.__name__, repr(cls._meta)) -class SubclassWithMeta(six.with_metaclass(SubclassWithMeta_Meta)): +class SubclassWithMeta(metaclass=SubclassWithMeta_Meta): """This class improves __init_subclass__ to receive automatically the options from meta""" # We will only have the metaclass in Python 2 diff --git a/setup.py b/setup.py index c0c65f61..56d3cdd0 100644 --- a/setup.py +++ b/setup.py @@ -55,7 +55,6 @@ tests_require = [ "snapshottest", "coveralls", "promise", - "six", "mock", "pytz", "iso8601", @@ -86,7 +85,6 @@ setup( keywords="api graphql protocol rest relay graphene", packages=find_packages(exclude=["tests", "tests.*", "examples"]), install_requires=[ - "six>=1.10.0,<2", "graphql-core>=2.1,<3", "graphql-relay>=2,<3", "aniso8601>=3,<=7", diff --git a/tox.ini b/tox.ini index be45ceea..0320b4d6 100644 --- a/tox.ini +++ b/tox.ini @@ -32,7 +32,6 @@ commands = [testenv:mypy] deps = mypy - types-six commands = mypy graphene