summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBas van Beek <b.f.van.beek@vu.nl>2020-10-14 16:57:08 +0200
committerBas van Beek <b.f.van.beek@vu.nl>2020-10-14 16:57:38 +0200
commit71292e07e0329d0b256804146d06b99d83fd36c9 (patch)
treee3c90d08b216bf5c2e427f506595a0b254bfd4cf
parent4e3c6bd71b170667c8c73f0d28fe6f67f5a4252b (diff)
downloadnumpy-71292e07e0329d0b256804146d06b99d83fd36c9.tar.gz
TST: Added tests for `np.core.numeric`
-rw-r--r--numpy/typing/tests/data/pass/array_constructors.py40
-rw-r--r--numpy/typing/tests/data/pass/numeric.py89
-rw-r--r--numpy/typing/tests/data/reveal/array_constructors.py39
-rw-r--r--numpy/typing/tests/data/reveal/numeric.py89
4 files changed, 255 insertions, 2 deletions
diff --git a/numpy/typing/tests/data/pass/array_constructors.py b/numpy/typing/tests/data/pass/array_constructors.py
index bf29e52b9..08f4b6211 100644
--- a/numpy/typing/tests/data/pass/array_constructors.py
+++ b/numpy/typing/tests/data/pass/array_constructors.py
@@ -1,4 +1,4 @@
-from typing import List
+from typing import List, Any
import numpy as np
class Index:
@@ -7,10 +7,15 @@ class Index:
class SubClass(np.ndarray): ...
+i8 = np.int64(1)
+
A = np.array([1])
B = A.view(SubClass).copy()
C = [1]
+def func(i: int, j: int, **kwargs: Any) -> SubClass:
+ return B
+
np.array(1, dtype=float)
np.array(1, copy=False)
np.array(1, order='F')
@@ -64,3 +69,36 @@ np.logspace(0, 2, base=2)
np.logspace(0, 2, base=[1j, 2j], num=2)
np.geomspace(1, 2)
+
+np.zeros_like(A)
+np.zeros_like(C)
+np.zeros_like(B)
+np.zeros_like(B, dtype=np.int64)
+
+np.ones_like(A)
+np.ones_like(C)
+np.ones_like(B)
+np.ones_like(B, dtype=np.int64)
+
+np.empty_like(A)
+np.empty_like(C)
+np.empty_like(B)
+np.empty_like(B, dtype=np.int64)
+
+np.full_like(A, i8)
+np.full_like(C, i8)
+np.full_like(B, i8)
+np.full_like(B, i8, dtype=np.int64)
+
+np.ones(1)
+np.ones([1, 1, 1])
+
+np.full(1, i8)
+np.full([1, 1, 1], i8)
+
+np.indices([1, 2, 3])
+np.indices([1, 2, 3], sparse=True)
+
+np.fromfunction(func, (3, 5))
+
+np.identity(10)
diff --git a/numpy/typing/tests/data/pass/numeric.py b/numpy/typing/tests/data/pass/numeric.py
new file mode 100644
index 000000000..34fef7270
--- /dev/null
+++ b/numpy/typing/tests/data/pass/numeric.py
@@ -0,0 +1,89 @@
+"""
+Tests for :mod:`numpy.core.numeric`.
+
+Does not include tests which fall under ``array_constructors``.
+
+"""
+
+from typing import List
+import numpy as np
+
+class SubClass(np.ndarray):
+ ...
+
+i8 = np.int64(1)
+
+A = np.arange(27).reshape(3, 3, 3)
+B: List[List[List[int]]] = A.tolist()
+C = np.empty((27, 27)).view(SubClass)
+
+np.count_nonzero(i8)
+np.count_nonzero(A)
+np.count_nonzero(B)
+np.count_nonzero(A, keepdims=True)
+np.count_nonzero(A, axis=0)
+
+np.isfortran(i8)
+np.isfortran(A)
+
+np.argwhere(i8)
+np.argwhere(A)
+
+np.flatnonzero(i8)
+np.flatnonzero(A)
+
+np.correlate(B[0][0], A.ravel(), mode="valid")
+np.correlate(A.ravel(), A.ravel(), mode="same")
+
+np.convolve(B[0][0], A.ravel(), mode="valid")
+np.convolve(A.ravel(), A.ravel(), mode="same")
+
+np.outer(i8, A)
+np.outer(B, A)
+np.outer(A, A)
+np.outer(A, A, out=C)
+
+np.tensordot(B, A)
+np.tensordot(A, A)
+np.tensordot(A, A, axes=0)
+np.tensordot(A, A, axes=(0, 1))
+
+np.isscalar(i8)
+np.isscalar(A)
+np.isscalar(B)
+
+np.roll(A, 1)
+np.roll(A, (1, 2))
+np.roll(B, 1)
+
+np.rollaxis(A, 0, 1)
+
+np.moveaxis(A, 0, 1)
+np.moveaxis(A, (0, 1), (1, 2))
+
+np.cross(B, A)
+np.cross(A, A)
+
+np.indices([0, 1, 2])
+np.indices([0, 1, 2], sparse=False)
+np.indices([0, 1, 2], sparse=True)
+
+np.binary_repr(1)
+
+np.base_repr(1)
+
+np.allclose(i8, A)
+np.allclose(B, A)
+np.allclose(A, A)
+
+np.isclose(i8, A)
+np.isclose(B, A)
+np.isclose(A, A)
+
+np.array_equal(i8, A)
+np.array_equal(B, A)
+np.array_equal(A, A)
+
+np.array_equiv(i8, A)
+np.array_equiv(B, A)
+np.array_equiv(A, A)
diff --git a/numpy/typing/tests/data/reveal/array_constructors.py b/numpy/typing/tests/data/reveal/array_constructors.py
index ba8a8eda1..9475b3884 100644
--- a/numpy/typing/tests/data/reveal/array_constructors.py
+++ b/numpy/typing/tests/data/reveal/array_constructors.py
@@ -1,12 +1,16 @@
-from typing import List
+from typing import List, Any
import numpy as np
class SubClass(np.ndarray): ...
+i8: np.int64
+
A: np.ndarray
B: SubClass
C: List[int]
+def func(i: int, j: int, **kwargs: Any) -> SubClass: ...
+
reveal_type(np.asarray(A)) # E: ndarray
reveal_type(np.asarray(B)) # E: ndarray
reveal_type(np.asarray(C)) # E: ndarray
@@ -40,3 +44,36 @@ reveal_type(np.linspace(0, 10)) # E: numpy.ndarray
reveal_type(np.linspace(0, 10, retstep=True)) # E: Tuple[numpy.ndarray, numpy.inexact]
reveal_type(np.logspace(0, 10)) # E: numpy.ndarray
reveal_type(np.geomspace(1, 10)) # E: numpy.ndarray
+
+reveal_type(np.zeros_like(A)) # E: numpy.ndarray
+reveal_type(np.zeros_like(C)) # E: numpy.ndarray
+reveal_type(np.zeros_like(B)) # E: SubClass
+reveal_type(np.zeros_like(B, dtype=np.int64)) # E: numpy.ndarray
+
+reveal_type(np.ones_like(A)) # E: numpy.ndarray
+reveal_type(np.ones_like(C)) # E: numpy.ndarray
+reveal_type(np.ones_like(B)) # E: SubClass
+reveal_type(np.ones_like(B, dtype=np.int64)) # E: numpy.ndarray
+
+reveal_type(np.empty_like(A)) # E: numpy.ndarray
+reveal_type(np.empty_like(C)) # E: numpy.ndarray
+reveal_type(np.empty_like(B)) # E: SubClass
+reveal_type(np.empty_like(B, dtype=np.int64)) # E: numpy.ndarray
+
+reveal_type(np.full_like(A, i8)) # E: numpy.ndarray
+reveal_type(np.full_like(C, i8)) # E: numpy.ndarray
+reveal_type(np.full_like(B, i8)) # E: SubClass
+reveal_type(np.full_like(B, i8, dtype=np.int64)) # E: numpy.ndarray
+
+reveal_type(np.ones(1)) # E: numpy.ndarray
+reveal_type(np.ones([1, 1, 1])) # E: numpy.ndarray
+
+reveal_type(np.full(1, i8)) # E: numpy.ndarray
+reveal_type(np.full([1, 1, 1], i8)) # E: numpy.ndarray
+
+reveal_type(np.indices([1, 2, 3])) # E: numpy.ndarray
+reveal_type(np.indices([1, 2, 3], sparse=True)) # E: tuple[numpy.ndarray]
+
+reveal_type(np.fromfunction(func, (3, 5))) # E: SubClass
+
+reveal_type(np.identity(10)) # E: numpy.ndarray
diff --git a/numpy/typing/tests/data/reveal/numeric.py b/numpy/typing/tests/data/reveal/numeric.py
new file mode 100644
index 000000000..6bd4ed9fd
--- /dev/null
+++ b/numpy/typing/tests/data/reveal/numeric.py
@@ -0,0 +1,89 @@
+"""
+Tests for :mod:`numpy.core.numeric`.
+
+Does not include tests which fall under ``array_constructors``.
+
+"""
+
+from typing import List
+import numpy as np
+
+class SubClass(np.ndarray):
+ ...
+
+i8: np.int64
+
+A: np.ndarray
+B: List[int]
+C: SubClass
+
+reveal_type(np.count_nonzero(i8)) # E: int
+reveal_type(np.count_nonzero(A)) # E: int
+reveal_type(np.count_nonzero(B)) # E: int
+reveal_type(np.count_nonzero(A, keepdims=True)) # E: Union[numpy.int64, numpy.int32, numpy.ndarray]
+reveal_type(np.count_nonzero(A, axis=0)) # E: Union[numpy.int64, numpy.int32, numpy.ndarray]
+
+reveal_type(np.isfortran(i8)) # E: bool
+reveal_type(np.isfortran(A)) # E: bool
+
+reveal_type(np.argwhere(i8)) # E: numpy.ndarray
+reveal_type(np.argwhere(A)) # E: numpy.ndarray
+
+reveal_type(np.flatnonzero(i8)) # E: numpy.ndarray
+reveal_type(np.flatnonzero(A)) # E: numpy.ndarray
+
+reveal_type(np.correlate(B, A, mode="valid")) # E: numpy.ndarray
+reveal_type(np.correlate(A, A, mode="same")) # E: numpy.ndarray
+
+reveal_type(np.convolve(B, A, mode="valid")) # E: numpy.ndarray
+reveal_type(np.convolve(A, A, mode="same")) # E: numpy.ndarray
+
+reveal_type(np.outer(i8, A)) # E: numpy.ndarray
+reveal_type(np.outer(B, A)) # E: numpy.ndarray
+reveal_type(np.outer(A, A)) # E: numpy.ndarray
+reveal_type(np.outer(A, A, out=C)) # E: SubClass
+
+reveal_type(np.tensordot(B, A)) # E: numpy.ndarray
+reveal_type(np.tensordot(A, A)) # E: numpy.ndarray
+reveal_type(np.tensordot(A, A, axes=0)) # E: numpy.ndarray
+reveal_type(np.tensordot(A, A, axes=(0, 1))) # E: numpy.ndarray
+
+reveal_type(np.isscalar(i8)) # E: bool
+reveal_type(np.isscalar(A)) # E: bool
+reveal_type(np.isscalar(B)) # E: bool
+
+reveal_type(np.roll(A, 1)) # E: numpy.ndarray
+reveal_type(np.roll(A, (1, 2))) # E: numpy.ndarray
+reveal_type(np.roll(B, 1)) # E: numpy.ndarray
+
+reveal_type(np.rollaxis(A, 0, 1)) # E: numpy.ndarray
+
+reveal_type(np.moveaxis(A, 0, 1)) # E: numpy.ndarray
+reveal_type(np.moveaxis(A, (0, 1), (1, 2))) # E: numpy.ndarray
+
+reveal_type(np.cross(B, A)) # E: numpy.ndarray
+reveal_type(np.cross(A, A)) # E: numpy.ndarray
+
+reveal_type(np.indices([0, 1, 2])) # E: numpy.ndarray
+reveal_type(np.indices([0, 1, 2], sparse=False)) # E: numpy.ndarray
+reveal_type(np.indices([0, 1, 2], sparse=True)) # E: tuple[numpy.ndarray]
+
+reveal_type(np.binary_repr(1)) # E: str
+
+reveal_type(np.base_repr(1)) # E: str
+
+reveal_type(np.allclose(i8, A)) # E: bool
+reveal_type(np.allclose(B, A)) # E: bool
+reveal_type(np.allclose(A, A)) # E: bool
+
+reveal_type(np.isclose(i8, A)) # E: Union[numpy.bool_, numpy.ndarray]
+reveal_type(np.isclose(B, A)) # E: Union[numpy.bool_, numpy.ndarray]
+reveal_type(np.isclose(A, A)) # E: Union[numpy.bool_, numpy.ndarray]
+
+reveal_type(np.array_equal(i8, A)) # E: bool
+reveal_type(np.array_equal(B, A)) # E: bool
+reveal_type(np.array_equal(A, A)) # E: bool
+
+reveal_type(np.array_equiv(i8, A)) # E: bool
+reveal_type(np.array_equiv(B, A)) # E: bool
+reveal_type(np.array_equiv(A, A)) # E: bool