Enum errors with generics · Issue #101809 · python/cpython · GitHub
Skip to content

Enum errors with generics #101809

Description

@SimpleArt

Bug report

In python < 3.9, creating a subclass of both enum.Enum and typing.Generic (or a subclass of typing.Generic) causes an error.

from enum import Enum
from typing import Generic, TypeVar

T = TypeVar("T")


class Foo(Generic[T]):
    ...


class Bar(Foo[int], Enum):
    x = 0

Error:

Traceback (most recent call last):
  File "test.py", line 11, in <module>
    class Bar(Foo[int], Enum):
  File "...\enum_newest.py", line 566, in __new__
    raise exc
  File "...\enum_newest.py", line 275, in __set_name__
    enum_member = enum_class._new_member_(enum_class, *args)
  File "...\Python38\lib\typing.py", line 875, in __new__
    obj = super().__new__(cls, *args, **kwds)
  File "...\enum_newest.py", line 1132, in __new__
    raise ve_exc
ValueError: 0 is not a valid Bar

Trying this with newer versions of enum.py does not appear to solve the issue, meaning it probably has something to do with a change in typing.Generic in python = 3.9 that happened to fix it. I wasn't able to test newer versions of typing.py since it was pretty complicated and used imports not available in previous versions.

I also couldn't find anything about such a change to typing.Generic, and I'm not sure if this is a more general issue concerning how enum.Enum plays with special situations considering the current enum.py still gives the above error.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions