mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-09 21:46:42 +08:00
Remove NoReturn overloads from pow() (#8568)
This commit is contained in:
@@ -266,8 +266,6 @@ class int:
|
||||
@overload
|
||||
def __pow__(self, __x: int, __modulo: None = ...) -> Any: ...
|
||||
@overload
|
||||
def __pow__(self, __x: int, __modulo: Literal[0]) -> NoReturn: ...
|
||||
@overload
|
||||
def __pow__(self, __x: int, __modulo: int) -> int: ...
|
||||
def __rpow__(self, __x: int, __mod: int | None = ...) -> Any: ...
|
||||
def __and__(self, __n: int) -> int: ...
|
||||
@@ -1548,8 +1546,8 @@ _SupportsSomeKindOfPow = ( # noqa: Y026 # TODO: Use TypeAlias once mypy bugs a
|
||||
)
|
||||
|
||||
if sys.version_info >= (3, 8):
|
||||
@overload
|
||||
def pow(base: int, exp: int, mod: Literal[0]) -> NoReturn: ...
|
||||
# TODO: `pow(int, int, Literal[0])` fails at runtime,
|
||||
# but adding a `NoReturn` overload isn't a good solution for expressing that (see #8566).
|
||||
@overload
|
||||
def pow(base: int, exp: int, mod: int) -> int: ...
|
||||
@overload
|
||||
@@ -1587,8 +1585,6 @@ if sys.version_info >= (3, 8):
|
||||
def pow(base: _SupportsSomeKindOfPow, exp: complex, mod: None = ...) -> complex: ...
|
||||
|
||||
else:
|
||||
@overload
|
||||
def pow(__base: int, __exp: int, __mod: Literal[0]) -> NoReturn: ...
|
||||
@overload
|
||||
def pow(__base: int, __exp: int, __mod: int) -> int: ...
|
||||
@overload
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
from decimal import Decimal
|
||||
from fractions import Fraction
|
||||
from typing import Any, NoReturn
|
||||
from typing import Any
|
||||
from typing_extensions import Literal, assert_type
|
||||
|
||||
# See #7163
|
||||
@@ -10,7 +10,11 @@ assert_type(pow(1, 0), Literal[1])
|
||||
assert_type(1**0, Literal[1])
|
||||
assert_type(pow(1, 0, None), Literal[1])
|
||||
|
||||
assert_type(pow(2, 4, 0), NoReturn)
|
||||
# TODO: We don't have a good way of expressing the fact
|
||||
# that passing 0 for the third argument will lead to an exception being raised
|
||||
# (see discussion in #8566)
|
||||
#
|
||||
# assert_type(pow(2, 4, 0), NoReturn)
|
||||
|
||||
assert_type(pow(2, 4), int)
|
||||
assert_type(2**4, int)
|
||||
|
||||
Reference in New Issue
Block a user