From 52efab27e5b9c72c69398204aced4ec37b2dfe4a Mon Sep 17 00:00:00 2001 From: Dmitry Volodin Date: Tue, 8 Feb 2022 17:16:21 +0300 Subject: [PATCH 1/4] Fix zero exponent for `int`s It is typed as `int` instead of `Any` now --- stdlib/builtins.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index b1ca2a3a4e1c..4a68c93ee5c1 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -176,7 +176,7 @@ class super: @overload def __init__(self) -> None: ... -_PositiveInteger = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] +_PositiveInteger = Literal[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] _NegativeInteger = Literal[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20] class int: From 1c81fb5daf3b0933018c79e45dcac7d0e66956c3 Mon Sep 17 00:00:00 2001 From: Dmitry Volodin Date: Tue, 8 Feb 2022 18:17:49 +0300 Subject: [PATCH 2/4] Add overload for zero exponent instead --- stdlib/builtins.pyi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index 4a68c93ee5c1..9c932aac85af 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -176,7 +176,7 @@ class super: @overload def __init__(self) -> None: ... -_PositiveInteger = Literal[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] +_PositiveInteger = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] _NegativeInteger = Literal[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20] class int: @@ -228,6 +228,8 @@ class int: @overload def __pow__(self, __x: int, __modulo: int) -> int: ... @overload + def __pow__(self, __x: Literal[0], __modulo: None = ...) -> Literal[1]: ... + @overload def __pow__(self, __x: _PositiveInteger, __modulo: None = ...) -> int: ... @overload def __pow__(self, __x: _NegativeInteger, __modulo: None = ...) -> float: ... From 1c128298758b633b71172571f9afa58ccf87049c Mon Sep 17 00:00:00 2001 From: Dmitry Volodin Date: Tue, 8 Feb 2022 18:34:44 +0300 Subject: [PATCH 3/4] Add missed overloads --- stdlib/builtins.pyi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index 9c932aac85af..255e667fa346 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -1352,6 +1352,8 @@ if sys.version_info >= (3, 8): @overload def pow(base: int, exp: int, mod: int) -> int: ... @overload + def pow(base: int, exp: Literal[0], mod: None = ...) -> Literal[1]: ... # type: ignore[misc] + @overload def pow(base: int, exp: _PositiveInteger, mod: None = ...) -> int: ... # type: ignore[misc] @overload def pow(base: int, exp: _NegativeInteger, mod: None = ...) -> float: ... # type: ignore[misc] @@ -1385,6 +1387,8 @@ else: @overload def pow(__base: int, __exp: int, __mod: int) -> int: ... @overload + def pow(base: int, exp: Literal[0], mod: None = ...) -> Literal[1]: ... # type: ignore[misc] + @overload def pow(__base: int, __exp: _PositiveInteger, __mod: None = ...) -> int: ... # type: ignore[misc] @overload def pow(__base: int, __exp: _NegativeInteger, __mod: None = ...) -> float: ... # type: ignore[misc] From 755fa71857c0cd93a1989ab22bc012c83bd8a6da Mon Sep 17 00:00:00 2001 From: Dmitry Volodin Date: Tue, 8 Feb 2022 18:39:58 +0300 Subject: [PATCH 4/4] Fix overload on Python < 3.8 Co-authored-by: Alex Waygood --- stdlib/builtins.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index 255e667fa346..35ad9e0a4fc7 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -1387,7 +1387,7 @@ else: @overload def pow(__base: int, __exp: int, __mod: int) -> int: ... @overload - def pow(base: int, exp: Literal[0], mod: None = ...) -> Literal[1]: ... # type: ignore[misc] + def pow(__base: int, __exp: Literal[0], __mod: None = ...) -> Literal[1]: ... # type: ignore[misc] @overload def pow(__base: int, __exp: _PositiveInteger, __mod: None = ...) -> int: ... # type: ignore[misc] @overload