Skip to content

Commit 0b1bfbf

Browse files
chore: Make Graphene enums iterable like Python enums (#1473)
* Makes Graphene enums iterable like Python enums by implementing __iter__
1 parent f891a36 commit 0b1bfbf

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

graphene/types/enum.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ def __call__(cls, *args, **kwargs): # noqa: N805
5656
return super(EnumMeta, cls).__call__(*args, **kwargs)
5757
# return cls._meta.enum(*args, **kwargs)
5858

59+
def __iter__(cls):
60+
return cls._meta.enum.__iter__()
61+
5962
def from_enum(
6063
cls, enum, name=None, description=None, deprecation_reason=None
6164
): # noqa: N805

graphene/types/tests/test_enum.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,3 +543,25 @@ def test_hashable_instance_creation_enum():
543543
assert trilogy_map[Episode.NEWHOPE] == "better"
544544
assert trilogy_map[Episode.EMPIRE] == "best"
545545
assert trilogy_map[5] == "foo"
546+
547+
548+
def test_enum_iteration():
549+
class TestEnum(Enum):
550+
FIRST = 1
551+
SECOND = 2
552+
553+
result = []
554+
expected_values = ["FIRST", "SECOND"]
555+
for c in TestEnum:
556+
result.append(c.name)
557+
assert result == expected_values
558+
559+
560+
def test_iterable_instance_creation_enum():
561+
TestEnum = Enum("TestEnum", [("FIRST", 1), ("SECOND", 2)])
562+
563+
result = []
564+
expected_values = ["FIRST", "SECOND"]
565+
for c in TestEnum:
566+
result.append(c.name)
567+
assert result == expected_values

0 commit comments

Comments
 (0)