diff --git a/stdlib/enum.pyi b/stdlib/enum.pyi index 8ca0a5f89..b3433f29e 100644 --- a/stdlib/enum.pyi +++ b/stdlib/enum.pyi @@ -163,16 +163,22 @@ class Enum(metaclass=EnumMeta): def __hash__(self) -> Any: ... def __reduce_ex__(self, proto: object) -> Any: ... -class IntEnum(int, Enum): - _value_: int - if sys.version_info >= (3, 11): +if sys.version_info >= (3, 11): + class ReprEnum(Enum): ... + +if sys.version_info >= (3, 11): + class IntEnum(int, ReprEnum): + _value_: int @property def value(self) -> int: ... - else: + def __new__(cls: type[Self], value: int | Self) -> Self: ... + +else: + class IntEnum(int, Enum): + _value_: int @types.DynamicClassAttribute def value(self) -> int: ... - - def __new__(cls: type[Self], value: int | Self) -> Self: ... + def __new__(cls: type[Self], value: int | Self) -> Self: ... def unique(enumeration: _S) -> _S: ... @@ -221,12 +227,24 @@ class IntFlag(int, Flag): def __rxor__(self: Self, n: int | Self) -> Self: ... if sys.version_info >= (3, 11): - class StrEnum(str, Enum): + class StrEnum(str, ReprEnum): def __new__(cls: type[Self], value: str | Self) -> Self: ... _value_: str @property def value(self) -> str: ... + class EnumCheck(StrEnum): + CONTINUOUS: str + NAMED_FLAGS: str + UNIQUE: str + CONTINUOUS = EnumCheck.CONTINUOUS + NAMED_FLAGS = EnumCheck.NAMED_FLAGS + UNIQUE = EnumCheck.UNIQUE + + class verify: + def __init__(self, *checks: EnumCheck) -> None: ... + def __call__(self, enumeration: _S) -> _S: ... + class FlagBoundary(StrEnum): STRICT: str CONFORM: str @@ -241,6 +259,7 @@ if sys.version_info >= (3, 11): def __set_name__(self, ownerclass: type[Enum], name: str) -> None: ... name: str clsname: str - def global_enum(cls: _S) -> _S: ... + def global_str(self: Enum) -> str: ... + def global_enum(cls: _S, update_str: bool = ...) -> _S: ... def global_enum_repr(self: Enum) -> str: ... def global_flag_repr(self: Flag) -> str: ...