Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7d1ebbe

Browse files
authored
Merge pull request#28853 from charris/backport-28807
TYP: fix ``NDArray[floating] + float`` return type
2 parents7f273fc +a46d745 commit7d1ebbe

File tree

2 files changed

+48
-27
lines changed

2 files changed

+48
-27
lines changed

‎numpy/__init__.pyi

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2734,7 +2734,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
27342734
@overload
27352735
def__mod__(self:NDArray[np.bool],other:_ArrayLike[_RealNumberT],/)->NDArray[_RealNumberT]: ...# type: ignore[overload-overlap]
27362736
@overload
2737-
def__mod__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
2737+
def__mod__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
27382738
@overload
27392739
def__mod__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
27402740
@overload
@@ -2759,7 +2759,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
27592759
@overload
27602760
def__rmod__(self:NDArray[np.bool],other:_ArrayLike[_RealNumberT],/)->NDArray[_RealNumberT]: ...# type: ignore[overload-overlap]
27612761
@overload
2762-
def__rmod__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
2762+
def__rmod__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
27632763
@overload
27642764
def__rmod__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
27652765
@overload
@@ -2784,7 +2784,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
27842784
@overload
27852785
def__divmod__(self:NDArray[np.bool],rhs:_ArrayLike[_RealNumberT],/)->_2Tuple[NDArray[_RealNumberT]]: ...# type: ignore[overload-overlap]
27862786
@overload
2787-
def__divmod__(self:NDArray[floating[_64Bit]],rhs:_ArrayLikeFloat64_co,/)->_2Tuple[NDArray[float64]]: ...
2787+
def__divmod__(self:NDArray[float64],rhs:_ArrayLikeFloat64_co,/)->_2Tuple[NDArray[float64]]: ...
27882788
@overload
27892789
def__divmod__(self:_ArrayFloat64_co,rhs:_ArrayLike[floating[_64Bit]],/)->_2Tuple[NDArray[float64]]: ...
27902790
@overload
@@ -2805,7 +2805,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
28052805
@overload
28062806
def__rdivmod__(self:NDArray[np.bool],lhs:_ArrayLike[_RealNumberT],/)->_2Tuple[NDArray[_RealNumberT]]: ...# type: ignore[overload-overlap]
28072807
@overload
2808-
def__rdivmod__(self:NDArray[floating[_64Bit]],lhs:_ArrayLikeFloat64_co,/)->_2Tuple[NDArray[float64]]: ...
2808+
def__rdivmod__(self:NDArray[float64],lhs:_ArrayLikeFloat64_co,/)->_2Tuple[NDArray[float64]]: ...
28092809
@overload
28102810
def__rdivmod__(self:_ArrayFloat64_co,lhs:_ArrayLike[floating[_64Bit]],/)->_2Tuple[NDArray[float64]]: ...
28112811
@overload
@@ -2826,11 +2826,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
28262826
@overload
28272827
def__add__(self:NDArray[np.bool],other:_ArrayLike[_NumberT],/)->NDArray[_NumberT]: ...# type: ignore[overload-overlap]
28282828
@overload
2829-
def__add__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
2829+
def__add__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
28302830
@overload
28312831
def__add__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
28322832
@overload
2833-
def__add__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
2833+
def__add__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
28342834
@overload
28352835
def__add__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
28362836
@overload
@@ -2863,11 +2863,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
28632863
@overload
28642864
def__radd__(self:NDArray[np.bool],other:_ArrayLike[_NumberT],/)->NDArray[_NumberT]: ...# type: ignore[overload-overlap]
28652865
@overload
2866-
def__radd__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
2866+
def__radd__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
28672867
@overload
28682868
def__radd__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
28692869
@overload
2870-
def__radd__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
2870+
def__radd__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
28712871
@overload
28722872
def__radd__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
28732873
@overload
@@ -2900,11 +2900,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
29002900
@overload
29012901
def__sub__(self:NDArray[np.bool],other:_ArrayLike[_NumberT],/)->NDArray[_NumberT]: ...# type: ignore[overload-overlap]
29022902
@overload
2903-
def__sub__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
2903+
def__sub__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
29042904
@overload
29052905
def__sub__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
29062906
@overload
2907-
def__sub__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
2907+
def__sub__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
29082908
@overload
29092909
def__sub__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
29102910
@overload
@@ -2937,11 +2937,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
29372937
@overload
29382938
def__rsub__(self:NDArray[np.bool],other:_ArrayLike[_NumberT],/)->NDArray[_NumberT]: ...# type: ignore[overload-overlap]
29392939
@overload
2940-
def__rsub__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
2940+
def__rsub__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
29412941
@overload
29422942
def__rsub__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
29432943
@overload
2944-
def__rsub__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
2944+
def__rsub__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
29452945
@overload
29462946
def__rsub__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
29472947
@overload
@@ -2974,11 +2974,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
29742974
@overload
29752975
def__mul__(self:NDArray[np.bool],other:_ArrayLike[_NumberT],/)->NDArray[_NumberT]: ...# type: ignore[overload-overlap]
29762976
@overload
2977-
def__mul__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
2977+
def__mul__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
29782978
@overload
29792979
def__mul__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
29802980
@overload
2981-
def__mul__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
2981+
def__mul__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
29822982
@overload
29832983
def__mul__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
29842984
@overload
@@ -3009,11 +3009,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
30093009
@overload
30103010
def__rmul__(self:NDArray[np.bool],other:_ArrayLike[_NumberT],/)->NDArray[_NumberT]: ...# type: ignore[overload-overlap]
30113011
@overload
3012-
def__rmul__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
3012+
def__rmul__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
30133013
@overload
30143014
def__rmul__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
30153015
@overload
3016-
def__rmul__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
3016+
def__rmul__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
30173017
@overload
30183018
def__rmul__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
30193019
@overload
@@ -3036,11 +3036,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
30363036
def__rmul__(self:NDArray[Any],other:_ArrayLikeObject_co,/)->Any: ...
30373037

