Skip to content

Commit 2594cdb

Browse files
committed
Fixed Meta included in Enum members. Fixed #685
1 parent d6df149 commit 2594cdb

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

graphene/types/enum.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ class EnumOptions(BaseOptions):
2727
class EnumMeta(SubclassWithMeta_Meta):
2828

2929
def __new__(cls, name, bases, classdict, **options):
30-
enum = PyEnum(cls.__name__, OrderedDict(classdict, __eq__=eq_enum))
30+
enum_members = OrderedDict(classdict, __eq__=eq_enum)
31+
# We remove the Meta attribute from the class to not collide
32+
# with the enum values.
33+
enum_members.pop('Meta', None)
34+
enum = PyEnum(cls.__name__, enum_members)
3135
return SubclassWithMeta_Meta.__new__(cls, name, bases, OrderedDict(classdict, __enum__=enum), **options)
3236

3337
def get(cls, value):

graphene/types/tests/test_enum.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ def custom_deprecation_reason(value):
8080
return 'meh' if value == Episode.NEWHOPE else None
8181

8282
PyEpisode = PyEnum('PyEpisode', 'NEWHOPE,EMPIRE,JEDI')
83-
Episode = Enum.from_enum(PyEpisode, description=custom_description, deprecation_reason=custom_deprecation_reason)
83+
Episode = Enum.from_enum(PyEpisode, description=custom_description,
84+
deprecation_reason=custom_deprecation_reason)
8485

8586
class Query(ObjectType):
8687
foo = Episode()
@@ -214,3 +215,19 @@ class RGB2(Enum):
214215
assert RGB1.RED != RGB2.RED
215216
assert RGB1.GREEN != RGB2.GREEN
216217
assert RGB1.BLUE != RGB2.BLUE
218+
219+
220+
def test_enum_skip_meta_from_members():
221+
class RGB1(Enum):
222+
class Meta:
223+
name = 'RGB'
224+
225+
RED = 1
226+
GREEN = 2
227+
BLUE = 3
228+
229+
assert dict(RGB1._meta.enum.__members__) == {
230+
'RED': RGB1.RED,
231+
'GREEN': RGB1.GREEN,
232+
'BLUE': RGB1.BLUE,
233+
}

0 commit comments

Comments
 (0)