The problem is here. Since an Enum doesn't have an instance of self, when __reduce_ex__(4) is called, you will get an error telling you that you are missing one required positional argument. In order to call __reduce_ex__(4) on an Enum, you'd have to use one of the concrete enum values. For example:
>>> from enum import Enum
>>> class Test(Enum):
2 FOO = 1
>>> Test.__reduce_ex__(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __reduce_ex__() missing 1 required positional argument: 'proto'
__reduce_ex__() missing 1 required positional argument: 'proto'
>>> Test.FOO.__reduce_ex__(4)
(<enum 'Test'>, (1,))
>>>
I'm still digging into the code to fully understand what's going on here, so I'm don't have enough context to give a good recommendation. It is perhaps the case that you'd have to iterate over each of the enum values to call __reduce_ex__(4) on them one-by-one. Or perhaps it is the case that Enums are not able to be used by this method.
The problem is here. Since an
Enumdoesn't have an instance ofself, when__reduce_ex__(4)is called, you will get an error telling you that you are missing one required positional argument. In order to call__reduce_ex__(4)on anEnum, you'd have to use one of the concrete enum values. For example:I'm still digging into the code to fully understand what's going on here, so I'm don't have enough context to give a good recommendation. It is perhaps the case that you'd have to iterate over each of the enum values to call
__reduce_ex__(4)on them one-by-one. Or perhaps it is the case thatEnums are not able to be used by this method.