Skip to content

Commit db09329

Browse files
committed
TST: Add typing tests for nditer and nested_iters
1 parent 783fa0d commit db09329

File tree

4 files changed

+62
-13
lines changed

4 files changed

+62
-13
lines changed

numpy/typing/tests/data/fail/multiarray.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,10 @@ def func(a: int) -> None: ...
4747
np.compare_chararrays("a", b"a", "==", False) # E: No overload variant
4848

4949
np.add_docstring(func, None) # E: incompatible type
50+
51+
np.nested_iters([AR_i8, AR_i8]) # E: Missing positional argument
52+
np.nested_iters([AR_i8, AR_i8], 0) # E: incompatible type
53+
np.nested_iters([AR_i8, AR_i8], [0]) # E: incompatible type
54+
np.nested_iters([AR_i8, AR_i8], [[0], [1]], flags=["test"]) # E: incompatible type
55+
np.nested_iters([AR_i8, AR_i8], [[0], [1]], op_flags=[["test"]]) # E: incompatible type
56+
np.nested_iters([AR_i8, AR_i8], [[0], [1]], buffersize=1.0) # E: incompatible type
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import numpy as np
2+
3+
class Test(np.nditer): ... # E: Cannot inherit from final class
4+
5+
np.nditer([0, 1], flags=["test"]) # E: incompatible type
6+
np.nditer([0, 1], op_flags=[["test"]]) # E: incompatible type
7+
np.nditer([0, 1], itershape=(1.0,)) # E: incompatible type
8+
np.nditer([0, 1], buffersize=1.0) # E: incompatible type

numpy/typing/tests/data/reveal/multiarray.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ class SubClass(np.ndarray[Any, np.dtype[_SCT]]): ...
2525
b_f8 = np.broadcast(AR_f8)
2626
b_i8_f8_f8 = np.broadcast(AR_i8, AR_f8, AR_f8)
2727

28+
nditer_obj: np.nditer
29+
2830
def func(a: int) -> bool: ...
2931

3032
reveal_type(next(b_f8)) # E: tuple[Any]
@@ -123,3 +125,8 @@ def func(a: int) -> bool: ...
123125
reveal_type(np.compare_chararrays(b"a", b"a", "==", True)) # E: numpy.ndarray[Any, numpy.dtype[numpy.bool_]]
124126

125127
reveal_type(np.add_docstring(func, "test")) # E: None
128+
129+
reveal_type(np.nested_iters([AR_i8, AR_i8], [[0], [1]], flags=["c_index"])) # E: tuple[numpy.nditer]
130+
reveal_type(np.nested_iters([AR_i8, AR_i8], [[0], [1]], op_flags=[["readonly", "readonly"]])) # E: tuple[numpy.nditer]
131+
reveal_type(np.nested_iters([AR_i8, AR_i8], [[0], [1]], op_dtypes=np.int_)) # E: tuple[numpy.nditer]
132+
reveal_type(np.nested_iters([AR_i8, AR_i8], [[0], [1]], order="C", casting="no")) # E: tuple[numpy.nditer]
Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,46 @@
1-
import copy
21
import numpy as np
32

43
nditer_obj: np.nditer
54

6-
with nditer_obj as context:
7-
reveal_type(context) # E: numpy.nditer
5+
reveal_type(np.nditer([0, 1], flags=["c_index"])) # E: numpy.nditer
6+
reveal_type(np.nditer([0, 1], op_flags=[["readonly", "readonly"]])) # E: numpy.nditer
7+
reveal_type(np.nditer([0, 1], op_dtypes=np.int_)) # E: numpy.nditer
8+
reveal_type(np.nditer([0, 1], order="C", casting="no")) # E: numpy.nditer
89

9-
reveal_type(len(nditer_obj)) # E: builtins.int
10-
reveal_type(copy.copy(nditer_obj)) # E: numpy.nditer
11-
reveal_type(next(nditer_obj)) # E: Any
12-
reveal_type(iter(nditer_obj)) # E: typing.Iterator[Any]
13-
reveal_type(nditer_obj[1]) # E: Any
14-
reveal_type(nditer_obj[1:5]) # E: Any
10+
reveal_type(nditer_obj.dtypes) # E: tuple[numpy.dtype[Any]]
11+
reveal_type(nditer_obj.finished) # E: bool
12+
reveal_type(nditer_obj.has_delayed_bufalloc) # E: bool
13+
reveal_type(nditer_obj.has_index) # E: bool
14+
reveal_type(nditer_obj.has_multi_index) # E: bool
15+
reveal_type(nditer_obj.index) # E: int
16+
reveal_type(nditer_obj.iterationneedsapi) # E: bool
17+
reveal_type(nditer_obj.iterindex) # E: int
18+
reveal_type(nditer_obj.iterrange) # E: tuple[builtins.int]
19+
reveal_type(nditer_obj.itersize) # E: int
20+
reveal_type(nditer_obj.itviews) # E: tuple[numpy.ndarray[Any, numpy.dtype[Any]]]
21+
reveal_type(nditer_obj.multi_index) # E: tuple[builtins.int]
22+
reveal_type(nditer_obj.ndim) # E: int
23+
reveal_type(nditer_obj.nop) # E: int
24+
reveal_type(nditer_obj.operands) # E: tuple[numpy.ndarray[Any, numpy.dtype[Any]]]
25+
reveal_type(nditer_obj.shape) # E: tuple[builtins.int]
26+
reveal_type(nditer_obj.value) # E: tuple[numpy.ndarray[Any, numpy.dtype[Any]]]
1527

16-
nditer_obj[1] = 1
17-
nditer_obj[1:5] = 1
18-
del nditer_obj[1]
19-
del nditer_obj[1:5]
28+
reveal_type(nditer_obj.close()) # E: None
29+
reveal_type(nditer_obj.copy()) # E: numpy.nditer
30+
reveal_type(nditer_obj.debug_print()) # E: None
31+
reveal_type(nditer_obj.enable_external_loop()) # E: None
32+
reveal_type(nditer_obj.iternext()) # E: bool
33+
reveal_type(nditer_obj.remove_axis(0)) # E: None
34+
reveal_type(nditer_obj.remove_multi_index()) # E: None
35+
reveal_type(nditer_obj.reset()) # E: None
36+
37+
reveal_type(len(nditer_obj)) # E: int
38+
reveal_type(iter(nditer_obj)) # E: Iterator[builtins.tuple[numpy.ndarray[Any, numpy.dtype[Any]]]]
39+
reveal_type(next(nditer_obj)) # E: tuple[numpy.ndarray[Any, numpy.dtype[Any]]]
40+
reveal_type(nditer_obj.__copy__()) # E: numpy.nditer
41+
with nditer_obj as f:
42+
reveal_type(f) # E: numpy.nditer
43+
reveal_type(nditer_obj[0]) # E: numpy.ndarray[Any, numpy.dtype[Any]]
44+
reveal_type(nditer_obj[:]) # E: tuple[numpy.ndarray[Any, numpy.dtype[Any]]]
45+
nditer_obj[0] = 0
46+
nditer_obj[:] = [0, 1]

0 commit comments

Comments
 (0)