diff --git a/stdlib/enum.pyi b/stdlib/enum.pyi index 0ca118a0e..96a96dbce 100644 --- a/stdlib/enum.pyi +++ b/stdlib/enum.pyi @@ -237,6 +237,8 @@ if sys.version_info >= (3, 11): _value_: str @_magic_enum_attr def value(self) -> str: ... + @staticmethod + def _generate_next_value_(name: str, start: int, count: int, last_values: list[str]) -> str: ... class EnumCheck(StrEnum): CONTINUOUS: str diff --git a/test_cases/stdlib/check_enum.py b/test_cases/stdlib/check_enum.py new file mode 100644 index 000000000..a93e1fae1 --- /dev/null +++ b/test_cases/stdlib/check_enum.py @@ -0,0 +1,13 @@ +from __future__ import annotations + +import enum +import sys +from typing_extensions import Literal, assert_type + +if sys.version_info >= (3, 11): + + class Foo(enum.StrEnum): + X = enum.auto() + + assert_type(Foo.X, Literal[Foo.X]) + assert_type(Foo.X.value, str) diff --git a/tests/stubtest_allowlists/py311.txt b/tests/stubtest_allowlists/py311.txt index d6e1754b1..3b7809429 100644 --- a/tests/stubtest_allowlists/py311.txt +++ b/tests/stubtest_allowlists/py311.txt @@ -17,6 +17,8 @@ configparser.LegacyInterpolation.__init__ configparser.ParsingError.filename enum.Enum.__init__ enum.Enum._generate_next_value_ +# Not strictly speaking a staticmethod on 3.11, but it acts like one: +enum.StrEnum._generate_next_value_ importlib.abc.Finder.find_module ipaddress._BaseNetwork.broadcast_address ipaddress._BaseNetwork.hostmask