30383038
@overload
3039-
def__truediv__(self:_ArrayInt_co|NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
3039+
def__truediv__(self:_ArrayInt_co|NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
30403040
@overload
30413041
def__truediv__(self:_ArrayFloat64_co,other:_ArrayLikeInt_co|_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
30423042
@overload
3043-
def__truediv__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
3043+
def__truediv__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
30443044
@overload
30453045
def__truediv__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
30463046
@overload
@@ -3067,11 +3067,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
30673067
def__truediv__(self:NDArray[Any],other:_ArrayLikeObject_co,/)->Any: ...
30683068

30693069
@overload
3070-
def__rtruediv__(self:_ArrayInt_co|NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
3070+
def__rtruediv__(self:_ArrayInt_co|NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
30713071
@overload
30723072
def__rtruediv__(self:_ArrayFloat64_co,other:_ArrayLikeInt_co|_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
30733073
@overload
3074-
def__rtruediv__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
3074+
def__rtruediv__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
30753075
@overload
30763076
def__rtruediv__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
30773077
@overload
@@ -3104,7 +3104,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
31043104
@overload
31053105
def__floordiv__(self:NDArray[np.bool],other:_ArrayLike[_RealNumberT],/)->NDArray[_RealNumberT]: ...# type: ignore[overload-overlap]
31063106
@overload
3107-
def__floordiv__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
3107+
def__floordiv__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
31083108
@overload
31093109
def__floordiv__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
31103110
@overload
@@ -3133,7 +3133,7 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
31333133
@overload
31343134
def__rfloordiv__(self:NDArray[np.bool],other:_ArrayLike[_RealNumberT],/)->NDArray[_RealNumberT]: ...# type: ignore[overload-overlap]
31353135
@overload
3136-
def__rfloordiv__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
3136+
def__rfloordiv__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
31373137
@overload
31383138
def__rfloordiv__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
31393139
@overload
@@ -3160,11 +3160,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
31603160
@overload
31613161
def__pow__(self:NDArray[np.bool],other:_ArrayLike[_NumberT],/)->NDArray[_NumberT]: ...# type: ignore[overload-overlap]
31623162
@overload
3163-
def__pow__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
3163+
def__pow__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
31643164
@overload
31653165
def__pow__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
31663166
@overload
3167-
def__pow__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
3167+
def__pow__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
31683168
@overload
31693169
def__pow__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
31703170
@overload
@@ -3191,11 +3191,11 @@ class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DType_co]):
31913191
@overload
31923192
def__rpow__(self:NDArray[np.bool],other:_ArrayLike[_NumberT],/)->NDArray[_NumberT]: ...# type: ignore[overload-overlap]
31933193
@overload
3194-
def__rpow__(self:NDArray[floating[_64Bit]],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
3194+
def__rpow__(self:NDArray[float64],other:_ArrayLikeFloat64_co,/)->NDArray[float64]: ...
31953195
@overload
31963196
def__rpow__(self:_ArrayFloat64_co,other:_ArrayLike[floating[_64Bit]],/)->NDArray[float64]: ...
31973197
@overload
3198-
def__rpow__(self:NDArray[complexfloating[_64Bit]],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
3198+
def__rpow__(self:NDArray[complex128],other:_ArrayLikeComplex128_co,/)->NDArray[complex128]: ...
31993199
@overload
32003200
def__rpow__(self:_ArrayComplex128_co,other:_ArrayLike[complexfloating[_64Bit]],/)->NDArray[complex128]: ...
32013201
@overload

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

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ AR_c: npt.NDArray[np.complex128]
5050
AR_m:npt.NDArray[np.timedelta64]
5151
AR_M:npt.NDArray[np.datetime64]
5252
AR_O:npt.NDArray[np.object_]
53-
AR_number:npt.NDArray[np.number[Any]]
53+
AR_floating:npt.NDArray[np.floating]
54+
AR_number:npt.NDArray[np.number]
5455
AR_Any:npt.NDArray[Any]
5556

5657
AR_LIKE_b:list[bool]
@@ -654,3 +655,23 @@ assert_type(AR_f + u4, npt.NDArray[np.float64])
654655
# Any
655656

656657
assert_type(AR_Any+2,npt.NDArray[Any])
658+
659+
# regression tests for https://github.com/numpy/numpy/issues/28805
660+
661+
assert_type(AR_floating+f,npt.NDArray[np.floating])
662+
assert_type(AR_floating-f,npt.NDArray[np.floating])
663+
assert_type(AR_floating*f,npt.NDArray[np.floating])
664+
assert_type(AR_floating**f,npt.NDArray[np.floating])
665+
assert_type(AR_floating/f,npt.NDArray[np.floating])
666+
assert_type(AR_floating//f,npt.NDArray[np.floating])
667+
assert_type(AR_floating%f,npt.NDArray[np.floating])
668+
assert_type(divmod(AR_floating,f),tuple[npt.NDArray[np.floating],npt.NDArray[np.floating]])
669+
670+
assert_type(f+AR_floating,npt.NDArray[np.floating])
671+
assert_type(f-AR_floating,npt.NDArray[np.floating])
672+
assert_type(f*AR_floating,npt.NDArray[np.floating])
673+
assert_type(f**AR_floating,npt.NDArray[np.floating])
674+
assert_type(f/AR_floating,npt.NDArray[np.floating])
675+
assert_type(f//AR_floating,npt.NDArray[np.floating])
676+
assert_type(f%AR_floating,npt.NDArray[np.floating])
677+
assert_type(divmod(f,AR_floating),tuple[npt.NDArray[np.floating],npt.NDArray[np.floating]])

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp