From 02a6c1c60300e599f1922716dd6ca63023c44d8d Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Mon, 3 Oct 2016 19:59:01 -0700 Subject: [PATCH] Isolated unbound function logic in utils --- graphene/types/typemap.py | 6 +++--- graphene/utils/get_unbound_function.py | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 graphene/utils/get_unbound_function.py diff --git a/graphene/types/typemap.py b/graphene/types/typemap.py index ecaedf75..c2b47279 100644 --- a/graphene/types/typemap.py +++ b/graphene/types/typemap.py @@ -10,6 +10,7 @@ from graphql.execution.executor import get_default_resolve_type_fn from graphql.type.typemap import GraphQLTypeMap from ..utils.str_converters import to_camel_case +from ..utils.get_unbound_function import get_unbound_function from .dynamic import Dynamic from .enum import Enum from .inputobjecttype import InputObjectType @@ -251,11 +252,10 @@ class TypeMap(GraphQLTypeMap): if interface_resolver: break resolver = interface_resolver + # Only if is not decorated with classmethod if resolver: - if not getattr(resolver, '__self__', True): - return resolver.__func__ - return resolver + return get_unbound_function(resolver) return partial(self.default_resolver, name, default_value) diff --git a/graphene/utils/get_unbound_function.py b/graphene/utils/get_unbound_function.py new file mode 100644 index 00000000..64add00a --- /dev/null +++ b/graphene/utils/get_unbound_function.py @@ -0,0 +1,4 @@ +def get_unbound_function(func): + if not getattr(func, '__self__', True): + return func.__func__ + return func