summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/typing/tests/data/fail/array_constructors.py4
-rw-r--r--numpy/typing/tests/data/fail/multiarray.py32
-rw-r--r--numpy/typing/tests/data/pass/multiarray.py84
-rw-r--r--numpy/typing/tests/data/reveal/array_constructors.py42
-rw-r--r--numpy/typing/tests/data/reveal/multiarray.py80
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