@@ -136,17 +136,19 @@ if sys.version_info >= (3, 11):
136136 # In 3.11 `EnumMeta` metaclass is renamed to `EnumType`, but old name also exists.
137137 EnumType = EnumMeta
138138
139+ class property (types .DynamicClassAttribute ):
140+ def __set_name__ (self , ownerclass : type [Enum ], name : str ) -> None : ...
141+ name : str
142+ clsname : str
143+ _magic_enum_attr = property
144+ else :
145+ _magic_enum_attr = types .DynamicClassAttribute
146+
139147class Enum (metaclass = EnumMeta ):
140- if sys .version_info >= (3 , 11 ):
141- @property
142- def name (self ) -> str : ...
143- @property
144- def value (self ) -> Any : ...
145- else :
146- @types .DynamicClassAttribute
147- def name (self ) -> str : ...
148- @types .DynamicClassAttribute
149- def value (self ) -> Any : ...
148+ @_magic_enum_attr
149+ def name (self ) -> str : ...
150+ @_magic_enum_attr
151+ def value (self ) -> Any : ...
150152 _name_ : str
151153 _value_ : Any
152154 if sys .version_info >= (3 , 7 ):
@@ -165,20 +167,15 @@ class Enum(metaclass=EnumMeta):
165167
166168if sys .version_info >= (3 , 11 ):
167169 class ReprEnum (Enum ): ...
168-
169- if sys .version_info >= (3 , 11 ):
170- class IntEnum (int , ReprEnum ):
171- _value_ : int
172- @property
173- def value (self ) -> int : ...
174- def __new__ (cls : type [Self ], value : int ) -> Self : ...
175-
170+ _IntEnumBase = ReprEnum
176171else :
177- class IntEnum (int , Enum ):
178- _value_ : int
179- @types .DynamicClassAttribute
180- def value (self ) -> int : ...
181- def __new__ (cls : type [Self ], value : int ) -> Self : ...
172+ _IntEnumBase = Enum
173+
174+ class IntEnum (int , _IntEnumBase ):
175+ _value_ : int
176+ @_magic_enum_attr
177+ def value (self ) -> int : ...
178+ def __new__ (cls : type [Self ], value : int ) -> Self : ...
182179
183180def unique (enumeration : _EnumerationT ) -> _EnumerationT : ...
184181
@@ -187,29 +184,17 @@ _auto_null: Any
187184# subclassing IntFlag so it picks up all implemented base functions, best modeling behavior of enum.auto()
188185class auto (IntFlag ):
189186 _value_ : Any
190- if sys .version_info >= (3 , 11 ):
191- @property
192- def value (self ) -> Any : ...
193- else :
194- @types .DynamicClassAttribute
195- def value (self ) -> Any : ...
196-
187+ @_magic_enum_attr
188+ def value (self ) -> Any : ...
197189 def __new__ (cls : type [Self ]) -> Self : ...
198190
199191class Flag (Enum ):
200192 _name_ : str | None # type: ignore[assignment]
201193 _value_ : int
202- if sys .version_info >= (3 , 11 ):
203- @property
204- def name (self ) -> str | None : ... # type: ignore[override]
205- @property
206- def value (self ) -> int : ...
207- else :
208- @types .DynamicClassAttribute
209- def name (self ) -> str | None : ... # type: ignore[override]
210- @types .DynamicClassAttribute
211- def value (self ) -> int : ...
212-
194+ @_magic_enum_attr
195+ def name (self ) -> str | None : ... # type: ignore[override]
196+ @_magic_enum_attr
197+ def value (self ) -> int : ...
213198 def __contains__ (self : Self , other : Self ) -> bool : ...
214199 def __bool__ (self ) -> bool : ...
215200 def __or__ (self : Self , other : Self ) -> Self : ...
@@ -230,7 +215,7 @@ if sys.version_info >= (3, 11):
230215 class StrEnum (str , ReprEnum ):
231216 def __new__ (cls : type [Self ], value : str ) -> Self : ...
232217 _value_ : str
233- @property
218+ @_magic_enum_attr
234219 def value (self ) -> str : ...
235220
236221 class EnumCheck (StrEnum ):
@@ -255,10 +240,6 @@ if sys.version_info >= (3, 11):
255240 EJECT = FlagBoundary .EJECT
256241 KEEP = FlagBoundary .KEEP
257242
258- class property (types .DynamicClassAttribute ):
259- def __set_name__ (self , ownerclass : type [Enum ], name : str ) -> None : ...
260- name : str
261- clsname : str
262243 def global_str (self : Enum ) -> str : ...
263244 def global_enum (cls : _EnumerationT , update_str : bool = ...) -> _EnumerationT : ...
264245 def global_enum_repr (self : Enum ) -> str : ...
0 commit comments