Skip to content

Commit edef73f

Browse files
committed
TYP: Fix inconsistent NDArray[float64].__[r]truediv__ return type with float
1 parent 67fb349 commit edef73f

File tree

2 files changed

+88
-2
lines changed

2 files changed

+88
-2
lines changed

numpy/__init__.pyi

+2-2
Original file line numberDiff line numberDiff line change
@@ -2989,7 +2989,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DTypeT_co]):
29892989
def __rmul__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
29902990

29912991
@overload
2992-
def __truediv__(self: _ArrayInt_co, other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
2992+
def __truediv__(self: _ArrayInt_co | NDArray[floating[_64Bit]], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
29932993
@overload
29942994
def __truediv__(self: _ArrayFloat64_co, other: _ArrayLikeInt_co | _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
29952995
@overload
@@ -3020,7 +3020,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DTypeT_co]):
30203020
def __truediv__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
30213021

30223022
@overload
3023-
def __rtruediv__(self: _ArrayInt_co, other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
3023+
def __rtruediv__(self: _ArrayInt_co | NDArray[floating[_64Bit]], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
30243024
@overload
30253025
def __rtruediv__(self: _ArrayFloat64_co, other: _ArrayLikeInt_co | _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
30263026
@overload

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

+86
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,92 @@ assert_type(AR_LIKE_m - AR_O, Any)
185185
assert_type(AR_LIKE_M - AR_O, Any)
186186
assert_type(AR_LIKE_O - AR_O, Any)
187187

188+
# Array "true" division
189+
190+
assert_type(AR_f / b, npt.NDArray[np.float64])
191+
assert_type(AR_f / i, npt.NDArray[np.float64])
192+
assert_type(AR_f / f, npt.NDArray[np.float64])
193+
194+
assert_type(b / AR_f, npt.NDArray[np.float64])
195+
assert_type(i / AR_f, npt.NDArray[np.float64])
196+
assert_type(f / AR_f, npt.NDArray[np.float64])
197+
198+
assert_type(AR_b / AR_LIKE_b, npt.NDArray[np.float64])
199+
assert_type(AR_b / AR_LIKE_u, npt.NDArray[np.float64])
200+
assert_type(AR_b / AR_LIKE_i, npt.NDArray[np.float64])
201+
assert_type(AR_b / AR_LIKE_f, npt.NDArray[np.float64])
202+
assert_type(AR_b / AR_LIKE_O, Any)
203+
204+
assert_type(AR_LIKE_b / AR_b, npt.NDArray[np.float64])
205+
assert_type(AR_LIKE_u / AR_b, npt.NDArray[np.float64])
206+
assert_type(AR_LIKE_i / AR_b, npt.NDArray[np.float64])
207+
assert_type(AR_LIKE_f / AR_b, npt.NDArray[np.float64])
208+
assert_type(AR_LIKE_O / AR_b, Any)
209+
210+
assert_type(AR_u / AR_LIKE_b, npt.NDArray[np.float64])
211+
assert_type(AR_u / AR_LIKE_u, npt.NDArray[np.float64])
212+
assert_type(AR_u / AR_LIKE_i, npt.NDArray[np.float64])
213+
assert_type(AR_u / AR_LIKE_f, npt.NDArray[np.float64])
214+
assert_type(AR_u / AR_LIKE_O, Any)
215+
216+
assert_type(AR_LIKE_b / AR_u, npt.NDArray[np.float64])
217+
assert_type(AR_LIKE_u / AR_u, npt.NDArray[np.float64])
218+
assert_type(AR_LIKE_i / AR_u, npt.NDArray[np.float64])
219+
assert_type(AR_LIKE_f / AR_u, npt.NDArray[np.float64])
220+
assert_type(AR_LIKE_m / AR_u, npt.NDArray[np.timedelta64])
221+
assert_type(AR_LIKE_O / AR_u, Any)
222+
223+
assert_type(AR_i / AR_LIKE_b, npt.NDArray[np.float64])
224+
assert_type(AR_i / AR_LIKE_u, npt.NDArray[np.float64])
225+
assert_type(AR_i / AR_LIKE_i, npt.NDArray[np.float64])
226+
assert_type(AR_i / AR_LIKE_f, npt.NDArray[np.float64])
227+
assert_type(AR_i / AR_LIKE_O, Any)
228+
229+
assert_type(AR_LIKE_b / AR_i, npt.NDArray[np.float64])
230+
assert_type(AR_LIKE_u / AR_i, npt.NDArray[np.float64])
231+
assert_type(AR_LIKE_i / AR_i, npt.NDArray[np.float64])
232+
assert_type(AR_LIKE_f / AR_i, npt.NDArray[np.float64])
233+
assert_type(AR_LIKE_m / AR_i, npt.NDArray[np.timedelta64])
234+
assert_type(AR_LIKE_O / AR_i, Any)
235+
236+
assert_type(AR_f / AR_LIKE_b, npt.NDArray[np.float64])
237+
assert_type(AR_f / AR_LIKE_u, npt.NDArray[np.float64])
238+
assert_type(AR_f / AR_LIKE_i, npt.NDArray[np.float64])
239+
assert_type(AR_f / AR_LIKE_f, npt.NDArray[np.float64])
240+
assert_type(AR_f / AR_LIKE_O, Any)
241+
242+
assert_type(AR_LIKE_b / AR_f, npt.NDArray[np.float64])
243+
assert_type(AR_LIKE_u / AR_f, npt.NDArray[np.float64])
244+
assert_type(AR_LIKE_i / AR_f, npt.NDArray[np.float64])
245+
assert_type(AR_LIKE_f / AR_f, npt.NDArray[np.float64])
246+
assert_type(AR_LIKE_m / AR_f, npt.NDArray[np.timedelta64])
247+
assert_type(AR_LIKE_O / AR_f, Any)
248+
249+
assert_type(AR_m / AR_LIKE_u, npt.NDArray[np.timedelta64])
250+
assert_type(AR_m / AR_LIKE_i, npt.NDArray[np.timedelta64])
251+
assert_type(AR_m / AR_LIKE_f, npt.NDArray[np.timedelta64])
252+
assert_type(AR_m / AR_LIKE_m, npt.NDArray[np.float64])
253+
assert_type(AR_m / AR_LIKE_O, Any)
254+
255+
assert_type(AR_LIKE_m / AR_m, npt.NDArray[np.float64])
256+
assert_type(AR_LIKE_O / AR_m, Any)
257+
258+
assert_type(AR_O / AR_LIKE_b, Any)
259+
assert_type(AR_O / AR_LIKE_u, Any)
260+
assert_type(AR_O / AR_LIKE_i, Any)
261+
assert_type(AR_O / AR_LIKE_f, Any)
262+
assert_type(AR_O / AR_LIKE_m, Any)
263+
assert_type(AR_O / AR_LIKE_M, Any)
264+
assert_type(AR_O / AR_LIKE_O, Any)
265+
266+
assert_type(AR_LIKE_b / AR_O, Any)
267+
assert_type(AR_LIKE_u / AR_O, Any)
268+
assert_type(AR_LIKE_i / AR_O, Any)
269+
assert_type(AR_LIKE_f / AR_O, Any)
270+
assert_type(AR_LIKE_m / AR_O, Any)
271+
assert_type(AR_LIKE_M / AR_O, Any)
272+
assert_type(AR_LIKE_O / AR_O, Any)
273+
188274
# Array floor division
189275

190276
assert_type(AR_b // AR_LIKE_b, npt.NDArray[np.int8])

0 commit comments

Comments
 (0)