From 82f232f763706b2e85988e7e6589dd5561bdaaad Mon Sep 17 00:00:00 2001 From: jorenham Date: Tue, 4 Feb 2025 03:32:53 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9=20fix=20a=20numtype=20regression?= =?UTF-8?q?=20in=20some=20`random.Generator`=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/numpy-stubs/random/_generator.pyi | 68 +++++++++++++++++++++------ 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/src/numpy-stubs/random/_generator.pyi b/src/numpy-stubs/random/_generator.pyi index bf868361..0db485a0 100644 --- a/src/numpy-stubs/random/_generator.pyi +++ b/src/numpy-stubs/random/_generator.pyi @@ -22,6 +22,7 @@ from numpy._typing import ( _Int32Codes, _Int64Codes, _IntCodes, + _NestedSequence, _ShapeLike, _SingleCodes, _UInt8Codes, @@ -48,6 +49,7 @@ _ToRNG: TypeAlias = ( | np.integer | np.timedelta64 | NDArray[np.integer | np.timedelta64 | np.flexible | np.object_] + | _NestedSequence[int] | SeedSequence | BitGenerator[Any] | Generator @@ -158,8 +160,8 @@ class Generator: # @overload def random(self, /, size: None = None, dtype: _DTypeLikeFloat = ..., out: None = None) -> float: ... - @overload - def random( + @overload # mypy false positives + def random( # type: ignore[overload-overlap] self, /, size: _ShapeLike | None = None, @@ -167,7 +169,7 @@ class Generator: *, out: NDArray[np.float64], ) -> NDArray[np.float64]: ... - @overload # mypy false positive + @overload def random( # type: ignore[overload-overlap] self, /, @@ -176,12 +178,21 @@ class Generator: out: NDArray[np.float64] | None = None, ) -> NDArray[np.float64]: ... @overload + def random( + self, + /, + size: _ShapeLike | None = None, + dtype: _DTypeLikeFloat32 = ..., + *, + out: NDArray[np.float32], + ) -> NDArray[np.float32]: ... + @overload def random( self, /, size: _ShapeLike, dtype: _DTypeLikeFloat32, - out: None = None, + out: NDArray[np.float32] | None = None, ) -> NDArray[np.float32]: ... # @@ -253,8 +264,8 @@ class Generator: method: _ExpMethod = "zig", out: None = None, ) -> float: ... - @overload - def standard_exponential( + @overload # mypy false positive + def standard_exponential( # type: ignore[overload-overlap] self, /, size: _ShapeLike | None = None, @@ -263,7 +274,7 @@ class Generator: *, out: NDArray[np.float64], ) -> NDArray[np.float64]: ... - @overload # mypy false positive + @overload def standard_exponential( # type: ignore[overload-overlap] self, /, @@ -273,13 +284,23 @@ class Generator: out: NDArray[np.float64] | None = None, ) -> NDArray[np.float64]: ... @overload + def standard_exponential( + self, + /, + size: _ShapeLike | None = None, + dtype: _DTypeLikeFloat32 = ..., + method: _ExpMethod = "zig", + *, + out: NDArray[np.float32], + ) -> NDArray[np.float32]: ... + @overload def standard_exponential( self, /, size: _ShapeLike, dtype: _DTypeLikeFloat32, method: _ExpMethod = "zig", - out: None = None, + out: NDArray[np.float32] | None = None, ) -> NDArray[np.float32]: ... # @@ -427,7 +448,7 @@ class Generator: @overload def standard_normal(self, /, size: None = None, dtype: _DTypeLikeFloat = ..., out: None = None) -> float: ... @overload - def standard_normal( + def standard_normal( # type: ignore[overload-overlap] self, /, size: _ShapeLike | None = None, @@ -444,12 +465,21 @@ class Generator: out: NDArray[np.float64] | None = None, ) -> NDArray[np.float64]: ... @overload + def standard_normal( + self, + /, + size: _ShapeLike | None = ..., + dtype: _DTypeLikeFloat32 = ..., + *, + out: NDArray[np.float32], + ) -> NDArray[np.float32]: ... + @overload def standard_normal( self, /, size: _ShapeLike, dtype: _DTypeLikeFloat32, - out: None = None, + out: NDArray[np.float32] | None = None, ) -> NDArray[np.float32]: ... # @@ -536,8 +566,8 @@ class Generator: dtype: _DTypeLikeFloat = ..., out: None = None, ) -> float: ... - @overload - def standard_gamma( + @overload # mypy false positives + def standard_gamma( # type: ignore[overload-overlap] self, /, shape: _ArrayLikeFloat_co, @@ -546,7 +576,7 @@ class Generator: *, out: NDArray[np.float64], ) -> NDArray[np.float64]: ... - @overload # mypy false positives + @overload def standard_gamma( # type: ignore[overload-overlap] self, /, @@ -571,7 +601,17 @@ class Generator: shape: _ArrayLikeFloat_co, size: _ShapeLike, dtype: _DTypeLikeFloat32, - out: None = None, + out: NDArray[np.float32] | None = None, + ) -> NDArray[np.float32]: ... + @overload + def standard_gamma( + self, + /, + shape: _ArrayLikeFloat_co, + size: _ShapeLike | None = None, + *, + dtype: _DTypeLikeFloat32, + out: NDArray[np.float32], ) -> NDArray[np.float32]: ... @overload def standard_gamma(