summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBas van Beek <b.f.van.beek@vu.nl>2021-06-19 22:37:36 +0200
committerBas van Beek <43369155+BvB93@users.noreply.github.com>2021-06-20 16:54:32 +0200
commite3722f0e0d8893585b76be3a8bc389192dad3ef0 (patch)
treeb27ed5b6a4068c9318e9439b523af69da3fd18e2
parentc66ffd98ea1ca734862504bd68c382360152b61c (diff)
downloadnumpy-e3722f0e0d8893585b76be3a8bc389192dad3ef0.tar.gz
TST: Add typing tests for `np.lib.type_check`
-rw-r--r--numpy/typing/tests/data/fail/type_check.py13
-rw-r--r--numpy/typing/tests/data/reveal/type_check.py73
2 files changed, 86 insertions, 0 deletions
diff --git a/numpy/typing/tests/data/fail/type_check.py b/numpy/typing/tests/data/fail/type_check.py
new file mode 100644
index 000000000..95f52bfbd
--- /dev/null
+++ b/numpy/typing/tests/data/fail/type_check.py
@@ -0,0 +1,13 @@
+import numpy as np
+import numpy.typing as npt
+
+DTYPE_i8: np.dtype[np.int64]
+
+np.mintypecode(DTYPE_i8) # E: incompatible type
+np.iscomplexobj(DTYPE_i8) # E: incompatible type
+np.isrealobj(DTYPE_i8) # E: incompatible type
+
+np.typename(DTYPE_i8) # E: No overload variant
+np.typename("invalid") # E: No overload variant
+
+np.common_type(np.timedelta64()) # E: incompatible type
diff --git a/numpy/typing/tests/data/reveal/type_check.py b/numpy/typing/tests/data/reveal/type_check.py
new file mode 100644
index 000000000..416dd42a8
--- /dev/null
+++ b/numpy/typing/tests/data/reveal/type_check.py
@@ -0,0 +1,73 @@
+from typing import List
+import numpy as np
+import numpy.typing as npt
+
+f8: np.float64
+f: float
+
+# NOTE: Avoid importing the platform specific `np.float128` type
+AR_i8: npt.NDArray[np.int64]
+AR_i4: npt.NDArray[np.int32]
+AR_f2: npt.NDArray[np.float16]
+AR_f8: npt.NDArray[np.float64]
+AR_f16: npt.NDArray[np.floating[npt._128Bit]]
+AR_c8: npt.NDArray[np.complex64]
+AR_c16: npt.NDArray[np.complex128]
+
+AR_LIKE_f: List[float]
+
+class RealObj:
+ real: slice
+
+class ImagObj:
+ imag: slice
+
+reveal_type(np.mintypecode(["f8"], typeset="qfQF"))
+
+reveal_type(np.asfarray(AR_f8)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]]
+reveal_type(np.asfarray(AR_LIKE_f)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]]
+reveal_type(np.asfarray(AR_f8, dtype="c16")) # E: numpy.ndarray[Any, numpy.dtype[numpy.complexfloating[Any, Any]]]
+reveal_type(np.asfarray(AR_f8, dtype="i8")) # E: numpy.ndarray[Any, numpy.dtype[numpy.floating[Any]]]
+
+reveal_type(np.real(RealObj())) # E: slice
+reveal_type(np.real(AR_f8)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]]
+reveal_type(np.real(AR_c16)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]]
+reveal_type(np.real(AR_LIKE_f)) # E: numpy.ndarray[Any, numpy.dtype[Any]]
+
+reveal_type(np.imag(ImagObj())) # E: slice
+reveal_type(np.imag(AR_f8)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]]
+reveal_type(np.imag(AR_c16)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]]
+reveal_type(np.imag(AR_LIKE_f)) # E: numpy.ndarray[Any, numpy.dtype[Any]]
+
+reveal_type(np.iscomplex(f8)) # E: numpy.bool_
+reveal_type(np.iscomplex(AR_f8)) # E: numpy.ndarray[Any, numpy.dtype[numpy.bool_]]
+reveal_type(np.iscomplex(AR_LIKE_f)) # E: numpy.ndarray[Any, numpy.dtype[numpy.bool_]]
+
+reveal_type(np.isreal(f8)) # E: numpy.bool_
+reveal_type(np.isreal(AR_f8)) # E: numpy.ndarray[Any, numpy.dtype[numpy.bool_]]
+reveal_type(np.isreal(AR_LIKE_f)) # E: numpy.ndarray[Any, numpy.dtype[numpy.bool_]]
+
+reveal_type(np.iscomplexobj(f8)) # E: bool
+reveal_type(np.isrealobj(f8)) # E: bool
+
+reveal_type(np.nan_to_num(f8)) # E: {float64}
+reveal_type(np.nan_to_num(f, copy=True)) # E: Any
+reveal_type(np.nan_to_num(AR_f8, nan=1.5)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]]
+reveal_type(np.nan_to_num(AR_LIKE_f, posinf=9999)) # E: numpy.ndarray[Any, numpy.dtype[Any]]
+
+reveal_type(np.real_if_close(AR_f8)) # E: numpy.ndarray[Any, numpy.dtype[{float64}]]
+reveal_type(np.real_if_close(AR_c16)) # E: Union[numpy.ndarray[Any, numpy.dtype[{float64}]], numpy.ndarray[Any, numpy.dtype[{complex128}]]]
+reveal_type(np.real_if_close(AR_c8)) # E: Union[numpy.ndarray[Any, numpy.dtype[{float32}]], numpy.ndarray[Any, numpy.dtype[{complex64}]]]
+reveal_type(np.real_if_close(AR_LIKE_f)) # E: numpy.ndarray[Any, numpy.dtype[Any]]
+
+reveal_type(np.typename("h")) # E: Literal['short']
+reveal_type(np.typename("B")) # E: Literal['unsigned char']
+reveal_type(np.typename("V")) # E: Literal['void']
+reveal_type(np.typename("S1")) # E: Literal['character']
+
+reveal_type(np.common_type(AR_i4)) # E: Type[{float64}]
+reveal_type(np.common_type(AR_f2)) # E: Type[{float16}]
+reveal_type(np.common_type(AR_f2, AR_i4)) # E: Type[{float64}]
+reveal_type(np.common_type(AR_f16, AR_i4)) # E: Type[{float128}]
+reveal_type(np.common_type(AR_c8, AR_f2)) # E: Type[{complex64}]
+reveal_type(np.common_type(AR_f2, AR_c8, AR_i4)) # E: Type[{complex128}]