Skip to content

When x is an Enum, duper get_reduce raises an error  #1

@mikelane

Description

@mikelane

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions