codekingpro/portable-devtools
115k
1# ruff: noqa: ANN401
2from _typeshed import Incomplete
3from collections.abc import Sequence
4from typing import (
5 Any,
6 Literal,
7 Never,
8 Protocol,
9 SupportsIndex,
10 TypeAlias,
11 TypedDict,
12 TypeVar,
13 Unpack,
14 overload,
15 type_check_only,
16)
17
18import numpy as np
19from numpy import (
20 _AnyShapeT,
21 _CastingKind,
22 _ModeKind,
23 _OrderACF,
24 _OrderKACF,
25 _PartitionKind,
26 _SortKind,
27 _SortSide,
28 complexfloating,
29 float16,
30 floating,
31 generic,
32 int64,
33 int_,
34 intp,
35 object_,
36 timedelta64,
37 uint64,
38)
39from numpy._globals import _NoValueType
40from numpy._typing import (
41 ArrayLike,
42 DTypeLike,
43 NDArray,
44 _AnyShape,
45 _ArrayLike,
46 _ArrayLikeBool_co,
47 _ArrayLikeComplex_co,
48 _ArrayLikeFloat_co,
49 _ArrayLikeInt,
50 _ArrayLikeInt_co,
51 _ArrayLikeObject_co,
52 _ArrayLikeUInt_co,
53 _BoolLike_co,
54 _ComplexLike_co,
55 _DTypeLike,
56 _IntLike_co,
57 _NestedSequence,
58 _NumberLike_co,
59 _ScalarLike_co,
60 _ShapeLike,
61)
62
63__all__ = [
64 "all",
65 "amax",
66 "amin",
67 "any",
68 "argmax",
69 "argmin",
70 "argpartition",
71 "argsort",
72 "around",
73 "choose",
74 "clip",
75 "compress",
76 "cumprod",
77 "cumsum",
78 "cumulative_prod",
79 "cumulative_sum",
80 "diagonal",
81 "mean",
82 "max",
83 "min",
84 "matrix_transpose",
85 "ndim",
86 "nonzero",
87 "partition",
88 "prod",
89 "ptp",
90 "put",
91 "ravel",
92 "repeat",
93 "reshape",
94 "resize",
95 "round",
96 "searchsorted",
97 "shape",
98 "size",
99 "sort",
100 "squeeze",
101 "std",
102 "sum",
103 "swapaxes",
104 "take",
105 "trace",
106 "transpose",
107 "var",
108]
109
110_ScalarT = TypeVar("_ScalarT", bound=generic)
111_NumberOrObjectT = TypeVar("_NumberOrObjectT", bound=np.number | np.object_)
112_ArrayT = TypeVar("_ArrayT", bound=np.ndarray[Any, Any])
113_ShapeT = TypeVar("_ShapeT", bound=tuple[int, ...])
114_ShapeT_co = TypeVar("_ShapeT_co", bound=tuple[int, ...], covariant=True)
115_BoolOrIntArrayT = TypeVar("_BoolOrIntArrayT", bound=NDArray[np.integer | np.bool])
116
117@type_check_only
118class _SupportsShape(Protocol[_ShapeT_co]):
119 # NOTE: it matters that `self` is positional only
120 @property
121 def shape(self, /) -> _ShapeT_co: ...
122
123@type_check_only
124class _UFuncKwargs(TypedDict, total=False):
125 where: _ArrayLikeBool_co | None
126 order: _OrderKACF
127 subok: bool
128 signature: str | tuple[str | None, ...]
129 casting: _CastingKind
130
131# a "sequence" that isn't a string, bytes, bytearray, or memoryview
132_T = TypeVar("_T")
133_PyArray: TypeAlias = list[_T] | tuple[_T, ...]
134# `int` also covers `bool`
135_PyScalar: TypeAlias = complex | bytes | str
136
137# TODO: Fix overlapping overloads: https://github.com/numpy/numpy/issues/27032
138@overload
139def take(
140 a: _ArrayLike[_ScalarT],
141 indices: _IntLike_co,
142 axis: None = None,
143 out: None = None,
144 mode: _ModeKind = "raise",
145) -> _ScalarT: ...
146@overload
147def take(
148 a: ArrayLike,
149 indices: _IntLike_co,
150 axis: SupportsIndex | None = None,
151 out: None = None,
152 mode: _ModeKind = "raise",
153) -> Any: ...
154@overload
155def take(
156 a: _ArrayLike[_ScalarT],
157 indices: _ArrayLikeInt_co,
158 axis: SupportsIndex | None = None,
159 out: None = None,
160 mode: _ModeKind = "raise",
161) -> NDArray[_ScalarT]: ...
162@overload
163def take(
164 a: ArrayLike,
165 indices: _ArrayLikeInt_co,
166 axis: SupportsIndex | None = None,
167 out: None = None,
168 mode: _ModeKind = "raise",
169) -> NDArray[Any]: ...
170@overload
171def take(
172 a: ArrayLike,
173 indices: _ArrayLikeInt_co,
174 axis: SupportsIndex | None,
175 out: _ArrayT,
176 mode: _ModeKind = "raise",
177) -> _ArrayT: ...
178@overload
179def take(
180 a: ArrayLike,
181 indices: _ArrayLikeInt_co,
182 axis: SupportsIndex | None = None,
183 *,
184 out: _ArrayT,
185 mode: _ModeKind = "raise",
186) -> _ArrayT: ...
187
188@overload
189def reshape( # shape: index
190 a: _ArrayLike[_ScalarT],
191 /,
192 shape: SupportsIndex,
193 order: _OrderACF = "C",
194 *,
195 copy: bool | None = None,
196) -> np.ndarray[tuple[int], np.dtype[_ScalarT]]: ...
197@overload
198def reshape( # shape: (int, ...) @ _AnyShapeT
199 a: _ArrayLike[_ScalarT],
200 /,
201 shape: _AnyShapeT,
202 order: _OrderACF = "C",
203 *,
204 copy: bool | None = None,
205) -> np.ndarray[_AnyShapeT, np.dtype[_ScalarT]]: ...
206@overload # shape: Sequence[index]
207def reshape(
208 a: _ArrayLike[_ScalarT],
209 /,
210 shape: Sequence[SupportsIndex],
211 order: _OrderACF = "C",
212 *,
213 copy: bool | None = None,
214) -> NDArray[_ScalarT]: ...
215@overload # shape: index
216def reshape(
217 a: ArrayLike,
218 /,
219 shape: SupportsIndex,
220 order: _OrderACF = "C",
221 *,
222 copy: bool | None = None,
223) -> np.ndarray[tuple[int], np.dtype]: ...
224@overload
225def reshape( # shape: (int, ...) @ _AnyShapeT
226 a: ArrayLike,
227 /,
228 shape: _AnyShapeT,
229 order: _OrderACF = "C",
230 *,
231 copy: bool | None = None,
232) -> np.ndarray[_AnyShapeT, np.dtype]: ...
233@overload # shape: Sequence[index]
234def reshape(
235 a: ArrayLike,
236 /,
237 shape: Sequence[SupportsIndex],
238 order: _OrderACF = "C",
239 *,
240 copy: bool | None = None,
241) -> NDArray[Any]: ...
242
243@overload
244def choose(
245 a: _IntLike_co,
246 choices: ArrayLike,
247 out: None = None,
248 mode: _ModeKind = "raise",
249) -> Any: ...
250@overload
251def choose(
252 a: _ArrayLikeInt_co,
253 choices: _ArrayLike[_ScalarT],
254 out: None = None,
255 mode: _ModeKind = "raise",
256) -> NDArray[_ScalarT]: ...
257@overload
258def choose(
259 a: _ArrayLikeInt_co,
260 choices: ArrayLike,
261 out: None = None,
262 mode: _ModeKind = "raise",
263) -> NDArray[Any]: ...
264@overload
265def choose(
266 a: _ArrayLikeInt_co,
267 choices: ArrayLike,
268 out: _ArrayT,
269 mode: _ModeKind = "raise",
270) -> _ArrayT: ...
271
272# keep in sync with `ma.core.repeat`
273@overload
274def repeat(
275 a: _ArrayLike[_ScalarT],
276 repeats: _ArrayLikeInt_co,
277 axis: None = None,
278) -> np.ndarray[tuple[int], np.dtype[_ScalarT]]: ...
279@overload
280def repeat(
281 a: _ArrayLike[_ScalarT],
282 repeats: _ArrayLikeInt_co,
283 axis: SupportsIndex,
284) -> NDArray[_ScalarT]: ...
285@overload
286def repeat(
287 a: ArrayLike,
288 repeats: _ArrayLikeInt_co,
289 axis: None = None,
290) -> np.ndarray[tuple[int], np.dtype[Any]]: ...
291@overload
292def repeat(
293 a: ArrayLike,
294 repeats: _ArrayLikeInt_co,
295 axis: SupportsIndex,
296) -> NDArray[Any]: ...
297
298#
299def put(
300 a: NDArray[Any],
301 ind: _ArrayLikeInt_co,
302 v: ArrayLike,
303 mode: _ModeKind = "raise",
304) -> None: ...
305
306# keep in sync with `ndarray.swapaxes` and `ma.core.swapaxes`
307@overload
308def swapaxes(a: _ArrayT, axis1: SupportsIndex, axis2: SupportsIndex) -> _ArrayT: ...
309@overload
310def swapaxes(a: _ArrayLike[_ScalarT], axis1: SupportsIndex, axis2: SupportsIndex) -> NDArray[_ScalarT]: ...
311@overload
312def swapaxes(a: ArrayLike, axis1: SupportsIndex, axis2: SupportsIndex) -> NDArray[Any]: ...
313
314@overload
315def transpose(
316 a: _ArrayLike[_ScalarT],
317 axes: _ShapeLike | None = None,
318) -> NDArray[_ScalarT]: ...
319@overload
320def transpose(
321 a: ArrayLike,
322 axes: _ShapeLike | None = None,
323) -> NDArray[Any]: ...
324
325@overload
326def matrix_transpose(x: _ArrayLike[_ScalarT], /) -> NDArray[_ScalarT]: ...
327@overload
328def matrix_transpose(x: ArrayLike, /) -> NDArray[Any]: ...
329
330#
331@overload
332def partition(
333 a: _ArrayLike[_ScalarT],
334 kth: _ArrayLikeInt,
335 axis: SupportsIndex | None = -1,
336 kind: _PartitionKind = "introselect",
337 order: None = None,
338) -> NDArray[_ScalarT]: ...
339@overload
340def partition(
341 a: _ArrayLike[np.void],
342 kth: _ArrayLikeInt,
343 axis: SupportsIndex | None = -1,
344 kind: _PartitionKind = "introselect",
345 order: str | Sequence[str] | None = None,
346) -> NDArray[np.void]: ...
347@overload
348def partition(
349 a: ArrayLike,
350 kth: _ArrayLikeInt,
351 axis: SupportsIndex | None = -1,
352 kind: _PartitionKind = "introselect",
353 order: str | Sequence[str] | None = None,
354) -> NDArray[Any]: ...
355
356#
357def argpartition(
358 a: ArrayLike,
359 kth: _ArrayLikeInt,
360 axis: SupportsIndex | None = -1,
361 kind: _PartitionKind = "introselect",
362 order: str | Sequence[str] | None = None,
363) -> NDArray[intp]: ...
364
365#
366@overload
367def sort(
368 a: _ArrayLike[_ScalarT],
369 axis: SupportsIndex | None = -1,
370 kind: _SortKind | None = None,
371 order: str | Sequence[str] | None = None,
372 *,
373 stable: bool | None = None,
374) -> NDArray[_ScalarT]: ...
375@overload
376def sort(
377 a: ArrayLike,
378 axis: SupportsIndex | None = -1,
379 kind: _SortKind | None = None,
380 order: str | Sequence[str] | None = None,
381 *,
382 stable: bool | None = None,
383) -> NDArray[Any]: ...
384
385def argsort(
386 a: ArrayLike,
387 axis: SupportsIndex | None = -1,
388 kind: _SortKind | None = None,
389 order: str | Sequence[str] | None = None,
390 *,
391 stable: bool | None = None,
392) -> NDArray[intp]: ...
393
394@overload
395def argmax(
396 a: ArrayLike,
397 axis: None = None,
398 out: None = None,
399 *,
400 keepdims: Literal[False] | _NoValueType = ...,
401) -> intp: ...
402@overload
403def argmax(
404 a: ArrayLike,
405 axis: SupportsIndex | None = None,
406 out: None = None,
407 *,
408 keepdims: bool | _NoValueType = ...,
409) -> Any: ...
410@overload
411def argmax(
412 a: ArrayLike,
413 axis: SupportsIndex | None,
414 out: _BoolOrIntArrayT,
415 *,
416 keepdims: bool | _NoValueType = ...,
417) -> _BoolOrIntArrayT: ...
418@overload
419def argmax(
420 a: ArrayLike,
421 axis: SupportsIndex | None = None,
422 *,
423 out: _BoolOrIntArrayT,
424 keepdims: bool | _NoValueType = ...,
425) -> _BoolOrIntArrayT: ...
426
427@overload
428def argmin(
429 a: ArrayLike,
430 axis: None = None,
431 out: None = None,
432 *,
433 keepdims: Literal[False] | _NoValueType = ...,
434) -> intp: ...
435@overload
436def argmin(
437 a: ArrayLike,
438 axis: SupportsIndex | None = None,
439 out: None = None,
440 *,
441 keepdims: bool | _NoValueType = ...,
442) -> Any: ...
443@overload
444def argmin(
445 a: ArrayLike,
446 axis: SupportsIndex | None,
447 out: _BoolOrIntArrayT,
448 *,
449 keepdims: bool | _NoValueType = ...,
450) -> _BoolOrIntArrayT: ...
451@overload
452def argmin(
453 a: ArrayLike,
454 axis: SupportsIndex | None = None,
455 *,
456 out: _BoolOrIntArrayT,
457 keepdims: bool | _NoValueType = ...,
458) -> _BoolOrIntArrayT: ...
459
460# TODO: Fix overlapping overloads: https://github.com/numpy/numpy/issues/27032
461@overload
462def searchsorted(
463 a: ArrayLike,
464 v: _ScalarLike_co,
465 side: _SortSide = "left",
466 sorter: _ArrayLikeInt_co | None = None, # 1D int array
467) -> intp: ...
468@overload
469def searchsorted(
470 a: ArrayLike,
471 v: ArrayLike,
472 side: _SortSide = "left",
473 sorter: _ArrayLikeInt_co | None = None, # 1D int array
474) -> NDArray[intp]: ...
475
476# TODO: Fix overlapping overloads: https://github.com/numpy/numpy/issues/27032
477@overload
478def resize(a: _ArrayLike[_ScalarT], new_shape: SupportsIndex | tuple[SupportsIndex]) -> np.ndarray[tuple[int], np.dtype[_ScalarT]]: ...
479@overload
480def resize(a: _ArrayLike[_ScalarT], new_shape: _AnyShapeT) -> np.ndarray[_AnyShapeT, np.dtype[_ScalarT]]: ...
481@overload
482def resize(a: _ArrayLike[_ScalarT], new_shape: _ShapeLike) -> NDArray[_ScalarT]: ...
483@overload
484def resize(a: ArrayLike, new_shape: SupportsIndex | tuple[SupportsIndex]) -> np.ndarray[tuple[int], np.dtype]: ...
485@overload
486def resize(a: ArrayLike, new_shape: _AnyShapeT) -> np.ndarray[_AnyShapeT, np.dtype]: ...
487@overload
488def resize(a: ArrayLike, new_shape: _ShapeLike) -> NDArray[Any]: ...
489
490# TODO: Fix overlapping overloads: https://github.com/numpy/numpy/issues/27032
491@overload
492def squeeze(
493 a: _ScalarT,
494 axis: _ShapeLike | None = None,
495) -> _ScalarT: ...
496@overload
497def squeeze(
498 a: _ArrayLike[_ScalarT],
499 axis: _ShapeLike | None = None,
500) -> NDArray[_ScalarT]: ...
501@overload
502def squeeze(
503 a: ArrayLike,
504 axis: _ShapeLike | None = None,
505) -> NDArray[Any]: ...
506
507# keep in sync with `ma.core.diagonal`
508@overload
509def diagonal(
510 a: _ArrayLike[_ScalarT],
511 offset: SupportsIndex = 0,
512 axis1: SupportsIndex = 0,
513 axis2: SupportsIndex = 1, # >= 2D array
514) -> NDArray[_ScalarT]: ...
515@overload
516def diagonal(
517 a: ArrayLike,
518 offset: SupportsIndex = 0,
519 axis1: SupportsIndex = 0,
520 axis2: SupportsIndex = 1, # >= 2D array
521) -> NDArray[Any]: ...
522
523# keep in sync with `ma.core.trace`
524@overload
525def trace(
526 a: ArrayLike, # >= 2D array
527 offset: SupportsIndex = 0,
528 axis1: SupportsIndex = 0,
529 axis2: SupportsIndex = 1,
530 dtype: DTypeLike | None = None,
531 out: None = None,
532) -> Any: ...
533@overload
534def trace(
535 a: ArrayLike, # >= 2D array
536 offset: SupportsIndex,
537 axis1: SupportsIndex,
538 axis2: SupportsIndex,
539 dtype: DTypeLike | None,
540 out: _ArrayT,
541) -> _ArrayT: ...
542@overload
543def trace(
544 a: ArrayLike, # >= 2D array
545 offset: SupportsIndex = 0,
546 axis1: SupportsIndex = 0,
547 axis2: SupportsIndex = 1,
548 dtype: DTypeLike | None = None,
549 *,
550 out: _ArrayT,
551) -> _ArrayT: ...
552
553_Array1D: TypeAlias = np.ndarray[tuple[int], np.dtype[_ScalarT]]
554
555@overload
556def ravel(a: _ArrayLike[_ScalarT], order: _OrderKACF = "C") -> _Array1D[_ScalarT]: ...
557@overload
558def ravel(a: bytes | _NestedSequence[bytes], order: _OrderKACF = "C") -> _Array1D[np.bytes_]: ...
559@overload
560def ravel(a: str | _NestedSequence[str], order: _OrderKACF = "C") -> _Array1D[np.str_]: ...
561@overload
562def ravel(a: bool | _NestedSequence[bool], order: _OrderKACF = "C") -> _Array1D[np.bool]: ...
563@overload
564def ravel(a: int | _NestedSequence[int], order: _OrderKACF = "C") -> _Array1D[np.int_ | Any]: ...
565@overload
566def ravel(a: float | _NestedSequence[float], order: _OrderKACF = "C") -> _Array1D[np.float64 | Any]: ...
567@overload
568def ravel(a: complex | _NestedSequence[complex], order: _OrderKACF = "C") -> _Array1D[np.complex128 | Any]: ...
569@overload
570def ravel(a: ArrayLike, order: _OrderKACF = "C") -> np.ndarray[tuple[int], np.dtype]: ...
571
572def nonzero(a: _ArrayLike[Any]) -> tuple[np.ndarray[tuple[int], np.dtype[intp]], ...]: ...
573
574# this prevents `Any` from being returned with Pyright
575@overload
576def shape(a: _SupportsShape[Never]) -> _AnyShape: ...
577@overload
578def shape(a: _SupportsShape[_ShapeT]) -> _ShapeT: ...
579@overload
580def shape(a: _PyScalar) -> tuple[()]: ...
581# `collections.abc.Sequence` can't be used hesre, since `bytes` and `str` are
582# subtypes of it, which would make the return types incompatible.
583@overload
584def shape(a: _PyArray[_PyScalar]) -> tuple[int]: ...
585@overload
586def shape(a: _PyArray[_PyArray[_PyScalar]]) -> tuple[int, int]: ...
587# this overload will be skipped by typecheckers that don't support PEP 688
588@overload
589def shape(a: memoryview | bytearray) -> tuple[int]: ...
590@overload
591def shape(a: ArrayLike) -> _AnyShape: ...
592
593@overload
594def compress(
595 condition: _ArrayLikeBool_co, # 1D bool array
596 a: _ArrayLike[_ScalarT],
597 axis: SupportsIndex | None = None,
598 out: None = None,
599) -> NDArray[_ScalarT]: ...
600@overload
601def compress(
602 condition: _ArrayLikeBool_co, # 1D bool array
603 a: ArrayLike,
604 axis: SupportsIndex | None = None,
605 out: None = None,
606) -> NDArray[Any]: ...
607@overload
608def compress(
609 condition: _ArrayLikeBool_co, # 1D bool array
610 a: ArrayLike,
611 axis: SupportsIndex | None,
612 out: _ArrayT,
613) -> _ArrayT: ...
614@overload
615def compress(
616 condition: _ArrayLikeBool_co, # 1D bool array
617 a: ArrayLike,
618 axis: SupportsIndex | None = None,
619 *,
620 out: _ArrayT,
621) -> _ArrayT: ...
622
623# TODO: Fix overlapping overloads: https://github.com/numpy/numpy/issues/27032
624@overload
625def clip(
626 a: _ScalarT,
627 a_min: ArrayLike | _NoValueType | None = ...,
628 a_max: ArrayLike | _NoValueType | None = ...,
629 out: None = None,
630 *,
631 min: ArrayLike | _NoValueType | None = ...,
632 max: ArrayLike | _NoValueType | None = ...,
633 dtype: None = None,
634 **kwargs: Unpack[_UFuncKwargs],
635) -> _ScalarT: ...
636@overload
637def clip(
638 a: _ScalarLike_co,
639 a_min: ArrayLike | _NoValueType | None = ...,
640 a_max: ArrayLike | _NoValueType | None = ...,
641 out: None = None,
642 *,
643 min: ArrayLike | _NoValueType | None = ...,
644 max: ArrayLike | _NoValueType | None = ...,
645 dtype: None = None,
646 **kwargs: Unpack[_UFuncKwargs],
647) -> Any: ...
648@overload
649def clip(
650 a: _ArrayLike[_ScalarT],
651 a_min: ArrayLike | _NoValueType | None = ...,
652 a_max: ArrayLike | _NoValueType | None = ...,
653 out: None = None,
654 *,
655 min: ArrayLike | _NoValueType | None = ...,
656 max: ArrayLike | _NoValueType | None = ...,
657 dtype: None = None,
658 **kwargs: Unpack[_UFuncKwargs],
659) -> NDArray[_ScalarT]: ...
660@overload
661def clip(
662 a: ArrayLike,
663 a_min: ArrayLike | _NoValueType | None = ...,
664 a_max: ArrayLike | _NoValueType | None = ...,
665 out: None = None,
666 *,
667 min: ArrayLike | _NoValueType | None = ...,
668 max: ArrayLike | _NoValueType | None = ...,
669 dtype: None = None,
670 **kwargs: Unpack[_UFuncKwargs],
671) -> NDArray[Any]: ...
672@overload
673def clip(
674 a: ArrayLike,
675 a_min: ArrayLike | None,
676 a_max: ArrayLike | None,
677 out: _ArrayT,
678 *,
679 min: ArrayLike | _NoValueType | None = ...,
680 max: ArrayLike | _NoValueType | None = ...,
681 dtype: DTypeLike | None = None,
682 **kwargs: Unpack[_UFuncKwargs],
683) -> _ArrayT: ...
684@overload
685def clip(
686 a: ArrayLike,
687 a_min: ArrayLike | _NoValueType | None = ...,
688 a_max: ArrayLike | _NoValueType | None = ...,
689 *,
690 out: _ArrayT,
691 min: ArrayLike | _NoValueType | None = ...,
692 max: ArrayLike | _NoValueType | None = ...,
693 dtype: DTypeLike | None = None,
694 **kwargs: Unpack[_UFuncKwargs],
695) -> _ArrayT: ...
696@overload
697def clip(
698 a: ArrayLike,
699 a_min: ArrayLike | _NoValueType | None = ...,
700 a_max: ArrayLike | _NoValueType | None = ...,
701 out: None = None,
702 *,
703 min: ArrayLike | _NoValueType | None = ...,
704 max: ArrayLike | _NoValueType | None = ...,
705 dtype: DTypeLike | None = None,
706 **kwargs: Unpack[_UFuncKwargs],
707) -> Any: ...
708
709@overload
710def sum(
711 a: _ArrayLike[_ScalarT],
712 axis: None = None,
713 dtype: None = None,
714 out: None = None,
715 keepdims: Literal[False] | _NoValueType = ...,
716 initial: _NumberLike_co | _NoValueType = ...,
717 where: _ArrayLikeBool_co | _NoValueType = ...,
718) -> _ScalarT: ...
719@overload
720def sum(
721 a: _ArrayLike[_ScalarT],
722 axis: None = None,
723 dtype: None = None,
724 out: None = None,
725 keepdims: bool | _NoValueType = ...,
726 initial: _NumberLike_co | _NoValueType = ...,
727 where: _ArrayLikeBool_co | _NoValueType = ...,
728) -> _ScalarT | NDArray[_ScalarT]: ...
729@overload
730def sum(
731 a: ArrayLike,
732 axis: None,
733 dtype: _DTypeLike[_ScalarT],
734 out: None = None,
735 keepdims: Literal[False] | _NoValueType = ...,
736 initial: _NumberLike_co | _NoValueType = ...,
737 where: _ArrayLikeBool_co | _NoValueType = ...,
738) -> _ScalarT: ...
739@overload
740def sum(
741 a: ArrayLike,
742 axis: None = None,
743 *,
744 dtype: _DTypeLike[_ScalarT],
745 out: None = None,
746 keepdims: Literal[False] | _NoValueType = ...,
747 initial: _NumberLike_co | _NoValueType = ...,
748 where: _ArrayLikeBool_co | _NoValueType = ...,
749) -> _ScalarT: ...
750@overload
751def sum(
752 a: ArrayLike,
753 axis: _ShapeLike | None,
754 dtype: _DTypeLike[_ScalarT],
755 out: None = None,
756 keepdims: bool | _NoValueType = ...,
757 initial: _NumberLike_co | _NoValueType = ...,
758 where: _ArrayLikeBool_co | _NoValueType = ...,
759) -> _ScalarT | NDArray[_ScalarT]: ...
760@overload
761def sum(
762 a: ArrayLike,
763 axis: _ShapeLike | None = None,
764 *,
765 dtype: _DTypeLike[_ScalarT],
766 out: None = None,
767 keepdims: bool | _NoValueType = ...,
768 initial: _NumberLike_co | _NoValueType = ...,
769 where: _ArrayLikeBool_co | _NoValueType = ...,
770) -> _ScalarT | NDArray[_ScalarT]: ...
771@overload
772def sum(
773 a: ArrayLike,
774 axis: _ShapeLike | None = None,
775 dtype: DTypeLike | None = None,
776 out: None = None,
777 keepdims: bool | _NoValueType = ...,
778 initial: _NumberLike_co | _NoValueType = ...,
779 where: _ArrayLikeBool_co | _NoValueType = ...,
780) -> Any: ...
781@overload
782def sum(
783 a: ArrayLike,
784 axis: _ShapeLike | None,
785 dtype: DTypeLike | None,
786 out: _ArrayT,
787 keepdims: bool | _NoValueType = ...,
788 initial: _NumberLike_co | _NoValueType = ...,
789 where: _ArrayLikeBool_co | _NoValueType = ...,
790) -> _ArrayT: ...
791@overload
792def sum(
793 a: ArrayLike,
794 axis: _ShapeLike | None = None,
795 dtype: DTypeLike | None = None,
796 *,
797 out: _ArrayT,
798 keepdims: bool | _NoValueType = ...,
799 initial: _NumberLike_co | _NoValueType = ...,
800 where: _ArrayLikeBool_co | _NoValueType = ...,
801) -> _ArrayT: ...
802
803# keep in sync with `any`
804@overload
805def all(
806 a: ArrayLike | None,
807 axis: None = None,
808 out: None = None,
809 keepdims: Literal[False, 0] | _NoValueType = ...,
810 *,
811 where: _ArrayLikeBool_co | _NoValueType = ...,
812) -> np.bool: ...
813@overload
814def all(
815 a: ArrayLike | None,
816 axis: int | tuple[int, ...] | None = None,
817 out: None = None,
818 keepdims: _BoolLike_co | _NoValueType = ...,
819 *,
820 where: _ArrayLikeBool_co | _NoValueType = ...,
821) -> Incomplete: ...
822@overload
823def all(
824 a: ArrayLike | None,
825 axis: int | tuple[int, ...] | None,
826 out: _ArrayT,
827 keepdims: _BoolLike_co | _NoValueType = ...,
828 *,
829 where: _ArrayLikeBool_co | _NoValueType = ...,
830) -> _ArrayT: ...
831@overload
832def all(
833 a: ArrayLike | None,
834 axis: int | tuple[int, ...] | None = None,
835 *,
836 out: _ArrayT,
837 keepdims: _BoolLike_co | _NoValueType = ...,
838 where: _ArrayLikeBool_co | _NoValueType = ...,
839) -> _ArrayT: ...
840
841# keep in sync with `all`
842@overload
843def any(
844 a: ArrayLike | None,
845 axis: None = None,
846 out: None = None,
847 keepdims: Literal[False, 0] | _NoValueType = ...,
848 *,
849 where: _ArrayLikeBool_co | _NoValueType = ...,
850) -> np.bool: ...
851@overload
852def any(
853 a: ArrayLike | None,
854 axis: int | tuple[int, ...] | None = None,
855 out: None = None,
856 keepdims: _BoolLike_co | _NoValueType = ...,
857 *,
858 where: _ArrayLikeBool_co | _NoValueType = ...,
859) -> Incomplete: ...
860@overload
861def any(
862 a: ArrayLike | None,
863 axis: int | tuple[int, ...] | None,
864 out: _ArrayT,
865 keepdims: _BoolLike_co | _NoValueType = ...,
866 *,
867 where: _ArrayLikeBool_co | _NoValueType = ...,
868) -> _ArrayT: ...
869@overload
870def any(
871 a: ArrayLike | None,
872 axis: int | tuple[int, ...] | None = None,
873 *,
874 out: _ArrayT,
875 keepdims: _BoolLike_co | _NoValueType = ...,
876 where: _ArrayLikeBool_co | _NoValueType = ...,
877) -> _ArrayT: ...
878
879#
880@overload
881def cumsum(
882 a: _ArrayLike[_ScalarT],
883 axis: SupportsIndex | None = None,
884 dtype: None = None,
885 out: None = None,
886) -> NDArray[_ScalarT]: ...
887@overload
888def cumsum(
889 a: ArrayLike,
890 axis: SupportsIndex | None = None,
891 dtype: None = None,
892 out: None = None,
893) -> NDArray[Any]: ...
894@overload
895def cumsum(
896 a: ArrayLike,
897 axis: SupportsIndex | None,
898 dtype: _DTypeLike[_ScalarT],
899 out: None = None,
900) -> NDArray[_ScalarT]: ...
901@overload
902def cumsum(
903 a: ArrayLike,
904 axis: SupportsIndex | None = None,
905 *,
906 dtype: _DTypeLike[_ScalarT],
907 out: None = None,
908) -> NDArray[_ScalarT]: ...
909@overload
910def cumsum(
911 a: ArrayLike,
912 axis: SupportsIndex | None = None,
913 dtype: DTypeLike | None = None,
914 out: None = None,
915) -> NDArray[Any]: ...
916@overload
917def cumsum(
918 a: ArrayLike,
919 axis: SupportsIndex | None,
920 dtype: DTypeLike | None,
921 out: _ArrayT,
922) -> _ArrayT: ...
923@overload
924def cumsum(
925 a: ArrayLike,
926 axis: SupportsIndex | None = None,
927 dtype: DTypeLike | None = None,
928 *,
929 out: _ArrayT,
930) -> _ArrayT: ...
931
932@overload
933def cumulative_sum(
934 x: _ArrayLike[_ScalarT],
935 /,
936 *,
937 axis: SupportsIndex | None = None,
938 dtype: None = None,
939 out: None = None,
940 include_initial: bool = False,
941) -> NDArray[_ScalarT]: ...
942@overload
943def cumulative_sum(
944 x: ArrayLike,
945 /,
946 *,
947 axis: SupportsIndex | None = None,
948 dtype: None = None,
949 out: None = None,
950 include_initial: bool = False,
951) -> NDArray[Any]: ...
952@overload
953def cumulative_sum(
954 x: ArrayLike,
955 /,
956 *,
957 axis: SupportsIndex | None = None,
958 dtype: _DTypeLike[_ScalarT],
959 out: None = None,
960 include_initial: bool = False,
961) -> NDArray[_ScalarT]: ...
962@overload
963def cumulative_sum(
964 x: ArrayLike,
965 /,
966 *,
967 axis: SupportsIndex | None = None,
968 dtype: DTypeLike | None = None,
969 out: None = None,
970 include_initial: bool = False,
971) -> NDArray[Any]: ...
972@overload
973def cumulative_sum(
974 x: ArrayLike,
975 /,
976 *,
977 axis: SupportsIndex | None = None,
978 dtype: DTypeLike | None = None,
979 out: _ArrayT,
980 include_initial: bool = False,
981) -> _ArrayT: ...
982
983@overload
984def ptp(
985 a: _ArrayLike[_ScalarT],
986 axis: None = None,
987 out: None = None,
988 keepdims: Literal[False] | _NoValueType = ...,
989) -> _ScalarT: ...
990@overload
991def ptp(
992 a: ArrayLike,
993 axis: _ShapeLike | None = None,
994 out: None = None,
995 keepdims: bool | _NoValueType = ...,
996) -> Any: ...
997@overload
998def ptp(
999 a: ArrayLike,
1000 axis: _ShapeLike | None,
1001 out: _ArrayT,
1002 keepdims: bool | _NoValueType = ...,
1003) -> _ArrayT: ...
1004@overload
1005def ptp(
1006 a: ArrayLike,
1007 axis: _ShapeLike | None = None,
1008 *,
1009 out: _ArrayT,
1010 keepdims: bool | _NoValueType = ...,
1011) -> _ArrayT: ...
1012
1013@overload
1014def amax(
1015 a: _ArrayLike[_ScalarT],
1016 axis: None = None,
1017 out: None = None,
1018 keepdims: Literal[False] | _NoValueType = ...,
1019 initial: _NumberLike_co | _NoValueType = ...,
1020 where: _ArrayLikeBool_co | _NoValueType = ...,
1021) -> _ScalarT: ...
1022@overload
1023def amax(
1024 a: ArrayLike,
1025 axis: _ShapeLike | None = None,
1026 out: None = None,
1027 keepdims: bool | _NoValueType = ...,
1028 initial: _NumberLike_co | _NoValueType = ...,
1029 where: _ArrayLikeBool_co | _NoValueType = ...,
1030) -> Any: ...
1031@overload
1032def amax(
1033 a: ArrayLike,
1034 axis: _ShapeLike | None,
1035 out: _ArrayT,
1036 keepdims: bool | _NoValueType = ...,
1037 initial: _NumberLike_co | _NoValueType = ...,
1038 where: _ArrayLikeBool_co | _NoValueType = ...,
1039) -> _ArrayT: ...
1040@overload
1041def amax(
1042 a: ArrayLike,
1043 axis: _ShapeLike | None = None,
1044 *,
1045 out: _ArrayT,
1046 keepdims: bool | _NoValueType = ...,
1047 initial: _NumberLike_co | _NoValueType = ...,
1048 where: _ArrayLikeBool_co | _NoValueType = ...,
1049) -> _ArrayT: ...
1050
1051@overload
1052def amin(
1053 a: _ArrayLike[_ScalarT],
1054 axis: None = None,
1055 out: None = None,
1056 keepdims: Literal[False] | _NoValueType = ...,
1057 initial: _NumberLike_co | _NoValueType = ...,
1058 where: _ArrayLikeBool_co | _NoValueType = ...,
1059) -> _ScalarT: ...
1060@overload
1061def amin(
1062 a: ArrayLike,
1063 axis: _ShapeLike | None = None,
1064 out: None = None,
1065 keepdims: bool | _NoValueType = ...,
1066 initial: _NumberLike_co | _NoValueType = ...,
1067 where: _ArrayLikeBool_co | _NoValueType = ...,
1068) -> Any: ...
1069@overload
1070def amin(
1071 a: ArrayLike,
1072 axis: _ShapeLike | None,
1073 out: _ArrayT,
1074 keepdims: bool | _NoValueType = ...,
1075 initial: _NumberLike_co | _NoValueType = ...,
1076 where: _ArrayLikeBool_co | _NoValueType = ...,
1077) -> _ArrayT: ...
1078@overload
1079def amin(
1080 a: ArrayLike,
1081 axis: _ShapeLike | None = None,
1082 *,
1083 out: _ArrayT,
1084 keepdims: bool | _NoValueType = ...,
1085 initial: _NumberLike_co | _NoValueType = ...,
1086 where: _ArrayLikeBool_co | _NoValueType = ...,
1087) -> _ArrayT: ...
1088
1089# TODO: `np.prod()``: For object arrays `initial` does not necessarily
1090# have to be a numerical scalar.
1091# The only requirement is that it is compatible
1092# with the `.__mul__()` method(s) of the passed array's elements.
1093# Note that the same situation holds for all wrappers around
1094# `np.ufunc.reduce`, e.g. `np.sum()` (`.__add__()`).
1095# TODO: Fix overlapping overloads: https://github.com/numpy/numpy/issues/27032
1096@overload
1097def prod(
1098 a: _ArrayLikeBool_co,
1099 axis: None = None,
1100 dtype: None = None,
1101 out: None = None,
1102 keepdims: Literal[False] | _NoValueType = ...,
1103 initial: _NumberLike_co | _NoValueType = ...,
1104 where: _ArrayLikeBool_co | _NoValueType = ...,
1105) -> int_: ...
1106@overload
1107def prod(
1108 a: _ArrayLikeUInt_co,
1109 axis: None = None,
1110 dtype: None = None,
1111 out: None = None,
1112 keepdims: Literal[False] | _NoValueType = ...,
1113 initial: _NumberLike_co | _NoValueType = ...,
1114 where: _ArrayLikeBool_co | _NoValueType = ...,
1115) -> uint64: ...
1116@overload
1117def prod(
1118 a: _ArrayLikeInt_co,
1119 axis: None = None,
1120 dtype: None = None,
1121 out: None = None,
1122 keepdims: Literal[False] | _NoValueType = ...,
1123 initial: _NumberLike_co | _NoValueType = ...,
1124 where: _ArrayLikeBool_co | _NoValueType = ...,
1125) -> int64: ...
1126@overload
1127def prod(
1128 a: _ArrayLikeFloat_co,
1129 axis: None = None,
1130 dtype: None = None,
1131 out: None = None,
1132 keepdims: Literal[False] | _NoValueType = ...,
1133 initial: _NumberLike_co | _NoValueType = ...,
1134 where: _ArrayLikeBool_co | _NoValueType = ...,
1135) -> floating: ...
1136@overload
1137def prod(
1138 a: _ArrayLikeComplex_co,
1139 axis: None = None,
1140 dtype: None = None,
1141 out: None = None,
1142 keepdims: Literal[False] | _NoValueType = ...,
1143 initial: _NumberLike_co | _NoValueType = ...,
1144 where: _ArrayLikeBool_co | _NoValueType = ...,
1145) -> complexfloating: ...
1146@overload
1147def prod(
1148 a: _ArrayLikeComplex_co | _ArrayLikeObject_co,
1149 axis: _ShapeLike | None = None,
1150 dtype: None = None,
1151 out: None = None,
1152 keepdims: bool | _NoValueType = ...,
1153 initial: _NumberLike_co | _NoValueType = ...,
1154 where: _ArrayLikeBool_co | _NoValueType = ...,
1155) -> Any: ...
1156@overload
1157def prod(
1158 a: _ArrayLikeComplex_co | _ArrayLikeObject_co,
1159 axis: None,
1160 dtype: _DTypeLike[_ScalarT],
1161 out: None = None,
1162 keepdims: Literal[False] | _NoValueType = ...,
1163 initial: _NumberLike_co | _NoValueType = ...,
1164 where: _ArrayLikeBool_co | _NoValueType = ...,
1165) -> _ScalarT: ...
1166@overload
1167def prod(
1168 a: _ArrayLikeComplex_co | _ArrayLikeObject_co,
1169 axis: None = None,
1170 *,
1171 dtype: _DTypeLike[_ScalarT],
1172 out: None = None,
1173 keepdims: Literal[False] | _NoValueType = ...,
1174 initial: _NumberLike_co | _NoValueType = ...,
1175 where: _ArrayLikeBool_co | _NoValueType = ...,
1176) -> _ScalarT: ...
1177@overload
1178def prod(
1179 a: _ArrayLikeComplex_co | _ArrayLikeObject_co,
1180 axis: _ShapeLike | None = None,
1181 dtype: DTypeLike | None = None,
1182 out: None = None,
1183 keepdims: bool | _NoValueType = ...,
1184 initial: _NumberLike_co | _NoValueType = ...,
1185 where: _ArrayLikeBool_co | _NoValueType = ...,
1186) -> Any: ...
1187@overload
1188def prod(
1189 a: _ArrayLikeComplex_co | _ArrayLikeObject_co,
1190 axis: _ShapeLike | None,
1191 dtype: DTypeLike | None,
1192 out: _ArrayT,
1193 keepdims: bool | _NoValueType = ...,
1194 initial: _NumberLike_co | _NoValueType = ...,
1195 where: _ArrayLikeBool_co | _NoValueType = ...,
1196) -> _ArrayT: ...
1197@overload
1198def prod(
1199 a: _ArrayLikeComplex_co | _ArrayLikeObject_co,
1200 axis: _ShapeLike | None = None,
