1
- # NOTE: In reality these functions are not aliases but distinct functions with identical signatures.
1
+ from typing import Any , Literal as L , overload
2
+ from typing_extensions import TypeVar
3
+
4
+ import numpy as np
5
+ from _numtype import (
6
+ Array ,
7
+ CoComplex_nd ,
8
+ CoDateTime_nd ,
9
+ CoFloating_0d ,
10
+ CoFloating_1nd ,
11
+ CoFloating_nd ,
12
+ CoTimeDelta_nd ,
13
+ ToComplex_nd ,
14
+ ToDateTime_nd ,
15
+ ToObject_nd ,
16
+ ToTimeDelta_nd ,
17
+ )
2
18
from numpy ._core .fromnumeric import (
3
19
amax as nanmax ,
4
20
amin as nanmin ,
@@ -12,7 +28,10 @@ from numpy._core.fromnumeric import (
12
28
sum as nansum ,
13
29
var as nanvar ,
14
30
)
15
- from numpy .lib ._function_base_impl import median as nanmedian , percentile as nanpercentile , quantile as nanquantile
31
+ from numpy ._globals import _NoValueType
32
+ from numpy ._typing import _ShapeLike
33
+
34
+ from ._function_base_impl import _PercentileMethod
16
35
17
36
__all__ = [
18
37
"nanargmax" ,
@@ -30,3 +49,241 @@ __all__ = [
30
49
"nansum" ,
31
50
"nanvar" ,
32
51
]
52
+
53
+ ###
54
+
55
+ _ArrayT = TypeVar ("_ArrayT" , bound = Array )
56
+
57
+ ###
58
+
59
+ # keep in sync with `lib._function_base_impl.median`
60
+ @overload
61
+ def nanmedian (
62
+ a : CoFloating_nd ,
63
+ axis : None = None ,
64
+ out : None = None ,
65
+ overwrite_input : bool = False ,
66
+ keepdims : _NoValueType | L [False ] = ...,
67
+ ) -> np .floating : ...
68
+ @overload
69
+ def nanmedian (
70
+ a : ToComplex_nd ,
71
+ axis : None = None ,
72
+ out : None = None ,
73
+ overwrite_input : bool = False ,
74
+ keepdims : _NoValueType | L [False ] = ...,
75
+ ) -> np .complexfloating : ...
76
+ @overload
77
+ def nanmedian (
78
+ a : ToTimeDelta_nd ,
79
+ axis : None = None ,
80
+ out : None = None ,
81
+ overwrite_input : bool = False ,
82
+ keepdims : _NoValueType | L [False ] = ...,
83
+ ) -> np .timedelta64 : ...
84
+ @overload
85
+ def nanmedian (
86
+ a : ToObject_nd ,
87
+ axis : None = None ,
88
+ out : None = None ,
89
+ overwrite_input : bool = False ,
90
+ keepdims : _NoValueType | L [False ] = ...,
91
+ ) -> Any : ...
92
+ @overload
93
+ def nanmedian (
94
+ a : CoComplex_nd | CoTimeDelta_nd | ToObject_nd ,
95
+ axis : _ShapeLike | None = None ,
96
+ out : None = None ,
97
+ overwrite_input : bool = False ,
98
+ keepdims : _NoValueType | bool = ...,
99
+ ) -> Any : ...
100
+ @overload
101
+ def nanmedian (
102
+ a : CoComplex_nd | CoTimeDelta_nd | ToObject_nd ,
103
+ axis : _ShapeLike | None ,
104
+ out : _ArrayT ,
105
+ overwrite_input : bool = False ,
106
+ keepdims : _NoValueType | bool = ...,
107
+ ) -> _ArrayT : ...
108
+ @overload
109
+ def nanmedian (
110
+ a : CoComplex_nd | CoTimeDelta_nd | ToObject_nd ,
111
+ axis : _ShapeLike | None = None ,
112
+ * ,
113
+ out : _ArrayT ,
114
+ overwrite_input : bool = False ,
115
+ keepdims : _NoValueType | bool = ...,
116
+ ) -> _ArrayT : ...
117
+
118
+ # keep in sync with `lib._function_base_impl.percentile`
119
+ @overload
120
+ def nanpercentile (
121
+ a : CoFloating_nd ,
122
+ q : CoFloating_0d ,
123
+ axis : None = None ,
124
+ out : None = None ,
125
+ overwrite_input : bool = False ,
126
+ method : _PercentileMethod = "linear" ,
127
+ keepdims : _NoValueType | L [False ] = ...,
128
+ * ,
129
+ weights : CoFloating_1nd | None = None ,
130
+ interpolation : None = None ,
131
+ ) -> np .floating : ...
132
+ @overload
133
+ def nanpercentile (
134
+ a : CoFloating_nd ,
135
+ q : CoFloating_1nd ,
136
+ axis : None = None ,
137
+ out : None = None ,
138
+ overwrite_input : bool = False ,
139
+ method : _PercentileMethod = "linear" ,
140
+ keepdims : _NoValueType | L [False ] = ...,
141
+ * ,
142
+ weights : CoFloating_1nd | None = None ,
143
+ interpolation : None = None ,
144
+ ) -> Array [np .floating ]: ...
145
+ @overload
146
+ def nanpercentile (
147
+ a : ToComplex_nd ,
148
+ q : CoFloating_0d ,
149
+ axis : None = None ,
150
+ out : None = None ,
151
+ overwrite_input : bool = False ,
152
+ method : _PercentileMethod = "linear" ,
153
+ keepdims : _NoValueType | L [False ] = ...,
154
+ * ,
155
+ weights : CoFloating_1nd | None = None ,
156
+ interpolation : None = None ,
157
+ ) -> np .complexfloating : ...
158
+ @overload
159
+ def nanpercentile (
160
+ a : ToComplex_nd ,
161
+ q : CoFloating_1nd ,
162
+ axis : None = None ,
163
+ out : None = None ,
164
+ overwrite_input : bool = False ,
165
+ method : _PercentileMethod = "linear" ,
166
+ keepdims : _NoValueType | L [False ] = ...,
167
+ * ,
168
+ weights : CoFloating_1nd | None = None ,
169
+ interpolation : None = None ,
170
+ ) -> Array [np .complexfloating ]: ...
171
+ @overload
172
+ def nanpercentile (
173
+ a : ToTimeDelta_nd ,
174
+ q : CoFloating_0d ,
175
+ axis : None = None ,
176
+ out : None = None ,
177
+ overwrite_input : bool = False ,
178
+ method : _PercentileMethod = "linear" ,
179
+ keepdims : _NoValueType | L [False ] = ...,
180
+ * ,
181
+ weights : CoFloating_1nd | None = None ,
182
+ interpolation : None = None ,
183
+ ) -> np .timedelta64 : ...
184
+ @overload
185
+ def nanpercentile (
186
+ a : ToTimeDelta_nd ,
187
+ q : CoFloating_1nd ,
188
+ axis : None = None ,
189
+ out : None = None ,
190
+ overwrite_input : bool = False ,
191
+ method : _PercentileMethod = "linear" ,
192
+ keepdims : _NoValueType | L [False ] = ...,
193
+ * ,
194
+ weights : CoFloating_1nd | None = None ,
195
+ interpolation : None = None ,
196
+ ) -> Array [np .timedelta64 ]: ...
197
+ @overload
198
+ def nanpercentile (
199
+ a : ToDateTime_nd ,
200
+ q : CoFloating_0d ,
201
+ axis : None = None ,
202
+ out : None = None ,
203
+ overwrite_input : bool = False ,
204
+ method : _PercentileMethod = "linear" ,
205
+ keepdims : _NoValueType | L [False ] = ...,
206
+ * ,
207
+ weights : CoFloating_1nd | None = None ,
208
+ interpolation : None = None ,
209
+ ) -> np .datetime64 : ...
210
+ @overload
211
+ def nanpercentile (
212
+ a : ToDateTime_nd ,
213
+ q : CoFloating_1nd ,
214
+ axis : None = None ,
215
+ out : None = None ,
216
+ overwrite_input : bool = False ,
217
+ method : _PercentileMethod = "linear" ,
218
+ keepdims : _NoValueType | L [False ] = ...,
219
+ * ,
220
+ weights : CoFloating_1nd | None = None ,
221
+ interpolation : None = None ,
222
+ ) -> Array [np .datetime64 ]: ...
223
+ @overload
224
+ def nanpercentile (
225
+ a : ToObject_nd ,
226
+ q : CoFloating_0d ,
227
+ axis : None = None ,
228
+ out : None = None ,
229
+ overwrite_input : bool = False ,
230
+ method : _PercentileMethod = "linear" ,
231
+ keepdims : _NoValueType | L [False ] = ...,
232
+ * ,
233
+ weights : CoFloating_1nd | None = None ,
234
+ interpolation : None = None ,
235
+ ) -> Any : ...
236
+ @overload
237
+ def nanpercentile (
238
+ a : ToObject_nd ,
239
+ q : CoFloating_1nd ,
240
+ axis : None = None ,
241
+ out : None = None ,
242
+ overwrite_input : bool = False ,
243
+ method : _PercentileMethod = "linear" ,
244
+ keepdims : _NoValueType | L [False ] = ...,
245
+ * ,
246
+ weights : CoFloating_1nd | None = None ,
247
+ interpolation : None = None ,
248
+ ) -> Array [np .object_ ]: ...
249
+ @overload
250
+ def nanpercentile (
251
+ a : CoComplex_nd | CoDateTime_nd | ToObject_nd ,
252
+ q : CoFloating_1nd ,
253
+ axis : _ShapeLike | None = None ,
254
+ out : None = None ,
255
+ overwrite_input : bool = False ,
256
+ method : _PercentileMethod = "linear" ,
257
+ keepdims : _NoValueType | bool = ...,
258
+ * ,
259
+ weights : CoFloating_1nd | None = None ,
260
+ interpolation : None = None ,
261
+ ) -> Any : ...
262
+ @overload
263
+ def nanpercentile (
264
+ a : CoComplex_nd | CoDateTime_nd | ToObject_nd ,
265
+ q : CoFloating_1nd ,
266
+ axis : _ShapeLike | None = None ,
267
+ * ,
268
+ out : _ArrayT ,
269
+ overwrite_input : bool = False ,
270
+ method : _PercentileMethod = "linear" ,
271
+ keepdims : _NoValueType | bool = ...,
272
+ weights : CoFloating_1nd | None = None ,
273
+ interpolation : None = None ,
274
+ ) -> _ArrayT : ...
275
+ @overload
276
+ def nanpercentile (
277
+ a : CoComplex_nd | CoDateTime_nd | ToObject_nd ,
278
+ q : CoFloating_1nd ,
279
+ axis : _ShapeLike | None ,
280
+ out : _ArrayT ,
281
+ overwrite_input : bool = False ,
282
+ method : _PercentileMethod = "linear" ,
283
+ keepdims : _NoValueType | bool = ...,
284
+ * ,
285
+ weights : CoFloating_1nd | None = None ,
286
+ interpolation : None = None ,
287
+ ) -> _ArrayT : ...
288
+
289
+ nanquantile = nanpercentile
0 commit comments