diff --git a/stdlib/@tests/stubtest_allowlists/py315.txt b/stdlib/@tests/stubtest_allowlists/py315.txt index 25032c0a2219..37865b7a404b 100644 --- a/stdlib/@tests/stubtest_allowlists/py315.txt +++ b/stdlib/@tests/stubtest_allowlists/py315.txt @@ -130,11 +130,6 @@ mailbox.Mailbox.__exit__ mailbox._ProxyFile.__class_getitem__ marshal.dump marshal.dumps -math.fmax -math.fmin -math.isnormal -math.issubnormal -math.signbit multiprocessing.context.BaseContext.set_forkserver_preload multiprocessing.forkserver.ForkServer.set_forkserver_preload multiprocessing.forkserver.main @@ -197,8 +192,6 @@ profiling.sampling.sample profiling.sampling.stack_collector profiling.sampling.string_table profiling.tracing -pydoc.Doc.STDLIB_DIR -pydoc.Doc.getdocloc site.addsitedir site.addsitepackages site.addusersitepackages @@ -221,7 +214,6 @@ threading.__all__ threading.concurrent_tee threading.serialize_iterator threading.synchronized_iterator -timeit.Timer.autorange tkinter.Grid.content tkinter.Grid.grid_content tkinter.Image.__iter__ diff --git a/stdlib/VERSIONS b/stdlib/VERSIONS index 5487195b7165..3b67c00b1509 100644 --- a/stdlib/VERSIONS +++ b/stdlib/VERSIONS @@ -208,6 +208,7 @@ mailbox: 3.0- mailcap: 3.0-3.12 marshal: 3.0- math: 3.0- +math.integer: 3.15- mimetypes: 3.0- mmap: 3.0- modulefinder: 3.0- diff --git a/stdlib/math.pyi b/stdlib/math/__init__.pyi similarity index 93% rename from stdlib/math.pyi rename to stdlib/math/__init__.pyi index 30858b870f68..9f4f7162634b 100644 --- a/stdlib/math.pyi +++ b/stdlib/math/__init__.pyi @@ -58,6 +58,11 @@ def floor(x: _SupportsFloor[_T], /) -> _T: ... @overload def floor(x: _SupportsFloatOrIndex, /) -> int: ... def fmod(x: _SupportsFloatOrIndex, y: _SupportsFloatOrIndex, /) -> float: ... + +if sys.version_info >= (3, 15): + def fmax(x: _SupportsFloatOrIndex, y: _SupportsFloatOrIndex, /) -> float: ... + def fmin(x: _SupportsFloatOrIndex, y: _SupportsFloatOrIndex, /) -> float: ... + def frexp(x: _SupportsFloatOrIndex, /) -> tuple[float, int]: ... def fsum(seq: Iterable[_SupportsFloatOrIndex], /) -> float: ... def gamma(x: _SupportsFloatOrIndex, /) -> float: ... @@ -73,6 +78,11 @@ def isclose( def isinf(x: _SupportsFloatOrIndex, /) -> bool: ... def isfinite(x: _SupportsFloatOrIndex, /) -> bool: ... def isnan(x: _SupportsFloatOrIndex, /) -> bool: ... + +if sys.version_info >= (3, 15): + def isnormal(x: _SupportsFloatOrIndex, /) -> bool: ... + def issubnormal(x: _SupportsFloatOrIndex, /) -> bool: ... + def isqrt(n: SupportsIndex, /) -> int: ... def lcm(*integers: SupportsIndex) -> int: ... def ldexp(x: _SupportsFloatOrIndex, i: int, /) -> float: ... @@ -118,6 +128,10 @@ def prod(iterable: Iterable[_MultiplicableT1], /, *, start: _MultiplicableT2) -> def radians(x: _SupportsFloatOrIndex, /) -> float: ... def remainder(x: _SupportsFloatOrIndex, y: _SupportsFloatOrIndex, /) -> float: ... def sin(x: _SupportsFloatOrIndex, /) -> float: ... + +if sys.version_info >= (3, 15): + def signbit(x: _SupportsFloatOrIndex, /) -> bool: ... + def sinh(x: _SupportsFloatOrIndex, /) -> float: ... if sys.version_info >= (3, 12): diff --git a/stdlib/math/integer.pyi b/stdlib/math/integer.pyi new file mode 100644 index 000000000000..6d6d6b3e82dc --- /dev/null +++ b/stdlib/math/integer.pyi @@ -0,0 +1,8 @@ +from typing import SupportsIndex + +def comb(n: SupportsIndex, k: SupportsIndex, /) -> int: ... +def factorial(n: SupportsIndex, /) -> int: ... +def gcd(*integers: SupportsIndex) -> int: ... +def isqrt(n: SupportsIndex, /) -> int: ... +def lcm(*integers: SupportsIndex) -> int: ... +def perm(n: SupportsIndex, k: SupportsIndex | None = None, /) -> int: ... diff --git a/stdlib/pydoc.pyi b/stdlib/pydoc.pyi index 59be9438015a..d340f5c587b3 100644 --- a/stdlib/pydoc.pyi +++ b/stdlib/pydoc.pyi @@ -62,6 +62,9 @@ def safeimport(path: str, forceload: bool = ..., cache: MutableMapping[str, Modu class Doc: PYTHONDOCS: str + if sys.version_info >= (3, 15): + STDLIB_DIR: str + def document(self, object: object, name: str | None = None, *args: Any) -> str: ... def fail(self, object: object, name: str | None = None, *args: Any) -> NoReturn: ... @abstractmethod @@ -76,7 +79,10 @@ class Doc: def docproperty(self, object: object, name: str | None = None, *args: Any) -> str: ... @abstractmethod def docdata(self, object: object, name: str | None = None, *args: Any) -> str: ... - def getdocloc(self, object: object, basedir: str = ...) -> str | None: ... + if sys.version_info >= (3, 15): + def getdocloc(self, object: object, basedir: str | None = None) -> str | None: ... + else: + def getdocloc(self, object: object, basedir: str = ...) -> str | None: ... class HTMLRepr(Repr): def __init__(self) -> None: ... diff --git a/stdlib/timeit.pyi b/stdlib/timeit.pyi index 9ce00952c882..cc2b2027a820 100644 --- a/stdlib/timeit.pyi +++ b/stdlib/timeit.pyi @@ -1,3 +1,4 @@ +import sys import time from collections.abc import Callable, Sequence from typing import IO, Any, TypeAlias @@ -20,7 +21,12 @@ class Timer: def print_exc(self, file: IO[str] | None = None) -> None: ... def timeit(self, number: int = 1000000) -> float: ... def repeat(self, repeat: int = 5, number: int = 1000000) -> list[float]: ... - def autorange(self, callback: Callable[[int, float], object] | None = None) -> tuple[int, float]: ... + if sys.version_info >= (3, 15): + def autorange( + self, callback: Callable[[int, float], object] | None = None, target_time: float = 0.2 + ) -> tuple[int, float]: ... + else: + def autorange(self, callback: Callable[[int, float], object] | None = None) -> tuple[int, float]: ... def timeit( stmt: _Stmt = "pass",