File tree 2 files changed +41
-1
lines changed
2 files changed +41
-1
lines changed Original file line number Diff line number Diff line change
1
+ from enum import Enum as PyEnum
1
2
import inspect
2
3
from functools import partial
3
4
@@ -169,10 +170,16 @@ def create_enum(graphene_type):
169
170
values = {}
170
171
for name , value in graphene_type ._meta .enum .__members__ .items ():
171
172
description = getattr (value , "description" , None )
172
- deprecation_reason = getattr (value , "deprecation_reason" , None )
173
+ # if the "description" attribute is an Enum, it is likely an enum member
174
+ # called description, not a description property
175
+ if isinstance (description , PyEnum ):
176
+ description = None
173
177
if not description and callable (graphene_type ._meta .description ):
174
178
description = graphene_type ._meta .description (value )
175
179
180
+ deprecation_reason = getattr (value , "deprecation_reason" , None )
181
+ if isinstance (deprecation_reason , PyEnum ):
182
+ deprecation_reason = None
176
183
if not deprecation_reason and callable (
177
184
graphene_type ._meta .deprecation_reason
178
185
):
Original file line number Diff line number Diff line change @@ -565,3 +565,36 @@ def test_iterable_instance_creation_enum():
565
565
for c in TestEnum :
566
566
result .append (c .name )
567
567
assert result == expected_values
568
+
569
+
570
+ # https://github.com/graphql-python/graphene/issues/1321
571
+ def test_enum_description_member_not_interpreted_as_property ():
572
+ class RGB (Enum ):
573
+ """Description"""
574
+
575
+ red = "red"
576
+ green = "green"
577
+ blue = "blue"
578
+ description = "description"
579
+ deprecation_reason = "deprecation_reason"
580
+
581
+ class Query (ObjectType ):
582
+ color = RGB ()
583
+
584
+ def resolve_color (_ , info ):
585
+ return RGB .description
586
+
587
+ values = RGB ._meta .enum .__members__ .values ()
588
+ assert sorted (v .name for v in values ) == [
589
+ "blue" ,
590
+ "deprecation_reason" ,
591
+ "description" ,
592
+ "green" ,
593
+ "red" ,
594
+ ]
595
+
596
+ schema = Schema (query = Query )
597
+
598
+ results = schema .execute ("query { color }" )
599
+ assert not results .errors
600
+ assert results .data ["color" ] == RGB .description .name
You can’t perform that action at this time.
0 commit comments