diff --git a/graphene/utils/deprecated.py b/graphene/utils/deprecated.py deleted file mode 100644 index 42c358fb3..000000000 --- a/graphene/utils/deprecated.py +++ /dev/null @@ -1,67 +0,0 @@ -import functools -import inspect -import warnings - -string_types = (type(b""), type("")) - - -def warn_deprecation(text): - warnings.warn(text, category=DeprecationWarning, stacklevel=2) - - -def deprecated(reason): - """ - This is a decorator which can be used to mark functions - as deprecated. It will result in a warning being emitted - when the function is used. - """ - - if isinstance(reason, string_types): - # The @deprecated is used with a 'reason'. - # - # .. code-block:: python - # - # @deprecated("please, use another function") - # def old_function(x, y): - # pass - - def decorator(func1): - if inspect.isclass(func1): - fmt1 = f"Call to deprecated class {func1.__name__} ({reason})." - else: - fmt1 = f"Call to deprecated function {func1.__name__} ({reason})." - - @functools.wraps(func1) - def new_func1(*args, **kwargs): - warn_deprecation(fmt1) - return func1(*args, **kwargs) - - return new_func1 - - return decorator - - elif inspect.isclass(reason) or inspect.isfunction(reason): - # The @deprecated is used without any 'reason'. - # - # .. code-block:: python - # - # @deprecated - # def old_function(x, y): - # pass - - func2 = reason - - if inspect.isclass(func2): - fmt2 = f"Call to deprecated class {func2.__name__}." - else: - fmt2 = f"Call to deprecated function {func2.__name__}." - - @functools.wraps(func2) - def new_func2(*args, **kwargs): - warn_deprecation(fmt2) - return func2(*args, **kwargs) - - return new_func2 - - else: - raise TypeError(repr(type(reason))) diff --git a/graphene/utils/resolve_only_args.py b/graphene/utils/resolve_only_args.py index 5efff2edc..088e62cab 100644 --- a/graphene/utils/resolve_only_args.py +++ b/graphene/utils/resolve_only_args.py @@ -1,6 +1,5 @@ from functools import wraps - -from .deprecated import deprecated +from typing_extensions import deprecated @deprecated("This function is deprecated") diff --git a/graphene/utils/tests/test_deprecated.py b/graphene/utils/tests/test_deprecated.py deleted file mode 100644 index 8a14434b6..000000000 --- a/graphene/utils/tests/test_deprecated.py +++ /dev/null @@ -1,75 +0,0 @@ -from pytest import raises - -from .. import deprecated -from ..deprecated import deprecated as deprecated_decorator -from ..deprecated import warn_deprecation - - -def test_warn_deprecation(mocker): - mocker.patch.object(deprecated.warnings, "warn") - - warn_deprecation("OH!") - deprecated.warnings.warn.assert_called_with( - "OH!", stacklevel=2, category=DeprecationWarning - ) - - -def test_deprecated_decorator(mocker): - mocker.patch.object(deprecated, "warn_deprecation") - - @deprecated_decorator - def my_func(): - return True - - result = my_func() - assert result - deprecated.warn_deprecation.assert_called_with( - "Call to deprecated function my_func." - ) - - -def test_deprecated_class(mocker): - mocker.patch.object(deprecated, "warn_deprecation") - - @deprecated_decorator - class X: - pass - - result = X() - assert result - deprecated.warn_deprecation.assert_called_with("Call to deprecated class X.") - - -def test_deprecated_decorator_text(mocker): - mocker.patch.object(deprecated, "warn_deprecation") - - @deprecated_decorator("Deprecation text") - def my_func(): - return True - - result = my_func() - assert result - deprecated.warn_deprecation.assert_called_with( - "Call to deprecated function my_func (Deprecation text)." - ) - - -def test_deprecated_class_text(mocker): - mocker.patch.object(deprecated, "warn_deprecation") - - @deprecated_decorator("Deprecation text") - class X: - pass - - result = X() - assert result - deprecated.warn_deprecation.assert_called_with( - "Call to deprecated class X (Deprecation text)." - ) - - -def test_deprecated_other_object(mocker): - mocker.patch.object(deprecated, "warn_deprecation") - - with raises(TypeError): - deprecated_decorator({}) diff --git a/setup.py b/setup.py index c41a368a2..0e2439868 100644 --- a/setup.py +++ b/setup.py @@ -83,6 +83,7 @@ def run_tests(self): install_requires=[ "graphql-core>=3.1,<3.3", "graphql-relay>=3.1,<3.3", + "typing-extensions>=4.1.0,<5" ], tests_require=tests_require, extras_require={"test": tests_require, "dev": dev_requires},