Skip to content

Commit 292e645

Browse files
made IntEnum integer interface final
1 parent 6c1587c commit 292e645

File tree

1 file changed

+116
-2
lines changed

1 file changed

+116
-2
lines changed

stdlib/enum.pyi

Lines changed: 116 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import _typeshed
22
import sys
33
import types
44
from _typeshed import SupportsKeysAndGetItem, Unused
5-
from builtins import property as _builtins_property
5+
from builtins import _NegativeInteger, _PositiveInteger, property as _builtins_property
66
from collections.abc import Callable, Iterable, Iterator, Mapping
7-
from typing import Any, Final, Generic, Literal, TypeVar, overload
7+
from typing import Any, Final, Generic, Literal, SupportsIndex, TypeVar, final, overload
88
from typing_extensions import Self, TypeAlias, disjoint_base
99

1010
__all__ = ["EnumMeta", "Enum", "IntEnum", "Flag", "IntFlag", "auto", "unique"]
@@ -233,7 +233,121 @@ if sys.version_info >= (3, 12):
233233
_value_: int
234234
@_magic_enum_attr
235235
def value(self) -> int: ...
236+
@final
236237
def __new__(cls, value: int) -> Self: ...
238+
@final
239+
def __add__(self, value: int, /) -> int: ...
240+
@final
241+
def __sub__(self, value: int, /) -> int: ...
242+
@final
243+
def __mul__(self, value: int, /) -> int: ...
244+
@final
245+
def __floordiv__(self, value: int, /) -> int: ...
246+
@final
247+
def __truediv__(self, value: int, /) -> float: ...
248+
@final
249+
def __mod__(self, value: int, /) -> int: ...
250+
@final
251+
def __divmod__(self, value: int, /) -> tuple[int, int]: ...
252+
@final
253+
def __radd__(self, value: int, /) -> int: ...
254+
@final
255+
def __rsub__(self, value: int, /) -> int: ...
256+
@final
257+
def __rmul__(self, value: int, /) -> int: ...
258+
@final
259+
def __rfloordiv__(self, value: int, /) -> int: ...
260+
@final
261+
def __rtruediv__(self, value: int, /) -> float: ...
262+
@final
263+
def __rmod__(self, value: int, /) -> int: ...
264+
@final
265+
def __rdivmod__(self, value: int, /) -> tuple[int, int]: ...
266+
@overload
267+
@final
268+
def __pow__(self, x: Literal[0], /) -> Literal[1]: ...
269+
@overload
270+
@final
271+
def __pow__(self, value: Literal[0], mod: None, /) -> Literal[1]: ...
272+
@overload
273+
@final
274+
def __pow__(self, value: _PositiveInteger, mod: None = None, /) -> int: ...
275+
@overload
276+
@final
277+
def __pow__(self, value: _NegativeInteger, mod: None = None, /) -> float: ...
278+
# positive __value -> int; negative __value -> float
279+
# return type must be Any as `int | float` causes too many false-positive errors
280+
@overload
281+
@final
282+
def __pow__(self, value: int, mod: None = None, /) -> Any: ...
283+
@overload
284+
@final
285+
def __pow__(self, value: int, mod: int, /) -> int: ...
286+
@final
287+
def __rpow__(self, value: int, mod: int | None = None, /) -> Any: ...
288+
@final
289+
def __and__(self, value: int, /) -> int: ...
290+
@final
291+
def __or__(self, value: int, /) -> int: ...
292+
@final
293+
def __xor__(self, value: int, /) -> int: ...
294+
@final
295+
def __lshift__(self, value: int, /) -> int: ...
296+
@final
297+
def __rshift__(self, value: int, /) -> int: ...
298+
@final
299+
def __rand__(self, value: int, /) -> int: ...
300+
@final
301+
def __ror__(self, value: int, /) -> int: ...
302+
@final
303+
def __rxor__(self, value: int, /) -> int: ...
304+
@final
305+
def __rlshift__(self, value: int, /) -> int: ...
306+
@final
307+
def __rrshift__(self, value: int, /) -> int: ...
308+
@final
309+
def __neg__(self) -> int: ...
310+
@final
311+
def __pos__(self) -> int: ...
312+
@final
313+
def __invert__(self) -> int: ...
314+
@final
315+
def __trunc__(self) -> int: ...
316+
@final
317+
def __ceil__(self) -> int: ...
318+
@final
319+
def __floor__(self) -> int: ...
320+
if sys.version_info >= (3, 14):
321+
@final
322+
def __round__(self, ndigits: SupportsIndex | None = None, /) -> int: ...
323+
else:
324+
@final
325+
def __round__(self, ndigits: SupportsIndex = ..., /) -> int: ...
326+
327+
@final
328+
def __eq__(self, value: object, /) -> bool: ...
329+
@final
330+
def __ne__(self, value: object, /) -> bool: ...
331+
@final
332+
def __lt__(self, value: int, /) -> bool: ...
333+
@final
334+
def __le__(self, value: int, /) -> bool: ...
335+
@final
336+
def __gt__(self, value: int, /) -> bool: ...
337+
@final
338+
def __ge__(self, value: int, /) -> bool: ...
339+
@final
340+
def __float__(self) -> float: ...
341+
@final
342+
def __int__(self) -> int: ...
343+
@final
344+
def __abs__(self) -> int: ...
345+
@final
346+
def __hash__(self) -> int: ...
347+
@final
348+
def __bool__(self) -> bool: ...
349+
@final
350+
def __index__(self) -> int: ...
237351

238352
else:
239353
if sys.version_info >= (3, 11):

0 commit comments

Comments
 (0)