From 235a24e966816a593adb7ed2817b102932657a7e Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Thu, 28 Jan 2016 10:22:25 -0800 Subject: [PATCH] Added support for deprecated fields using deprecation_reason. Fixed #93 --- graphene/core/types/field.py | 4 +++- graphene/core/types/tests/test_field.py | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/graphene/core/types/field.py b/graphene/core/types/field.py index 2d96f1d3..3db7ed68 100644 --- a/graphene/core/types/field.py +++ b/graphene/core/types/field.py @@ -18,7 +18,7 @@ class Field(NamedType, OrderedType): def __init__( self, type, description=None, args=None, name=None, resolver=None, - required=False, default=None, *args_list, **kwargs): + required=False, default=None, deprecation_reason=None, *args_list, **kwargs): _creation_counter = kwargs.pop('_creation_counter', None) if isinstance(name, (Argument, ArgumentType)): kwargs['name'] = name @@ -29,6 +29,7 @@ class Field(NamedType, OrderedType): self.required = required self.type = type self.description = description + self.deprecation_reason = deprecation_reason args = OrderedDict(args or {}, **kwargs) self.arguments = ArgumentsGroup(*args_list, **args) self.object_type = None @@ -103,6 +104,7 @@ class Field(NamedType, OrderedType): assert type, 'Internal type for field %s is None' % str(self) return GraphQLField(type, args=schema.T(arguments), resolver=self.decorate_resolver(resolver), + deprecation_reason=self.deprecation_reason, description=description,) def __repr__(self): diff --git a/graphene/core/types/tests/test_field.py b/graphene/core/types/tests/test_field.py index 9d224e0d..34690223 100644 --- a/graphene/core/types/tests/test_field.py +++ b/graphene/core/types/tests/test_field.py @@ -166,3 +166,17 @@ def test_field_resolve_vars(): 'hello': 'Hello Serkan' } assert result.data == expected + + +def test_field_internal_type_deprecated(): + deprecation_reason = 'No more used' + field = Field(String(), description='My argument', + deprecation_reason=deprecation_reason) + + class Query(ObjectType): + my_field = field + schema = Schema(query=Query) + + type = schema.T(field) + assert isinstance(type, GraphQLField) + assert type.deprecation_reason == deprecation_reason