cutecat@amiau:~/cpython$ cat /tmp/innerplanets.py from enum import Enum class innerplanets(Enum): mercury = 1 venus = 2 earth = 3 mars = 4 for planet in innerplanets: print(planet) for planet in reversed(innerplanets): print(planet) cutecat@amiau:~/cpython$ ./python /tmp/innerplanets.py innerplanets.mercury innerplanets.venus innerplanets.earth innerplanets.mars Traceback (most recent call last): File "/tmp/innerplanets.py", line 11, in for planet in reversed(innerplanets): File "/home/cutecat/cpython/Lib/enum.py", line 255, in __getitem__ return cls._member_map_[name] KeyError: 3 Attached the patch to add support for reversed in enum.
Simplified unit test. I reused enum Season in the test class. By the way, there is another way to add support for enum without implementing __reversed__ method, which is adding support indexing by number (in __getitem__ method), e.g. Season[1] => Season.SPRING. But I prefer using __reversed__ method.