Skip to content

Commit 758d986

Browse files
authored
Merge pull request numpy#31017 from jorenham/typing/strings-ufuncs
TYP: fix ``numpy.strings`` ufunc stubs
2 parents c270214 + d3f7e37 commit 758d986

4 files changed

Lines changed: 23 additions & 90 deletions

File tree

numpy/_core/defchararray.pyi

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ from typing import Any, Literal as L, Self, SupportsIndex, SupportsInt, overload
33
from typing_extensions import TypeVar, deprecated
44

55
import numpy as np
6-
from numpy import _OrderKACF, bytes_, dtype, int_, ndarray, object_, str_
6+
from numpy import _OrderKACF, add, bytes_, dtype, int_, ndarray, object_, str_
77
from numpy._core.multiarray import compare_chararrays
88
from numpy._typing import (
99
NDArray,
@@ -376,15 +376,6 @@ def less(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
376376
@overload
377377
def less(x1: T_co, x2: T_co) -> NDArray[np.bool]: ...
378378

379-
@overload
380-
def add(x1: U_co, x2: U_co) -> NDArray[np.str_]: ...
381-
@overload
382-
def add(x1: S_co, x2: S_co) -> NDArray[np.bytes_]: ...
383-
@overload
384-
def add(x1: _StringDTypeSupportsArray, x2: _StringDTypeSupportsArray) -> _StringDTypeArray: ...
385-
@overload
386-
def add(x1: T_co, x2: T_co) -> _StringDTypeOrUnicodeArray: ...
387-
388379
@overload
389380
def multiply(a: U_co, i: i_co) -> NDArray[np.str_]: ...
390381
@overload

numpy/_core/strings.pyi

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import overload
22

33
import numpy as np
4+
from numpy import add, equal, greater, greater_equal, less, less_equal, not_equal
45
from numpy._globals import _NoValueType
56
from numpy._typing import (
67
NDArray,
@@ -66,57 +67,6 @@ type _StringDTypeArray = np.ndarray[_AnyShape, np.dtypes.StringDType]
6667
type _StringDTypeSupportsArray = _SupportsArray[np.dtypes.StringDType]
6768
type _StringDTypeOrUnicodeArray = NDArray[np.str_] | _StringDTypeArray
6869

69-
@overload
70-
def equal(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
71-
@overload
72-
def equal(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
73-
@overload
74-
def equal(x1: T_co, x2: T_co) -> NDArray[np.bool]: ...
75-
76-
@overload
77-
def not_equal(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
78-
@overload
79-
def not_equal(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
80-
@overload
81-
def not_equal(x1: T_co, x2: T_co) -> NDArray[np.bool]: ...
82-
83-
@overload
84-
def greater_equal(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
85-
@overload
86-
def greater_equal(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
87-
@overload
88-
def greater_equal(x1: T_co, x2: T_co) -> NDArray[np.bool]: ...
89-
90-
@overload
91-
def less_equal(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
92-
@overload
93-
def less_equal(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
94-
@overload
95-
def less_equal(x1: T_co, x2: T_co) -> NDArray[np.bool]: ...
96-
97-
@overload
98-
def greater(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
99-
@overload
100-
def greater(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
101-
@overload
102-
def greater(x1: T_co, x2: T_co) -> NDArray[np.bool]: ...
103-
104-
@overload
105-
def less(x1: U_co, x2: U_co) -> NDArray[np.bool]: ...
106-
@overload
107-
def less(x1: S_co, x2: S_co) -> NDArray[np.bool]: ...
108-
@overload
109-
def less(x1: T_co, x2: T_co) -> NDArray[np.bool]: ...
110-
111-
@overload
112-
def add(x1: U_co, x2: U_co) -> NDArray[np.str_]: ...
113-
@overload
114-
def add(x1: S_co, x2: S_co) -> NDArray[np.bytes_]: ...
115-
@overload
116-
def add(x1: _StringDTypeSupportsArray, x2: _StringDTypeSupportsArray) -> _StringDTypeArray: ...
117-
@overload
118-
def add(x1: T_co, x2: T_co) -> _StringDTypeOrUnicodeArray: ...
119-
12070
@overload
12171
def multiply(a: U_co, i: i_co) -> NDArray[np.str_]: ...
12272
@overload

numpy/typing/tests/data/fail/strings.pyi

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@ import numpy.typing as npt
44
AR_U: npt.NDArray[np.str_]
55
AR_S: npt.NDArray[np.bytes_]
66

7-
np.strings.equal(AR_U, AR_S) # type: ignore[arg-type]
8-
np.strings.not_equal(AR_U, AR_S) # type: ignore[arg-type]
9-
10-
np.strings.greater_equal(AR_U, AR_S) # type: ignore[arg-type]
11-
np.strings.less_equal(AR_U, AR_S) # type: ignore[arg-type]
12-
np.strings.greater(AR_U, AR_S) # type: ignore[arg-type]
13-
np.strings.less(AR_U, AR_S) # type: ignore[arg-type]
14-
157
np.strings.encode(AR_S) # type: ignore[arg-type]
168
np.strings.decode(AR_U) # type: ignore[arg-type]
179

numpy/typing/tests/data/reveal/strings.pyi

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,33 @@ AR_U: npt.NDArray[np.str_]
1111
AR_S: npt.NDArray[np.bytes_]
1212
AR_T: AR_T_alias
1313

14-
assert_type(np.strings.equal(AR_U, AR_U), npt.NDArray[np.bool])
15-
assert_type(np.strings.equal(AR_S, AR_S), npt.NDArray[np.bool])
16-
assert_type(np.strings.equal(AR_T, AR_T), npt.NDArray[np.bool])
14+
assert_type(np.strings.equal(AR_U, AR_U), np.ndarray)
15+
assert_type(np.strings.equal(AR_S, AR_S), np.ndarray)
16+
assert_type(np.strings.equal(AR_T, AR_T), np.ndarray)
1717

18-
assert_type(np.strings.not_equal(AR_U, AR_U), npt.NDArray[np.bool])
19-
assert_type(np.strings.not_equal(AR_S, AR_S), npt.NDArray[np.bool])
20-
assert_type(np.strings.not_equal(AR_T, AR_T), npt.NDArray[np.bool])
18+
assert_type(np.strings.not_equal(AR_U, AR_U), np.ndarray)
19+
assert_type(np.strings.not_equal(AR_S, AR_S), np.ndarray)
20+
assert_type(np.strings.not_equal(AR_T, AR_T), np.ndarray)
2121

22-
assert_type(np.strings.greater_equal(AR_U, AR_U), npt.NDArray[np.bool])
23-
assert_type(np.strings.greater_equal(AR_S, AR_S), npt.NDArray[np.bool])
24-
assert_type(np.strings.greater_equal(AR_T, AR_T), npt.NDArray[np.bool])
22+
assert_type(np.strings.greater_equal(AR_U, AR_U), np.ndarray)
23+
assert_type(np.strings.greater_equal(AR_S, AR_S), np.ndarray)
24+
assert_type(np.strings.greater_equal(AR_T, AR_T), np.ndarray)
2525

26-
assert_type(np.strings.less_equal(AR_U, AR_U), npt.NDArray[np.bool])
27-
assert_type(np.strings.less_equal(AR_S, AR_S), npt.NDArray[np.bool])
28-
assert_type(np.strings.less_equal(AR_T, AR_T), npt.NDArray[np.bool])
26+
assert_type(np.strings.less_equal(AR_U, AR_U), np.ndarray)
27+
assert_type(np.strings.less_equal(AR_S, AR_S), np.ndarray)
28+
assert_type(np.strings.less_equal(AR_T, AR_T), np.ndarray)
2929

30-
assert_type(np.strings.greater(AR_U, AR_U), npt.NDArray[np.bool])
31-
assert_type(np.strings.greater(AR_S, AR_S), npt.NDArray[np.bool])
32-
assert_type(np.strings.greater(AR_T, AR_T), npt.NDArray[np.bool])
30+
assert_type(np.strings.greater(AR_U, AR_U), np.ndarray)
31+
assert_type(np.strings.greater(AR_S, AR_S), np.ndarray)
32+
assert_type(np.strings.greater(AR_T, AR_T), np.ndarray)
3333

34-
assert_type(np.strings.less(AR_U, AR_U), npt.NDArray[np.bool])
35-
assert_type(np.strings.less(AR_S, AR_S), npt.NDArray[np.bool])
36-
assert_type(np.strings.less(AR_T, AR_T), npt.NDArray[np.bool])
34+
assert_type(np.strings.less(AR_U, AR_U), np.ndarray)
35+
assert_type(np.strings.less(AR_S, AR_S), np.ndarray)
36+
assert_type(np.strings.less(AR_T, AR_T), np.ndarray)
3737

38-
assert_type(np.strings.add(AR_U, AR_U), npt.NDArray[np.str_])
39-
assert_type(np.strings.add(AR_S, AR_S), npt.NDArray[np.bytes_])
40-
assert_type(np.strings.add(AR_T, AR_T), AR_T_alias)
38+
assert_type(np.strings.add(AR_U, AR_U), np.ndarray)
39+
assert_type(np.strings.add(AR_S, AR_S), np.ndarray)
40+
assert_type(np.strings.add(AR_T, AR_T), np.ndarray)
4141

4242
assert_type(np.strings.multiply(AR_U, 5), npt.NDArray[np.str_])
4343
assert_type(np.strings.multiply(AR_S, [5, 4, 3]), npt.NDArray[np.bytes_])

0 commit comments

Comments
 (0)