Closed
Description
Bug report
Bug description:
In Python 3.10, you can iterate over enum.Enum
and enum.Flag
types to yield their values.
>>> import sys; print(sys.version)
3.10.12 | packaged by conda-forge | (main, Jun 23 2023, 22:40:32) [GCC 12.3.0]
>>> import enum
>>> class MyEnum(enum.Enum):
... A = 0
... B = 1
... C = 2
...
>>> list(MyEnum)
[<MyEnum.A: 0>, <MyEnum.B: 1>, <MyEnum.C: 2>]
>>> class MyFlag(enum.Flag):
... A = 0
... B = 1
... C = 2
...
>>> list(MyFlag)
[<MyFlag.A: 0>, <MyFlag.B: 1>, <MyFlag.C: 2>]
In Python 3.11, the same is true for enum.Enum
types, but the behavior seems to have changed for enum.Flag
types. Now, iterating over the type only yields its nonzero values.
>>> import sys; print(sys.version)
3.11.5 | packaged by conda-forge | (main, Aug 27 2023, 03:34:09) [GCC 12.3.0]
>>> import enum
>>> class MyEnum(enum.Enum):
... A = 0
... B = 1
... C = 2
...
>>> list(MyEnum)
[<MyEnum.A: 0>, <MyEnum.B: 1>, <MyEnum.C: 2>]
>>> class MyFlag(enum.Flag):
... A = 0
... B = 1
... C = 2
...
>>> list(MyFlag)
[<MyFlag.B: 1>, <MyFlag.C: 2>] # Missing <MyFlag.A: 0> (!)
CPython versions tested on:
3.10, 3.11
Operating systems tested on:
Linux