diff options
| -rw-r--r-- | numpy/typing/tests/data/fail/array_constructors.py | 4 | ||||
| -rw-r--r-- | numpy/typing/tests/data/fail/multiarray.py | 32 | ||||
| -rw-r--r-- | numpy/typing/tests/data/pass/multiarray.py | 84 | ||||
| -rw-r--r-- | numpy/typing/tests/data/reveal/array_constructors.py | 42 | ||||
| -rw-r--r-- | numpy/typing/tests/data/reveal/multiarray.py | 80 |
5 files changed, 188 insertions, 54 deletions
diff --git a/numpy/typing/tests/data/fail/array_constructors.py b/numpy/typing/tests/data/fail/array_constructors.py index f13fdacb2..eb57e5c00 100644 --- a/numpy/typing/tests/data/fail/array_constructors.py +++ b/numpy/typing/tests/data/fail/array_constructors.py @@ -7,12 +7,12 @@ np.require(a, requirements=1) # E: No overload variant np.require(a, requirements="TEST") # E: incompatible type np.zeros("test") # E: incompatible type -np.zeros() # E: Missing positional argument +np.zeros() # E: require at least one argument np.ones("test") # E: incompatible type np.ones() # E: Missing positional argument -np.array(0, float, True) # E: Too many positional +np.array(0, float, True) # E: No overload variant np.linspace(None, 'bob') # E: No overload variant np.linspace(0, 2, num=10.0) # E: No overload variant diff --git a/numpy/typing/tests/data/fail/multiarray.py b/numpy/typing/tests/data/fail/multiarray.py new file mode 100644 index 000000000..e931e9d5c --- /dev/null +++ b/numpy/typing/tests/data/fail/multiarray.py @@ -0,0 +1,32 @@ +from typing import List +import numpy as np +import numpy.typing as npt + +i8: np.int64 + +AR_b: npt.NDArray[np.bool_] +AR_u1: npt.NDArray[np.uint8] +AR_i8: npt.NDArray[np.int64] +AR_f8: npt.NDArray[np.float64] +AR_M: npt.NDArray[np.datetime64] + +AR_LIKE_f: List[float] + +np.where(AR_b, 1) # E: No overload variant + +np.can_cast(AR_f8, 1) # E: incompatible type + +np.vdot(AR_M, AR_M) # E: incompatible type + +np.copyto(AR_LIKE_f, AR_f8) # E: incompatible type + +np.putmask(AR_LIKE_f, [True, True, False], 1.5) # E: incompatible type + +np.packbits(AR_f8) # E: incompatible type +np.packbits(AR_u1, bitorder=">") # E: incompatible type + +np.unpackbits(AR_i8) # E: incompatible type +np.unpackbits(AR_u1, bitorder=">") # E: incompatible type + +np.shares_memory(1, 1, max_work=i8) # E: incompatible type +np.may_share_memory(1, 1, max_work=i8) # E: incompatible type diff --git a/numpy/typing/tests/data/pass/multiarray.py b/numpy/typing/tests/data/pass/multiarray.py index e2b5d16a0..e5d33c673 100644 --- a/numpy/typing/tests/data/pass/multiarray.py +++ b/numpy/typing/tests/data/pass/multiarray.py @@ -1,37 +1,77 @@ -from __future__ import annotations - from typing import Any import numpy as np +import numpy.typing as npt + +AR_f8: npt.NDArray[np.float64] = np.array([1.0]) +AR_i4 = np.array([1], dtype=np.int32) +AR_u1 = np.array([1], dtype=np.uint8) -AR_f8: np.ndarray[Any, np.dtype[np.float64]] = np.array([1.0]) -AR_i8: np.ndarray[Any, np.dtype[np.int_]] = np.array([1]) +AR_LIKE_f = [1.5] +AR_LIKE_i = [1] b_f8 = np.broadcast(AR_f8) -b_i8_f8_f8 = np.broadcast(AR_i8, AR_f8, AR_f8) +b_i4_f8_f8 = np.broadcast(AR_i4, AR_f8, AR_f8) next(b_f8) -next(b_i8_f8_f8) - b_f8.reset() -b_i8_f8_f8.reset() - b_f8.index -b_i8_f8_f8.index - b_f8.iters -b_i8_f8_f8.iters - b_f8.nd -b_i8_f8_f8.nd - b_f8.ndim -b_i8_f8_f8.ndim - b_f8.numiter -b_i8_f8_f8.numiter - b_f8.shape -b_i8_f8_f8.shape - b_f8.size -b_i8_f8_f8.size + +next(b_i4_f8_f8) +b_i4_f8_f8.reset() +b_i4_f8_f8.ndim +b_i4_f8_f8.index +b_i4_f8_f8.iters +b_i4_f8_f8.nd +b_i4_f8_f8.numiter +b_i4_f8_f8.shape +b_i4_f8_f8.size + +np.inner(AR_f8, AR_i4) + +np.where([True, True, False]) +np.where([True, True, False], 1, 0) + +np.lexsort([0, 1, 2]) + +np.can_cast(np.dtype("i8"), int) +np.can_cast(AR_f8, "f8") +np.can_cast(AR_f8, np.complex128, casting="unsafe") + +np.min_scalar_type([1]) +np.min_scalar_type(AR_f8) + +np.result_type(int, AR_i4) +np.result_type(AR_f8, AR_u1) +np.result_type(AR_f8, np.complex128) + +np.dot(AR_LIKE_f, AR_i4) +np.dot(AR_u1, 1) +np.dot(1.5j, 1) +np.dot(AR_u1, 1, out=AR_f8) + +np.vdot(AR_LIKE_f, AR_i4) +np.vdot(AR_u1, 1) +np.vdot(1.5j, 1) + +np.bincount(AR_i4) + +np.copyto(AR_f8, [1.6]) + +np.putmask(AR_f8, [True], 1.5) + +np.packbits(AR_i4) +np.packbits(AR_u1) + +np.unpackbits(AR_u1) + +np.shares_memory(1, 2) +np.shares_memory(AR_f8, AR_f8, max_work=1) + +np.may_share_memory(1, 2) +np.may_share_memory(AR_f8, AR_f8, max_work=1) diff --git a/numpy/typing/tests/data/reveal/array_constructors.py b/numpy/typing/tests/data/reveal/array_constructors.py index 2e803a365..775b0e1e0 100644 --- a/numpy/typing/tests/data/reveal/array_constructors.py +++ b/numpy/typing/tests/data/reveal/array_constructors.py @@ -1,21 +1,46 @@ from typing import List, Any import numpy as np +import numpy.typing as npt class SubClass(np.ndarray): ... i8: np.int64 -A: np.ndarray +A: npt.NDArray[np.float64] B: SubClass C: List[int] def func(i: int, j: int, **kwargs: Any) -> SubClass: ... +reveal_type(np.empty_like(A)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] +reveal_type(np.empty_like([1, 1.0])) # E: numpy.ndarray[Any, numpy.dtype[Any]] +reveal_type(np.empty_like(A, dtype=np.int64)) # E: numpy.ndarray[Any, numpy.dtype[{int64}]] +reveal_type(np.empty_like(A, dtype='c16')) # E: numpy.ndarray[Any, numpy.dtype[Any]] + +reveal_type(np.array(A)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] +reveal_type(np.array([1, 1.0])) # E: numpy.ndarray[Any, numpy.dtype[Any]] +reveal_type(np.array(A, dtype=np.int64)) # E: numpy.ndarray[Any, numpy.dtype[{int64}]] +reveal_type(np.array(A, dtype='c16')) # E: numpy.ndarray[Any, numpy.dtype[Any]] + +reveal_type(np.zeros([1, 5, 6])) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] +reveal_type(np.zeros([1, 5, 6], dtype=np.int64)) # E: numpy.ndarray[Any, numpy.dtype[{int64}]] +reveal_type(np.zeros([1, 5, 6], dtype='c16')) # E: numpy.ndarray[Any, numpy.dtype[Any]] + +reveal_type(np.empty([1, 5, 6])) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] +reveal_type(np.empty([1, 5, 6], dtype=np.int64)) # E: numpy.ndarray[Any, numpy.dtype[{int64}]] +reveal_type(np.empty([1, 5, 6], dtype='c16')) # E: numpy.ndarray[Any, numpy.dtype[Any]] + +reveal_type(np.concatenate(A)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] +reveal_type(np.concatenate([1, 1.0])) # E: numpy.ndarray[Any, numpy.dtype[Any]] +reveal_type(np.concatenate(A, dtype=np.int64)) # E: numpy.ndarray[Any, numpy.dtype[{int64}]] +reveal_type(np.concatenate(A, dtype='c16')) # E: numpy.ndarray[Any, numpy.dtype[Any]] +reveal_type(np.concatenate([1, 1.0], out=A)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] + reveal_type(np.asarray(A)) # E: numpy.ndarray[Any, Any] reveal_type(np.asarray(B)) # E: numpy.ndarray[Any, Any] reveal_type(np.asarray(C)) # E: numpy.ndarray[Any, Any] -reveal_type(np.asanyarray(A)) # E: numpy.ndarray[Any, Any] +reveal_type(np.asanyarray(A)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] reveal_type(np.asanyarray(B)) # E: SubClass reveal_type(np.asanyarray(B, dtype=int)) # E: numpy.ndarray[Any, Any] reveal_type(np.asanyarray(C)) # E: numpy.ndarray[Any, Any] @@ -28,7 +53,7 @@ reveal_type(np.asfortranarray(A)) # E: numpy.ndarray[Any, Any] reveal_type(np.asfortranarray(B)) # E: numpy.ndarray[Any, Any] reveal_type(np.asfortranarray(C)) # E: numpy.ndarray[Any, Any] -reveal_type(np.require(A)) # E: numpy.ndarray[Any, Any] +reveal_type(np.require(A)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] reveal_type(np.require(B)) # E: SubClass reveal_type(np.require(B, requirements=None)) # E: SubClass reveal_type(np.require(B, dtype=int)) # E: numpy.ndarray[Any, Any] @@ -45,22 +70,17 @@ reveal_type(np.linspace(0, 10, retstep=True)) # E: Tuple[numpy.ndarray[Any, Any reveal_type(np.logspace(0, 10)) # E: numpy.ndarray[Any, Any] reveal_type(np.geomspace(1, 10)) # E: numpy.ndarray[Any, Any] -reveal_type(np.zeros_like(A)) # E: numpy.ndarray[Any, Any] +reveal_type(np.zeros_like(A)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] reveal_type(np.zeros_like(C)) # E: numpy.ndarray[Any, Any] reveal_type(np.zeros_like(B)) # E: SubClass reveal_type(np.zeros_like(B, dtype=np.int64)) # E: numpy.ndarray[Any, Any] -reveal_type(np.ones_like(A)) # E: numpy.ndarray[Any, Any] +reveal_type(np.ones_like(A)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] reveal_type(np.ones_like(C)) # E: numpy.ndarray[Any, Any] reveal_type(np.ones_like(B)) # E: SubClass reveal_type(np.ones_like(B, dtype=np.int64)) # E: numpy.ndarray[Any, Any] -reveal_type(np.empty_like(A)) # E: numpy.ndarray[Any, Any] -reveal_type(np.empty_like(C)) # E: numpy.ndarray[Any, Any] -reveal_type(np.empty_like(B)) # E: SubClass -reveal_type(np.empty_like(B, dtype=np.int64)) # E: numpy.ndarray[Any, Any] - -reveal_type(np.full_like(A, i8)) # E: numpy.ndarray[Any, Any] +reveal_type(np.full_like(A, i8)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] reveal_type(np.full_like(C, i8)) # E: numpy.ndarray[Any, Any] reveal_type(np.full_like(B, i8)) # E: SubClass reveal_type(np.full_like(B, i8, dtype=np.int64)) # E: numpy.ndarray[Any, Any] diff --git a/numpy/typing/tests/data/reveal/multiarray.py b/numpy/typing/tests/data/reveal/multiarray.py index 33e9ede7c..2811b1f35 100644 --- a/numpy/typing/tests/data/reveal/multiarray.py +++ b/numpy/typing/tests/data/reveal/multiarray.py @@ -1,35 +1,77 @@ -from typing import Any +from typing import Any, List import numpy as np +import numpy.typing as npt -AR_f8: np.ndarray[Any, np.dtype[np.float64]] -AR_i8: np.ndarray[Any, np.dtype[np.int64]] +AR_f8: npt.NDArray[np.float64] +AR_i8: npt.NDArray[np.int64] +AR_u1: npt.NDArray[np.uint8] + +AR_LIKE_f: List[float] +AR_LIKE_i: List[int] b_f8 = np.broadcast(AR_f8) b_i8_f8_f8 = np.broadcast(AR_i8, AR_f8, AR_f8) reveal_type(next(b_f8)) # E: tuple[Any] -reveal_type(next(b_i8_f8_f8)) # E: tuple[Any] - reveal_type(b_f8.reset()) # E: None -reveal_type(b_i8_f8_f8.reset()) # E: None - reveal_type(b_f8.index) # E: int -reveal_type(b_i8_f8_f8.index) # E: int - reveal_type(b_f8.iters) # E: tuple[numpy.flatiter[Any]] -reveal_type(b_i8_f8_f8.iters) # E: tuple[numpy.flatiter[Any]] - reveal_type(b_f8.nd) # E: int -reveal_type(b_i8_f8_f8.nd) # E: int - reveal_type(b_f8.ndim) # E: int -reveal_type(b_i8_f8_f8.ndim) # E: int - reveal_type(b_f8.numiter) # E: int -reveal_type(b_i8_f8_f8.numiter) # E: int - reveal_type(b_f8.shape) # E: tuple[builtins.int] -reveal_type(b_i8_f8_f8.shape) # E: tuple[builtins.int] - reveal_type(b_f8.size) # E: int + +reveal_type(next(b_i8_f8_f8)) # E: tuple[Any] +reveal_type(b_i8_f8_f8.reset()) # E: None +reveal_type(b_i8_f8_f8.index) # E: int +reveal_type(b_i8_f8_f8.iters) # E: tuple[numpy.flatiter[Any]] +reveal_type(b_i8_f8_f8.nd) # E: int +reveal_type(b_i8_f8_f8.ndim) # E: int +reveal_type(b_i8_f8_f8.numiter) # E: int +reveal_type(b_i8_f8_f8.shape) # E: tuple[builtins.int] reveal_type(b_i8_f8_f8.size) # E: int + +reveal_type(np.inner(AR_f8, AR_i8)) # E: Any + +reveal_type(np.where([True, True, False])) # E: tuple[numpy.ndarray[Any, numpy.dtype[{intp}]]] +reveal_type(np.where([True, True, False], 1, 0)) # E: numpy.ndarray[Any, numpy.dtype[Any]] + +reveal_type(np.lexsort([0, 1, 2])) # E: Any + +reveal_type(np.can_cast(np.dtype("i8"), int)) # E: bool +reveal_type(np.can_cast(AR_f8, "f8")) # E: bool +reveal_type(np.can_cast(AR_f8, np.complex128, casting="unsafe")) # E: bool + +reveal_type(np.min_scalar_type([1])) # E: numpy.dtype[Any] +reveal_type(np.min_scalar_type(AR_f8)) # E: numpy.dtype[Any] + +reveal_type(np.result_type(int, [1])) # E: numpy.dtype[Any] +reveal_type(np.result_type(AR_f8, AR_u1)) # E: numpy.dtype[Any] +reveal_type(np.result_type(AR_f8, np.complex128)) # E: numpy.dtype[Any] + +reveal_type(np.dot(AR_LIKE_f, AR_i8)) # E: Any +reveal_type(np.dot(AR_u1, 1)) # E: Any +reveal_type(np.dot(1.5j, 1)) # E: Any +reveal_type(np.dot(AR_u1, 1, out=AR_f8)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]] + +reveal_type(np.vdot(AR_LIKE_f, AR_i8)) # E: numpy.floating[Any] +reveal_type(np.vdot(AR_u1, 1)) # E: numpy.signedinteger[Any] +reveal_type(np.vdot(1.5j, 1)) # E: numpy.complexfloating[Any, Any] + +reveal_type(np.bincount(AR_i8)) # E: numpy.ndarray[Any, numpy.dtype[{intp}]] + +reveal_type(np.copyto(AR_f8, [1., 1.5, 1.6])) # E: None + +reveal_type(np.putmask(AR_f8, [True, True, False], 1.5)) # E: None + +reveal_type(np.packbits(AR_i8)) # numpy.ndarray[Any, numpy.dtype[{uint8}]] +reveal_type(np.packbits(AR_u1)) # numpy.ndarray[Any, numpy.dtype[{uint8}]] + +reveal_type(np.unpackbits(AR_u1)) # numpy.ndarray[Any, numpy.dtype[{uint8}]] + +reveal_type(np.shares_memory(1, 2)) # E: bool +reveal_type(np.shares_memory(AR_f8, AR_f8, max_work=1)) # E: bool + +reveal_type(np.may_share_memory(1, 2)) # E: bool +reveal_type(np.may_share_memory(AR_f8, AR_f8, max_work=1)) # E: bool |
