@@ -136,17 +136,19 @@ if sys.version_info >= (3, 11):
136
136
# In 3.11 `EnumMeta` metaclass is renamed to `EnumType`, but old name also exists.
137
137
EnumType = EnumMeta
138
138
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
+
139
147
class 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 : ...
150
152
_name_ : str
151
153
_value_ : Any
152
154
if sys .version_info >= (3 , 7 ):
@@ -165,20 +167,15 @@ class Enum(metaclass=EnumMeta):
165
167
166
168
if sys .version_info >= (3 , 11 ):
167
169
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
176
171
else :
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 : ...
182
179
183
180
def unique (enumeration : _EnumerationT ) -> _EnumerationT : ...
184
181
@@ -187,29 +184,17 @@ _auto_null: Any
187
184
# subclassing IntFlag so it picks up all implemented base functions, best modeling behavior of enum.auto()
188
185
class auto (IntFlag ):
189
186
_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 : ...
197
189
def __new__ (cls : type [Self ]) -> Self : ...
198
190
199
191
class Flag (Enum ):
200
192
_name_ : str | None # type: ignore[assignment]
201
193
_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 : ...
213
198
def __contains__ (self : Self , other : Self ) -> bool : ...
214
199
def __bool__ (self ) -> bool : ...
215
200
def __or__ (self : Self , other : Self ) -> Self : ...
@@ -230,7 +215,7 @@ if sys.version_info >= (3, 11):
230
215
class StrEnum (str , ReprEnum ):
231
216
def __new__ (cls : type [Self ], value : str ) -> Self : ...
232
217
_value_ : str
233
- @property
218
+ @_magic_enum_attr
234
219
def value (self ) -> str : ...
235
220
236
221
class EnumCheck (StrEnum ):
@@ -255,10 +240,6 @@ if sys.version_info >= (3, 11):
255
240
EJECT = FlagBoundary .EJECT
256
241
KEEP = FlagBoundary .KEEP
257
242
258
- class property (types .DynamicClassAttribute ):
259
- def __set_name__ (self , ownerclass : type [Enum ], name : str ) -> None : ...
260
- name : str
261
- clsname : str
262
243
def global_str (self : Enum ) -> str : ...
263
244
def global_enum (cls : _EnumerationT , update_str : bool = ...) -> _EnumerationT : ...
264
245
def global_enum_repr (self : Enum ) -> str : ...
0 commit comments