_ufunc.pyi 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942
  1. """A module with private type-check-only `numpy.ufunc` subclasses.
  2. The signatures of the ufuncs are too varied to reasonably type
  3. with a single class. So instead, `ufunc` has been expanded into
  4. four private subclasses, one for each combination of
  5. `~ufunc.nin` and `~ufunc.nout`.
  6. """
  7. from typing import (
  8. Any,
  9. Generic,
  10. Literal,
  11. NoReturn,
  12. Protocol,
  13. SupportsIndex,
  14. TypeAlias,
  15. TypedDict,
  16. TypeVar,
  17. overload,
  18. type_check_only,
  19. )
  20. from typing_extensions import LiteralString, Unpack
  21. import numpy as np
  22. from numpy import _CastingKind, _OrderKACF, ufunc
  23. from numpy.typing import NDArray
  24. from ._array_like import ArrayLike, _ArrayLikeBool_co, _ArrayLikeInt_co
  25. from ._dtype_like import DTypeLike
  26. from ._scalars import _ScalarLike_co
  27. from ._shape import _ShapeLike
  28. _T = TypeVar("_T")
  29. _2Tuple: TypeAlias = tuple[_T, _T]
  30. _3Tuple: TypeAlias = tuple[_T, _T, _T]
  31. _4Tuple: TypeAlias = tuple[_T, _T, _T, _T]
  32. _2PTuple: TypeAlias = tuple[_T, _T, Unpack[tuple[_T, ...]]]
  33. _3PTuple: TypeAlias = tuple[_T, _T, _T, Unpack[tuple[_T, ...]]]
  34. _4PTuple: TypeAlias = tuple[_T, _T, _T, _T, Unpack[tuple[_T, ...]]]
  35. _NTypes = TypeVar("_NTypes", bound=int, covariant=True)
  36. _IDType = TypeVar("_IDType", covariant=True)
  37. _NameType = TypeVar("_NameType", bound=LiteralString, covariant=True)
  38. _Signature = TypeVar("_Signature", bound=LiteralString, covariant=True)
  39. _NIn = TypeVar("_NIn", bound=int, covariant=True)
  40. _NOut = TypeVar("_NOut", bound=int, covariant=True)
  41. _ReturnType_co = TypeVar("_ReturnType_co", covariant=True)
  42. _ArrayType = TypeVar("_ArrayType", bound=np.ndarray[Any, Any])
  43. @type_check_only
  44. class _SupportsArrayUFunc(Protocol):
  45. def __array_ufunc__(
  46. self,
  47. ufunc: ufunc,
  48. method: Literal["__call__", "reduce", "reduceat", "accumulate", "outer", "at"],
  49. *inputs: Any,
  50. **kwargs: Any,
  51. ) -> Any: ...
  52. @type_check_only
  53. class _UFunc3Kwargs(TypedDict, total=False):
  54. where: _ArrayLikeBool_co | None
  55. casting: _CastingKind
  56. order: _OrderKACF
  57. subok: bool
  58. signature: _3Tuple[str | None] | str | None
  59. # NOTE: `reduce`, `accumulate`, `reduceat` and `outer` raise a ValueError for
  60. # ufuncs that don't accept two input arguments and return one output argument.
  61. # In such cases the respective methods return `NoReturn`
  62. # NOTE: Similarly, `at` won't be defined for ufuncs that return
  63. # multiple outputs; in such cases `at` is typed to return `NoReturn`
  64. # NOTE: If 2 output types are returned then `out` must be a
  65. # 2-tuple of arrays. Otherwise `None` or a plain array are also acceptable
  66. # pyright: reportIncompatibleMethodOverride=false
  67. @type_check_only
  68. class _UFunc_Nin1_Nout1(ufunc, Generic[_NameType, _NTypes, _IDType]): # type: ignore[misc]
  69. @property
  70. def __name__(self) -> _NameType: ...
  71. @property
  72. def __qualname__(self) -> _NameType: ...
  73. @property
  74. def ntypes(self) -> _NTypes: ...
  75. @property
  76. def identity(self) -> _IDType: ...
  77. @property
  78. def nin(self) -> Literal[1]: ...
  79. @property
  80. def nout(self) -> Literal[1]: ...
  81. @property
  82. def nargs(self) -> Literal[2]: ...
  83. @property
  84. def signature(self) -> None: ...
  85. @overload
  86. def __call__(
  87. self,
  88. __x1: _ScalarLike_co,
  89. out: None = ...,
  90. *,
  91. where: None | _ArrayLikeBool_co = ...,
  92. casting: _CastingKind = ...,
  93. order: _OrderKACF = ...,
  94. dtype: DTypeLike = ...,
  95. subok: bool = ...,
  96. signature: str | _2Tuple[None | str] = ...,
  97. ) -> Any: ...
  98. @overload
  99. def __call__(
  100. self,
  101. __x1: ArrayLike,
  102. out: None | NDArray[Any] | tuple[NDArray[Any]] = ...,
  103. *,
  104. where: None | _ArrayLikeBool_co = ...,
  105. casting: _CastingKind = ...,
  106. order: _OrderKACF = ...,
  107. dtype: DTypeLike = ...,
  108. subok: bool = ...,
  109. signature: str | _2Tuple[None | str] = ...,
  110. ) -> NDArray[Any]: ...
  111. @overload
  112. def __call__(
  113. self,
  114. __x1: _SupportsArrayUFunc,
  115. out: None | NDArray[Any] | tuple[NDArray[Any]] = ...,
  116. *,
  117. where: None | _ArrayLikeBool_co = ...,
  118. casting: _CastingKind = ...,
  119. order: _OrderKACF = ...,
  120. dtype: DTypeLike = ...,
  121. subok: bool = ...,
  122. signature: str | _2Tuple[None | str] = ...,
  123. ) -> Any: ...
  124. def at(
  125. self,
  126. a: _SupportsArrayUFunc,
  127. indices: _ArrayLikeInt_co,
  128. /,
  129. ) -> None: ...
  130. def reduce(self, *args, **kwargs) -> NoReturn: ...
  131. def accumulate(self, *args, **kwargs) -> NoReturn: ...
  132. def reduceat(self, *args, **kwargs) -> NoReturn: ...
  133. def outer(self, *args, **kwargs) -> NoReturn: ...
  134. @type_check_only
  135. class _UFunc_Nin2_Nout1(ufunc, Generic[_NameType, _NTypes, _IDType]): # type: ignore[misc]
  136. @property
  137. def __name__(self) -> _NameType: ...
  138. @property
  139. def __qualname__(self) -> _NameType: ...
  140. @property
  141. def ntypes(self) -> _NTypes: ...
  142. @property
  143. def identity(self) -> _IDType: ...
  144. @property
  145. def nin(self) -> Literal[2]: ...
  146. @property
  147. def nout(self) -> Literal[1]: ...
  148. @property
  149. def nargs(self) -> Literal[3]: ...
  150. @property
  151. def signature(self) -> None: ...
  152. @overload # (scalar, scalar) -> scalar
  153. def __call__(
  154. self,
  155. x1: _ScalarLike_co,
  156. x2: _ScalarLike_co,
  157. /,
  158. out: None = None,
  159. *,
  160. dtype: DTypeLike | None = None,
  161. **kwds: Unpack[_UFunc3Kwargs],
  162. ) -> Any: ...
  163. @overload # (array-like, array) -> array
  164. def __call__(
  165. self,
  166. x1: ArrayLike,
  167. x2: NDArray[np.generic],
  168. /,
  169. out: NDArray[np.generic] | tuple[NDArray[np.generic]] | None = None,
  170. *,
  171. dtype: DTypeLike | None = None,
  172. **kwds: Unpack[_UFunc3Kwargs],
  173. ) -> NDArray[Any]: ...
  174. @overload # (array, array-like) -> array
  175. def __call__(
  176. self,
  177. x1: NDArray[np.generic],
  178. x2: ArrayLike,
  179. /,
  180. out: NDArray[np.generic] | tuple[NDArray[np.generic]] | None = None,
  181. *,
  182. dtype: DTypeLike | None = None,
  183. **kwds: Unpack[_UFunc3Kwargs],
  184. ) -> NDArray[Any]: ...
  185. @overload # (array-like, array-like, out=array) -> array
  186. def __call__(
  187. self,
  188. x1: ArrayLike,
  189. x2: ArrayLike,
  190. /,
  191. out: NDArray[np.generic] | tuple[NDArray[np.generic]],
  192. *,
  193. dtype: DTypeLike | None = None,
  194. **kwds: Unpack[_UFunc3Kwargs],
  195. ) -> NDArray[Any]: ...
  196. @overload # (array-like, array-like) -> array | scalar
  197. def __call__(
  198. self,
  199. x1: ArrayLike,
  200. x2: ArrayLike,
  201. /,
  202. out: NDArray[np.generic] | tuple[NDArray[np.generic]] | None = None,
  203. *,
  204. dtype: DTypeLike | None = None,
  205. **kwds: Unpack[_UFunc3Kwargs],
  206. ) -> NDArray[Any] | Any: ...
  207. def at(
  208. self,
  209. a: NDArray[Any],
  210. indices: _ArrayLikeInt_co,
  211. b: ArrayLike,
  212. /,
  213. ) -> None: ...
  214. def reduce(
  215. self,
  216. array: ArrayLike,
  217. axis: None | _ShapeLike = ...,
  218. dtype: DTypeLike = ...,
  219. out: None | NDArray[Any] = ...,
  220. keepdims: bool = ...,
  221. initial: Any = ...,
  222. where: _ArrayLikeBool_co = ...,
  223. ) -> Any: ...
  224. def accumulate(
  225. self,
  226. array: ArrayLike,
  227. axis: SupportsIndex = ...,
  228. dtype: DTypeLike = ...,
  229. out: None | NDArray[Any] = ...,
  230. ) -> NDArray[Any]: ...
  231. def reduceat(
  232. self,
  233. array: ArrayLike,
  234. indices: _ArrayLikeInt_co,
  235. axis: SupportsIndex = ...,
  236. dtype: DTypeLike = ...,
  237. out: None | NDArray[Any] = ...,
  238. ) -> NDArray[Any]: ...
  239. @overload # (scalar, scalar) -> scalar
  240. def outer(
  241. self,
  242. A: _ScalarLike_co,
  243. B: _ScalarLike_co,
  244. /,
  245. *,
  246. out: None = None,
  247. dtype: DTypeLike | None = None,
  248. **kwds: Unpack[_UFunc3Kwargs],
  249. ) -> Any: ...
  250. @overload # (array-like, array) -> array
  251. def outer(
  252. self,
  253. A: ArrayLike,
  254. B: NDArray[np.generic],
  255. /,
  256. *,
  257. out: NDArray[np.generic] | tuple[NDArray[np.generic]] | None = None,
  258. dtype: DTypeLike | None = None,
  259. **kwds: Unpack[_UFunc3Kwargs],
  260. ) -> NDArray[Any]: ...
  261. @overload # (array, array-like) -> array
  262. def outer(
  263. self,
  264. A: NDArray[np.generic],
  265. B: ArrayLike,
  266. /,
  267. *,
  268. out: NDArray[np.generic] | tuple[NDArray[np.generic]] | None = None,
  269. dtype: DTypeLike | None = None,
  270. **kwds: Unpack[_UFunc3Kwargs],
  271. ) -> NDArray[Any]: ...
  272. @overload # (array-like, array-like, out=array) -> array
  273. def outer(
  274. self,
  275. A: ArrayLike,
  276. B: ArrayLike,
  277. /,
  278. *,
  279. out: NDArray[np.generic] | tuple[NDArray[np.generic]],
  280. dtype: DTypeLike | None = None,
  281. **kwds: Unpack[_UFunc3Kwargs],
  282. ) -> NDArray[Any]: ...
  283. @overload # (array-like, array-like) -> array | scalar
  284. def outer(
  285. self,
  286. A: ArrayLike,
  287. B: ArrayLike,
  288. /,
  289. *,
  290. out: NDArray[np.generic] | tuple[NDArray[np.generic]] | None = None,
  291. dtype: DTypeLike | None = None,
  292. **kwds: Unpack[_UFunc3Kwargs],
  293. ) -> NDArray[Any] | Any: ...
  294. @type_check_only
  295. class _UFunc_Nin1_Nout2(ufunc, Generic[_NameType, _NTypes, _IDType]): # type: ignore[misc]
  296. @property
  297. def __name__(self) -> _NameType: ...
  298. @property
  299. def __qualname__(self) -> _NameType: ...
  300. @property
  301. def ntypes(self) -> _NTypes: ...
  302. @property
  303. def identity(self) -> _IDType: ...
  304. @property
  305. def nin(self) -> Literal[1]: ...
  306. @property
  307. def nout(self) -> Literal[2]: ...
  308. @property
  309. def nargs(self) -> Literal[3]: ...
  310. @property
  311. def signature(self) -> None: ...
  312. @overload
  313. def __call__(
  314. self,
  315. __x1: _ScalarLike_co,
  316. __out1: None = ...,
  317. __out2: None = ...,
  318. *,
  319. where: None | _ArrayLikeBool_co = ...,
  320. casting: _CastingKind = ...,
  321. order: _OrderKACF = ...,
  322. dtype: DTypeLike = ...,
  323. subok: bool = ...,
  324. signature: str | _3Tuple[None | str] = ...,
  325. ) -> _2Tuple[Any]: ...
  326. @overload
  327. def __call__(
  328. self,
  329. __x1: ArrayLike,
  330. __out1: None | NDArray[Any] = ...,
  331. __out2: None | NDArray[Any] = ...,
  332. *,
  333. out: _2Tuple[NDArray[Any]] = ...,
  334. where: None | _ArrayLikeBool_co = ...,
  335. casting: _CastingKind = ...,
  336. order: _OrderKACF = ...,
  337. dtype: DTypeLike = ...,
  338. subok: bool = ...,
  339. signature: str | _3Tuple[None | str] = ...,
  340. ) -> _2Tuple[NDArray[Any]]: ...
  341. @overload
  342. def __call__(
  343. self,
  344. __x1: _SupportsArrayUFunc,
  345. __out1: None | NDArray[Any] = ...,
  346. __out2: None | NDArray[Any] = ...,
  347. *,
  348. out: _2Tuple[NDArray[Any]] = ...,
  349. where: None | _ArrayLikeBool_co = ...,
  350. casting: _CastingKind = ...,
  351. order: _OrderKACF = ...,
  352. dtype: DTypeLike = ...,
  353. subok: bool = ...,
  354. signature: str | _3Tuple[None | str] = ...,
  355. ) -> _2Tuple[Any]: ...
  356. def at(self, *args, **kwargs) -> NoReturn: ...
  357. def reduce(self, *args, **kwargs) -> NoReturn: ...
  358. def accumulate(self, *args, **kwargs) -> NoReturn: ...
  359. def reduceat(self, *args, **kwargs) -> NoReturn: ...
  360. def outer(self, *args, **kwargs) -> NoReturn: ...
  361. @type_check_only
  362. class _UFunc_Nin2_Nout2(ufunc, Generic[_NameType, _NTypes, _IDType]): # type: ignore[misc]
  363. @property
  364. def __name__(self) -> _NameType: ...
  365. @property
  366. def __qualname__(self) -> _NameType: ...
  367. @property
  368. def ntypes(self) -> _NTypes: ...
  369. @property
  370. def identity(self) -> _IDType: ...
  371. @property
  372. def nin(self) -> Literal[2]: ...
  373. @property
  374. def nout(self) -> Literal[2]: ...
  375. @property
  376. def nargs(self) -> Literal[4]: ...
  377. @property
  378. def signature(self) -> None: ...
  379. @overload
  380. def __call__(
  381. self,
  382. __x1: _ScalarLike_co,
  383. __x2: _ScalarLike_co,
  384. __out1: None = ...,
  385. __out2: None = ...,
  386. *,
  387. where: None | _ArrayLikeBool_co = ...,
  388. casting: _CastingKind = ...,
  389. order: _OrderKACF = ...,
  390. dtype: DTypeLike = ...,
  391. subok: bool = ...,
  392. signature: str | _4Tuple[None | str] = ...,
  393. ) -> _2Tuple[Any]: ...
  394. @overload
  395. def __call__(
  396. self,
  397. __x1: ArrayLike,
  398. __x2: ArrayLike,
  399. __out1: None | NDArray[Any] = ...,
  400. __out2: None | NDArray[Any] = ...,
  401. *,
  402. out: _2Tuple[NDArray[Any]] = ...,
  403. where: None | _ArrayLikeBool_co = ...,
  404. casting: _CastingKind = ...,
  405. order: _OrderKACF = ...,
  406. dtype: DTypeLike = ...,
  407. subok: bool = ...,
  408. signature: str | _4Tuple[None | str] = ...,
  409. ) -> _2Tuple[NDArray[Any]]: ...
  410. def at(self, *args, **kwargs) -> NoReturn: ...
  411. def reduce(self, *args, **kwargs) -> NoReturn: ...
  412. def accumulate(self, *args, **kwargs) -> NoReturn: ...
  413. def reduceat(self, *args, **kwargs) -> NoReturn: ...
  414. def outer(self, *args, **kwargs) -> NoReturn: ...
  415. @type_check_only
  416. class _GUFunc_Nin2_Nout1(ufunc, Generic[_NameType, _NTypes, _IDType, _Signature]): # type: ignore[misc]
  417. @property
  418. def __name__(self) -> _NameType: ...
  419. @property
  420. def __qualname__(self) -> _NameType: ...
  421. @property
  422. def ntypes(self) -> _NTypes: ...
  423. @property
  424. def identity(self) -> _IDType: ...
  425. @property
  426. def nin(self) -> Literal[2]: ...
  427. @property
  428. def nout(self) -> Literal[1]: ...
  429. @property
  430. def nargs(self) -> Literal[3]: ...
  431. @property
  432. def signature(self) -> _Signature: ...
  433. # Scalar for 1D array-likes; ndarray otherwise
  434. @overload
  435. def __call__(
  436. self,
  437. __x1: ArrayLike,
  438. __x2: ArrayLike,
  439. out: None = ...,
  440. *,
  441. casting: _CastingKind = ...,
  442. order: _OrderKACF = ...,
  443. dtype: DTypeLike = ...,
  444. subok: bool = ...,
  445. signature: str | _3Tuple[None | str] = ...,
  446. axes: list[_2Tuple[SupportsIndex]] = ...,
  447. ) -> Any: ...
  448. @overload
  449. def __call__(
  450. self,
  451. __x1: ArrayLike,
  452. __x2: ArrayLike,
  453. out: NDArray[Any] | tuple[NDArray[Any]],
  454. *,
  455. casting: _CastingKind = ...,
  456. order: _OrderKACF = ...,
  457. dtype: DTypeLike = ...,
  458. subok: bool = ...,
  459. signature: str | _3Tuple[None | str] = ...,
  460. axes: list[_2Tuple[SupportsIndex]] = ...,
  461. ) -> NDArray[Any]: ...
  462. def at(self, *args, **kwargs) -> NoReturn: ...
  463. def reduce(self, *args, **kwargs) -> NoReturn: ...
  464. def accumulate(self, *args, **kwargs) -> NoReturn: ...
  465. def reduceat(self, *args, **kwargs) -> NoReturn: ...
  466. def outer(self, *args, **kwargs) -> NoReturn: ...
  467. @type_check_only
  468. class _PyFunc_Kwargs_Nargs2(TypedDict, total=False):
  469. where: None | _ArrayLikeBool_co
  470. casting: _CastingKind
  471. order: _OrderKACF
  472. dtype: DTypeLike
  473. subok: bool
  474. signature: str | tuple[DTypeLike, DTypeLike]
  475. @type_check_only
  476. class _PyFunc_Kwargs_Nargs3(TypedDict, total=False):
  477. where: None | _ArrayLikeBool_co
  478. casting: _CastingKind
  479. order: _OrderKACF
  480. dtype: DTypeLike
  481. subok: bool
  482. signature: str | tuple[DTypeLike, DTypeLike, DTypeLike]
  483. @type_check_only
  484. class _PyFunc_Kwargs_Nargs3P(TypedDict, total=False):
  485. where: None | _ArrayLikeBool_co
  486. casting: _CastingKind
  487. order: _OrderKACF
  488. dtype: DTypeLike
  489. subok: bool
  490. signature: str | _3PTuple[DTypeLike]
  491. @type_check_only
  492. class _PyFunc_Kwargs_Nargs4P(TypedDict, total=False):
  493. where: None | _ArrayLikeBool_co
  494. casting: _CastingKind
  495. order: _OrderKACF
  496. dtype: DTypeLike
  497. subok: bool
  498. signature: str | _4PTuple[DTypeLike]
  499. @type_check_only
  500. class _PyFunc_Nin1_Nout1(ufunc, Generic[_ReturnType_co, _IDType]): # type: ignore[misc]
  501. @property
  502. def identity(self) -> _IDType: ...
  503. @property
  504. def nin(self) -> Literal[1]: ...
  505. @property
  506. def nout(self) -> Literal[1]: ...
  507. @property
  508. def nargs(self) -> Literal[2]: ...
  509. @property
  510. def ntypes(self) -> Literal[1]: ...
  511. @property
  512. def signature(self) -> None: ...
  513. @overload
  514. def __call__(
  515. self,
  516. x1: _ScalarLike_co,
  517. /,
  518. out: None = ...,
  519. **kwargs: Unpack[_PyFunc_Kwargs_Nargs2],
  520. ) -> _ReturnType_co: ...
  521. @overload
  522. def __call__(
  523. self,
  524. x1: ArrayLike,
  525. /,
  526. out: None = ...,
  527. **kwargs: Unpack[_PyFunc_Kwargs_Nargs2],
  528. ) -> _ReturnType_co | NDArray[np.object_]: ...
  529. @overload
  530. def __call__(
  531. self,
  532. x1: ArrayLike,
  533. /,
  534. out: _ArrayType | tuple[_ArrayType],
  535. **kwargs: Unpack[_PyFunc_Kwargs_Nargs2],
  536. ) -> _ArrayType: ...
  537. @overload
  538. def __call__(
  539. self,
  540. x1: _SupportsArrayUFunc,
  541. /,
  542. out: None | NDArray[Any] | tuple[NDArray[Any]] = ...,
  543. **kwargs: Unpack[_PyFunc_Kwargs_Nargs2],
  544. ) -> Any: ...
  545. def at(self, a: _SupportsArrayUFunc, ixs: _ArrayLikeInt_co, /) -> None: ...
  546. def reduce(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  547. def accumulate(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  548. def reduceat(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  549. def outer(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  550. @type_check_only
  551. class _PyFunc_Nin2_Nout1(ufunc, Generic[_ReturnType_co, _IDType]): # type: ignore[misc]
  552. @property
  553. def identity(self) -> _IDType: ...
  554. @property
  555. def nin(self) -> Literal[2]: ...
  556. @property
  557. def nout(self) -> Literal[1]: ...
  558. @property
  559. def nargs(self) -> Literal[3]: ...
  560. @property
  561. def ntypes(self) -> Literal[1]: ...
  562. @property
  563. def signature(self) -> None: ...
  564. @overload
  565. def __call__(
  566. self,
  567. x1: _ScalarLike_co,
  568. x2: _ScalarLike_co,
  569. /,
  570. out: None = ...,
  571. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  572. ) -> _ReturnType_co: ...
  573. @overload
  574. def __call__(
  575. self,
  576. x1: ArrayLike,
  577. x2: ArrayLike,
  578. /,
  579. out: None = ...,
  580. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  581. ) -> _ReturnType_co | NDArray[np.object_]: ...
  582. @overload
  583. def __call__(
  584. self,
  585. x1: ArrayLike,
  586. x2: ArrayLike,
  587. /,
  588. out: _ArrayType | tuple[_ArrayType],
  589. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  590. ) -> _ArrayType: ...
  591. @overload
  592. def __call__(
  593. self,
  594. x1: _SupportsArrayUFunc,
  595. x2: _SupportsArrayUFunc | ArrayLike,
  596. /,
  597. out: None | NDArray[Any] | tuple[NDArray[Any]] = ...,
  598. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  599. ) -> Any: ...
  600. @overload
  601. def __call__(
  602. self,
  603. x1: ArrayLike,
  604. x2: _SupportsArrayUFunc,
  605. /,
  606. out: None | NDArray[Any] | tuple[NDArray[Any]] = ...,
  607. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  608. ) -> Any: ...
  609. def at(self, a: _SupportsArrayUFunc, ixs: _ArrayLikeInt_co, b: ArrayLike, /) -> None: ...
  610. @overload
  611. def reduce(
  612. self,
  613. array: ArrayLike,
  614. axis: None | _ShapeLike,
  615. dtype: DTypeLike,
  616. out: _ArrayType,
  617. /,
  618. keepdims: bool = ...,
  619. initial: _ScalarLike_co = ...,
  620. where: _ArrayLikeBool_co = ...,
  621. ) -> _ArrayType: ...
  622. @overload
  623. def reduce(
  624. self,
  625. /,
  626. array: ArrayLike,
  627. axis: None | _ShapeLike = ...,
  628. dtype: DTypeLike = ...,
  629. *,
  630. out: _ArrayType | tuple[_ArrayType],
  631. keepdims: bool = ...,
  632. initial: _ScalarLike_co = ...,
  633. where: _ArrayLikeBool_co = ...,
  634. ) -> _ArrayType: ...
  635. @overload
  636. def reduce(
  637. self,
  638. /,
  639. array: ArrayLike,
  640. axis: None | _ShapeLike = ...,
  641. dtype: DTypeLike = ...,
  642. out: None = ...,
  643. *,
  644. keepdims: Literal[True],
  645. initial: _ScalarLike_co = ...,
  646. where: _ArrayLikeBool_co = ...,
  647. ) -> NDArray[np.object_]: ...
  648. @overload
  649. def reduce(
  650. self,
  651. /,
  652. array: ArrayLike,
  653. axis: None | _ShapeLike = ...,
  654. dtype: DTypeLike = ...,
  655. out: None = ...,
  656. keepdims: bool = ...,
  657. initial: _ScalarLike_co = ...,
  658. where: _ArrayLikeBool_co = ...,
  659. ) -> _ReturnType_co | NDArray[np.object_]: ...
  660. @overload
  661. def reduceat(
  662. self,
  663. array: ArrayLike,
  664. indices: _ArrayLikeInt_co,
  665. axis: SupportsIndex,
  666. dtype: DTypeLike,
  667. out: _ArrayType,
  668. /,
  669. ) -> _ArrayType: ...
  670. @overload
  671. def reduceat(
  672. self,
  673. /,
  674. array: ArrayLike,
  675. indices: _ArrayLikeInt_co,
  676. axis: SupportsIndex = ...,
  677. dtype: DTypeLike = ...,
  678. *,
  679. out: _ArrayType | tuple[_ArrayType],
  680. ) -> _ArrayType: ...
  681. @overload
  682. def reduceat(
  683. self,
  684. /,
  685. array: ArrayLike,
  686. indices: _ArrayLikeInt_co,
  687. axis: SupportsIndex = ...,
  688. dtype: DTypeLike = ...,
  689. out: None = ...,
  690. ) -> NDArray[np.object_]: ...
  691. @overload
  692. def reduceat(
  693. self,
  694. /,
  695. array: _SupportsArrayUFunc,
  696. indices: _ArrayLikeInt_co,
  697. axis: SupportsIndex = ...,
  698. dtype: DTypeLike = ...,
  699. out: None | NDArray[Any] | tuple[NDArray[Any]] = ...,
  700. ) -> Any: ...
  701. @overload
  702. def accumulate(
  703. self,
  704. array: ArrayLike,
  705. axis: SupportsIndex,
  706. dtype: DTypeLike,
  707. out: _ArrayType,
  708. /,
  709. ) -> _ArrayType: ...
  710. @overload
  711. def accumulate(
  712. self,
  713. array: ArrayLike,
  714. axis: SupportsIndex = ...,
  715. dtype: DTypeLike = ...,
  716. *,
  717. out: _ArrayType | tuple[_ArrayType],
  718. ) -> _ArrayType: ...
  719. @overload
  720. def accumulate(
  721. self,
  722. /,
  723. array: ArrayLike,
  724. axis: SupportsIndex = ...,
  725. dtype: DTypeLike = ...,
  726. out: None = ...,
  727. ) -> NDArray[np.object_]: ...
  728. @overload
  729. def outer(
  730. self,
  731. A: _ScalarLike_co,
  732. B: _ScalarLike_co,
  733. /, *,
  734. out: None = ...,
  735. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  736. ) -> _ReturnType_co: ...
  737. @overload
  738. def outer(
  739. self,
  740. A: ArrayLike,
  741. B: ArrayLike,
  742. /, *,
  743. out: None = ...,
  744. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  745. ) -> _ReturnType_co | NDArray[np.object_]: ...
  746. @overload
  747. def outer(
  748. self,
  749. A: ArrayLike,
  750. B: ArrayLike,
  751. /, *,
  752. out: _ArrayType,
  753. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  754. ) -> _ArrayType: ...
  755. @overload
  756. def outer(
  757. self,
  758. A: _SupportsArrayUFunc,
  759. B: _SupportsArrayUFunc | ArrayLike,
  760. /, *,
  761. out: None = ...,
  762. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  763. ) -> Any: ...
  764. @overload
  765. def outer(
  766. self,
  767. A: _ScalarLike_co,
  768. B: _SupportsArrayUFunc | ArrayLike,
  769. /, *,
  770. out: None = ...,
  771. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3],
  772. ) -> Any: ...
  773. @type_check_only
  774. class _PyFunc_Nin3P_Nout1(ufunc, Generic[_ReturnType_co, _IDType, _NIn]): # type: ignore[misc]
  775. @property
  776. def identity(self) -> _IDType: ...
  777. @property
  778. def nin(self) -> _NIn: ...
  779. @property
  780. def nout(self) -> Literal[1]: ...
  781. @property
  782. def ntypes(self) -> Literal[1]: ...
  783. @property
  784. def signature(self) -> None: ...
  785. @overload
  786. def __call__(
  787. self,
  788. x1: _ScalarLike_co,
  789. x2: _ScalarLike_co,
  790. x3: _ScalarLike_co,
  791. /,
  792. *xs: _ScalarLike_co,
  793. out: None = ...,
  794. **kwargs: Unpack[_PyFunc_Kwargs_Nargs4P],
  795. ) -> _ReturnType_co: ...
  796. @overload
  797. def __call__(
  798. self,
  799. x1: ArrayLike,
  800. x2: ArrayLike,
  801. x3: ArrayLike,
  802. /,
  803. *xs: ArrayLike,
  804. out: None = ...,
  805. **kwargs: Unpack[_PyFunc_Kwargs_Nargs4P],
  806. ) -> _ReturnType_co | NDArray[np.object_]: ...
  807. @overload
  808. def __call__(
  809. self,
  810. x1: ArrayLike,
  811. x2: ArrayLike,
  812. x3: ArrayLike,
  813. /,
  814. *xs: ArrayLike,
  815. out: _ArrayType | tuple[_ArrayType],
  816. **kwargs: Unpack[_PyFunc_Kwargs_Nargs4P],
  817. ) -> _ArrayType: ...
  818. @overload
  819. def __call__(
  820. self,
  821. x1: _SupportsArrayUFunc | ArrayLike,
  822. x2: _SupportsArrayUFunc | ArrayLike,
  823. x3: _SupportsArrayUFunc | ArrayLike,
  824. /,
  825. *xs: _SupportsArrayUFunc | ArrayLike,
  826. out: None | NDArray[Any] | tuple[NDArray[Any]] = ...,
  827. **kwargs: Unpack[_PyFunc_Kwargs_Nargs4P],
  828. ) -> Any: ...
  829. def at(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  830. def reduce(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  831. def accumulate(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  832. def reduceat(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  833. def outer(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  834. @type_check_only
  835. class _PyFunc_Nin1P_Nout2P(ufunc, Generic[_ReturnType_co, _IDType, _NIn, _NOut]): # type: ignore[misc]
  836. @property
  837. def identity(self) -> _IDType: ...
  838. @property
  839. def nin(self) -> _NIn: ...
  840. @property
  841. def nout(self) -> _NOut: ...
  842. @property
  843. def ntypes(self) -> Literal[1]: ...
  844. @property
  845. def signature(self) -> None: ...
  846. @overload
  847. def __call__(
  848. self,
  849. x1: _ScalarLike_co,
  850. /,
  851. *xs: _ScalarLike_co,
  852. out: None = ...,
  853. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3P],
  854. ) -> _2PTuple[_ReturnType_co]: ...
  855. @overload
  856. def __call__(
  857. self,
  858. x1: ArrayLike,
  859. /,
  860. *xs: ArrayLike,
  861. out: None = ...,
  862. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3P],
  863. ) -> _2PTuple[_ReturnType_co | NDArray[np.object_]]: ...
  864. @overload
  865. def __call__(
  866. self,
  867. x1: ArrayLike,
  868. /,
  869. *xs: ArrayLike,
  870. out: _2PTuple[_ArrayType],
  871. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3P],
  872. ) -> _2PTuple[_ArrayType]: ...
  873. @overload
  874. def __call__(
  875. self,
  876. x1: _SupportsArrayUFunc | ArrayLike,
  877. /,
  878. *xs: _SupportsArrayUFunc | ArrayLike,
  879. out: None | _2PTuple[NDArray[Any]] = ...,
  880. **kwargs: Unpack[_PyFunc_Kwargs_Nargs3P],
  881. ) -> Any: ...
  882. def at(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  883. def reduce(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  884. def accumulate(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  885. def reduceat(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...
  886. def outer(self, /, *args: Any, **kwargs: Any) -> NoReturn: ...