From f42724444f8f0e2d600e0deceb176a048f6dcc94 Mon Sep 17 00:00:00 2001 From: Bryce Guinta Date: Thu, 29 Mar 2018 07:59:27 -0700 Subject: [PATCH] Update math stub arguments to reflect protocol support (#2002) Update math.factorial to reflect support for __int__ protocol. Update other math functions to reflect support for __float__ protocol. --- stdlib/2and3/math.pyi | 92 +++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/stdlib/2and3/math.pyi b/stdlib/2and3/math.pyi index 92ea4ba69..aa67468c0 100644 --- a/stdlib/2and3/math.pyi +++ b/stdlib/2and3/math.pyi @@ -1,7 +1,7 @@ # Stubs for math # See: http://docs.python.org/2/library/math.html -from typing import Tuple, Iterable, Optional +from typing import Tuple, Iterable, Optional, SupportsFloat, SupportsInt import sys @@ -13,59 +13,59 @@ if sys.version_info >= (3, 5): if sys.version_info >= (3, 6): tau = ... # type: float -def acos(x: float) -> float: ... -def acosh(x: float) -> float: ... -def asin(x: float) -> float: ... -def asinh(x: float) -> float: ... -def atan(x: float) -> float: ... -def atan2(y: float, x: float) -> float: ... -def atanh(x: float) -> float: ... +def acos(x: SupportsFloat) -> float: ... +def acosh(x: SupportsFloat) -> float: ... +def asin(x: SupportsFloat) -> float: ... +def asinh(x: SupportsFloat) -> float: ... +def atan(x: SupportsFloat) -> float: ... +def atan2(y: SupportsFloat, x: SupportsFloat) -> float: ... +def atanh(x: SupportsFloat) -> float: ... if sys.version_info >= (3,): - def ceil(x: float) -> int: ... + def ceil(x: SupportsFloat) -> int: ... else: - def ceil(x: float) -> float: ... -def copysign(x: float, y: float) -> float: ... -def cos(x: float) -> float: ... -def cosh(x: float) -> float: ... -def degrees(x: float) -> float: ... -def erf(x: float) -> float: ... -def erfc(x: float) -> float: ... -def exp(x: float) -> float: ... -def expm1(x: float) -> float: ... -def fabs(x: float) -> float: ... -def factorial(x: int) -> int: ... + def ceil(x: SupportsFloat) -> float: ... +def copysign(x: SupportsFloat, y: SupportsFloat) -> float: ... +def cos(x: SupportsFloat) -> float: ... +def cosh(x: SupportsFloat) -> float: ... +def degrees(x: SupportsFloat) -> float: ... +def erf(x: SupportsFloat) -> float: ... +def erfc(x: SupportsFloat) -> float: ... +def exp(x: SupportsFloat) -> float: ... +def expm1(x: SupportsFloat) -> float: ... +def fabs(x: SupportsFloat) -> float: ... +def factorial(x: SupportsInt) -> int: ... if sys.version_info >= (3,): - def floor(x: float) -> int: ... + def floor(x: SupportsFloat) -> int: ... else: - def floor(x: float) -> float: ... -def fmod(x: float, y: float) -> float: ... -def frexp(x: float) -> Tuple[float, int]: ... + def floor(x: SupportsFloat) -> float: ... +def fmod(x: SupportsFloat, y: SupportsFloat) -> float: ... +def frexp(x: SupportsFloat) -> Tuple[float, int]: ... def fsum(iterable: Iterable) -> float: ... -def gamma(x: float) -> float: ... +def gamma(x: SupportsFloat) -> float: ... if sys.version_info >= (3, 5): def gcd(a: int, b: int) -> int: ... -def hypot(x: float, y: float) -> float: ... +def hypot(x: SupportsFloat, y: SupportsFloat) -> float: ... if sys.version_info >= (3, 5): - def isclose(a: float, b: float, rel_tol: float = ..., abs_tol: float = ...) -> bool: ... -def isinf(x: float) -> bool: ... + def isclose(a: SupportsFloat, b: SupportsFloat, rel_tol: SupportsFloat = ..., abs_tol: SupportsFloat = ...) -> bool: ... +def isinf(x: SupportsFloat) -> bool: ... if sys.version_info >= (3,): - def isfinite(x: float) -> bool: ... -def isnan(x: float) -> bool: ... -def ldexp(x: float, i: int) -> float: ... -def lgamma(x: float) -> float: ... -def log(x: float, base: float = ...) -> float: ... -def log10(x: float) -> float: ... -def log1p(x: float) -> float: ... + def isfinite(x: SupportsFloat) -> bool: ... +def isnan(x: SupportsFloat) -> bool: ... +def ldexp(x: SupportsFloat, i: int) -> float: ... +def lgamma(x: SupportsFloat) -> float: ... +def log(x: SupportsFloat, base: SupportsFloat = ...) -> float: ... +def log10(x: SupportsFloat) -> float: ... +def log1p(x: SupportsFloat) -> float: ... if sys.version_info >= (3, 3): - def log2(x: float) -> float: ... -def modf(x: float) -> Tuple[float, float]: ... -def pow(x: float, y: float) -> float: ... -def radians(x: float) -> float: ... + def log2(x: SupportsFloat) -> float: ... +def modf(x: SupportsFloat) -> Tuple[float, float]: ... +def pow(x: SupportsFloat, y: SupportsFloat) -> float: ... +def radians(x: SupportsFloat) -> float: ... if sys.version_info >= (3, 7): - def remainder(x: float, y: float) -> float: ... -def sin(x: float) -> float: ... -def sinh(x: float) -> float: ... -def sqrt(x: float) -> float: ... -def tan(x: float) -> float: ... -def tanh(x: float) -> float: ... -def trunc(x: float) -> int: ... + def remainder(x: SupportsFloat, y: SupportsFloat) -> float: ... +def sin(x: SupportsFloat) -> float: ... +def sinh(x: SupportsFloat) -> float: ... +def sqrt(x: SupportsFloat) -> float: ... +def tan(x: SupportsFloat) -> float: ... +def tanh(x: SupportsFloat) -> float: ... +def trunc(x: SupportsFloat) -> int: ...