core.pyi 128 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733
  1. # pyright: reportIncompatibleMethodOverride=false
  2. import datetime as dt
  3. import types
  4. from _typeshed import Incomplete
  5. from collections.abc import Callable, Sequence
  6. from typing import (
  7. Any,
  8. Concatenate,
  9. Final,
  10. Generic,
  11. Literal,
  12. Never,
  13. NoReturn,
  14. Self,
  15. SupportsComplex,
  16. SupportsFloat,
  17. SupportsIndex,
  18. SupportsInt,
  19. TypeAlias,
  20. Unpack,
  21. final,
  22. overload,
  23. )
  24. from typing_extensions import Buffer, ParamSpec, TypeIs, TypeVar, override
  25. import numpy as np
  26. from numpy import (
  27. _AnyShapeT,
  28. _HasDType,
  29. _HasDTypeWithRealAndImag,
  30. _ModeKind,
  31. _OrderACF,
  32. _OrderCF,
  33. _OrderKACF,
  34. _PartitionKind,
  35. _SortKind,
  36. _ToIndices,
  37. amax,
  38. amin,
  39. bool_,
  40. bytes_,
  41. character,
  42. complex128,
  43. complexfloating,
  44. datetime64,
  45. dtype,
  46. dtypes,
  47. expand_dims,
  48. flexible,
  49. float16,
  50. float32,
  51. float64,
  52. floating,
  53. generic,
  54. inexact,
  55. int8,
  56. int64,
  57. int_,
  58. integer,
  59. intp,
  60. ndarray,
  61. number,
  62. object_,
  63. signedinteger,
  64. str_,
  65. timedelta64,
  66. ufunc,
  67. unsignedinteger,
  68. void,
  69. )
  70. from numpy._core.fromnumeric import _UFuncKwargs # type-check only
  71. from numpy._globals import _NoValueType
  72. from numpy._typing import (
  73. ArrayLike,
  74. DTypeLike,
  75. NDArray,
  76. _32Bit,
  77. _64Bit,
  78. _AnyShape,
  79. _ArrayLike,
  80. _ArrayLikeBool_co,
  81. _ArrayLikeBytes_co,
  82. _ArrayLikeComplex128_co,
  83. _ArrayLikeComplex_co,
  84. _ArrayLikeDT64_co,
  85. _ArrayLikeFloat64_co,
  86. _ArrayLikeFloat_co,
  87. _ArrayLikeInt,
  88. _ArrayLikeInt_co,
  89. _ArrayLikeNumber_co,
  90. _ArrayLikeObject_co,
  91. _ArrayLikeStr_co,
  92. _ArrayLikeString_co,
  93. _ArrayLikeTD64_co,
  94. _ArrayLikeUInt_co,
  95. _CharLike_co,
  96. _DT64Codes,
  97. _DTypeLike,
  98. _DTypeLikeBool,
  99. _DTypeLikeVoid,
  100. _FloatLike_co,
  101. _IntLike_co,
  102. _NestedSequence,
  103. _ScalarLike_co,
  104. _Shape,
  105. _ShapeLike,
  106. _SupportsArrayFunc,
  107. _SupportsDType,
  108. _TD64Like_co,
  109. )
  110. from numpy._typing._dtype_like import _VoidDTypeLike
  111. __all__ = [
  112. "MAError",
  113. "MaskError",
  114. "MaskType",
  115. "MaskedArray",
  116. "abs",
  117. "absolute",
  118. "add",
  119. "all",
  120. "allclose",
  121. "allequal",
  122. "alltrue",
  123. "amax",
  124. "amin",
  125. "angle",
  126. "anom",
  127. "anomalies",
  128. "any",
  129. "append",
  130. "arange",
  131. "arccos",
  132. "arccosh",
  133. "arcsin",
  134. "arcsinh",
  135. "arctan",
  136. "arctan2",
  137. "arctanh",
  138. "argmax",
  139. "argmin",
  140. "argsort",
  141. "around",
  142. "array",
  143. "asanyarray",
  144. "asarray",
  145. "bitwise_and",
  146. "bitwise_or",
  147. "bitwise_xor",
  148. "bool_",
  149. "ceil",
  150. "choose",
  151. "clip",
  152. "common_fill_value",
  153. "compress",
  154. "compressed",
  155. "concatenate",
  156. "conjugate",
  157. "convolve",
  158. "copy",
  159. "correlate",
  160. "cos",
  161. "cosh",
  162. "count",
  163. "cumprod",
  164. "cumsum",
  165. "default_fill_value",
  166. "diag",
  167. "diagonal",
  168. "diff",
  169. "divide",
  170. "empty",
  171. "empty_like",
  172. "equal",
  173. "exp",
  174. "expand_dims",
  175. "fabs",
  176. "filled",
  177. "fix_invalid",
  178. "flatten_mask",
  179. "flatten_structured_array",
  180. "floor",
  181. "floor_divide",
  182. "fmod",
  183. "frombuffer",
  184. "fromflex",
  185. "fromfunction",
  186. "getdata",
  187. "getmask",
  188. "getmaskarray",
  189. "greater",
  190. "greater_equal",
  191. "harden_mask",
  192. "hypot",
  193. "identity",
  194. "ids",
  195. "indices",
  196. "inner",
  197. "innerproduct",
  198. "isMA",
  199. "isMaskedArray",
  200. "is_mask",
  201. "is_masked",
  202. "isarray",
  203. "left_shift",
  204. "less",
  205. "less_equal",
  206. "log",
  207. "log2",
  208. "log10",
  209. "logical_and",
  210. "logical_not",
  211. "logical_or",
  212. "logical_xor",
  213. "make_mask",
  214. "make_mask_descr",
  215. "make_mask_none",
  216. "mask_or",
  217. "masked",
  218. "masked_array",
  219. "masked_equal",
  220. "masked_greater",
  221. "masked_greater_equal",
  222. "masked_inside",
  223. "masked_invalid",
  224. "masked_less",
  225. "masked_less_equal",
  226. "masked_not_equal",
  227. "masked_object",
  228. "masked_outside",
  229. "masked_print_option",
  230. "masked_singleton",
  231. "masked_values",
  232. "masked_where",
  233. "max",
  234. "maximum",
  235. "maximum_fill_value",
  236. "mean",
  237. "min",
  238. "minimum",
  239. "minimum_fill_value",
  240. "mod",
  241. "multiply",
  242. "mvoid",
  243. "ndim",
  244. "negative",
  245. "nomask",
  246. "nonzero",
  247. "not_equal",
  248. "ones",
  249. "ones_like",
  250. "outer",
  251. "outerproduct",
  252. "power",
  253. "prod",
  254. "product",
  255. "ptp",
  256. "put",
  257. "putmask",
  258. "ravel",
  259. "remainder",
  260. "repeat",
  261. "reshape",
  262. "resize",
  263. "right_shift",
  264. "round",
  265. "round_",
  266. "set_fill_value",
  267. "shape",
  268. "sin",
  269. "sinh",
  270. "size",
  271. "soften_mask",
  272. "sometrue",
  273. "sort",
  274. "sqrt",
  275. "squeeze",
  276. "std",
  277. "subtract",
  278. "sum",
  279. "swapaxes",
  280. "take",
  281. "tan",
  282. "tanh",
  283. "trace",
  284. "transpose",
  285. "true_divide",
  286. "var",
  287. "where",
  288. "zeros",
  289. "zeros_like",
  290. ]
  291. _ShapeT = TypeVar("_ShapeT", bound=_Shape)
  292. _ShapeOrAnyT = TypeVar("_ShapeOrAnyT", bound=_Shape, default=_AnyShape)
  293. _ShapeT_co = TypeVar("_ShapeT_co", bound=_Shape, default=_AnyShape, covariant=True)
  294. _DTypeT = TypeVar("_DTypeT", bound=dtype)
  295. _DTypeT_co = TypeVar("_DTypeT_co", bound=dtype, default=dtype, covariant=True)
  296. _ArrayT = TypeVar("_ArrayT", bound=ndarray[Any, Any])
  297. _MArrayT = TypeVar("_MArrayT", bound=MaskedArray[Any, Any])
  298. _ScalarT = TypeVar("_ScalarT", bound=generic)
  299. _ScalarT_co = TypeVar("_ScalarT_co", bound=generic, covariant=True)
  300. _NumberT = TypeVar("_NumberT", bound=number)
  301. _RealNumberT = TypeVar("_RealNumberT", bound=floating | integer)
  302. _ArangeScalarT = TypeVar("_ArangeScalarT", bound=_ArangeScalar)
  303. _UFuncT_co = TypeVar(
  304. "_UFuncT_co",
  305. # the `| Callable` simplifies self-binding to the ufunc's callable signature
  306. bound=np.ufunc | Callable[..., object],
  307. default=np.ufunc,
  308. covariant=True,
  309. )
  310. _Pss = ParamSpec("_Pss")
  311. _T = TypeVar("_T")
  312. _Ignored: TypeAlias = object
  313. # A subset of `MaskedArray` that can be parametrized w.r.t. `np.generic`
  314. _MaskedArray: TypeAlias = MaskedArray[_AnyShape, dtype[_ScalarT]]
  315. _Masked1D: TypeAlias = MaskedArray[tuple[int], dtype[_ScalarT]]
  316. _MaskedArrayUInt_co: TypeAlias = _MaskedArray[unsignedinteger | np.bool]
  317. _MaskedArrayInt_co: TypeAlias = _MaskedArray[integer | np.bool]
  318. _MaskedArrayFloat64_co: TypeAlias = _MaskedArray[floating[_64Bit] | float32 | float16 | integer | np.bool]
  319. _MaskedArrayFloat_co: TypeAlias = _MaskedArray[floating | integer | np.bool]
  320. _MaskedArrayComplex128_co: TypeAlias = _MaskedArray[number[_64Bit] | number[_32Bit] | float16 | integer | np.bool]
  321. _MaskedArrayComplex_co: TypeAlias = _MaskedArray[inexact | integer | np.bool]
  322. _MaskedArrayNumber_co: TypeAlias = _MaskedArray[number | np.bool]
  323. _MaskedArrayTD64_co: TypeAlias = _MaskedArray[timedelta64 | integer | np.bool]
  324. _ArrayInt_co: TypeAlias = NDArray[integer | bool_]
  325. _Array1D: TypeAlias = np.ndarray[tuple[int], np.dtype[_ScalarT]]
  326. _ConvertibleToInt: TypeAlias = SupportsInt | SupportsIndex | _CharLike_co
  327. _ConvertibleToFloat: TypeAlias = SupportsFloat | SupportsIndex | _CharLike_co
  328. _ConvertibleToComplex: TypeAlias = SupportsComplex | SupportsFloat | SupportsIndex | _CharLike_co
  329. _ConvertibleToTD64: TypeAlias = dt.timedelta | int | _CharLike_co | character | number | timedelta64 | np.bool | None
  330. _ConvertibleToDT64: TypeAlias = dt.date | int | _CharLike_co | character | number | datetime64 | np.bool | None
  331. _ArangeScalar: TypeAlias = floating | integer | datetime64 | timedelta64
  332. _NoMaskType: TypeAlias = np.bool_[Literal[False]] # type of `np.False_`
  333. _MaskArray: TypeAlias = np.ndarray[_ShapeOrAnyT, np.dtype[np.bool_]]
  334. _FillValue: TypeAlias = complex | None # int | float | complex | None
  335. _FillValueCallable: TypeAlias = Callable[[np.dtype | ArrayLike], _FillValue]
  336. _DomainCallable: TypeAlias = Callable[..., NDArray[np.bool_]]
  337. ###
  338. MaskType = np.bool_
  339. nomask: Final[_NoMaskType] = ...
  340. class MaskedArrayFutureWarning(FutureWarning): ...
  341. class MAError(Exception): ...
  342. class MaskError(MAError): ...
  343. # not generic at runtime
  344. class _MaskedUFunc(Generic[_UFuncT_co]):
  345. f: _UFuncT_co # readonly
  346. def __init__(self, /, ufunc: _UFuncT_co) -> None: ...
  347. # not generic at runtime
  348. class _MaskedUnaryOperation(_MaskedUFunc[_UFuncT_co], Generic[_UFuncT_co]):
  349. fill: Final[_FillValue]
  350. domain: Final[_DomainCallable | None]
  351. def __init__(self, /, mufunc: _UFuncT_co, fill: _FillValue = 0, domain: _DomainCallable | None = None) -> None: ...
  352. # NOTE: This might not work with overloaded callable signatures might not work on
  353. # pyright, which is a long-standing issue, and is unique to pyright:
  354. # https://github.com/microsoft/pyright/issues/9663
  355. # https://github.com/microsoft/pyright/issues/10849
  356. # https://github.com/microsoft/pyright/issues/10899
  357. # https://github.com/microsoft/pyright/issues/11049
  358. def __call__(
  359. self: _MaskedUnaryOperation[Callable[Concatenate[Any, _Pss], _T]],
  360. /,
  361. a: ArrayLike,
  362. *args: _Pss.args,
  363. **kwargs: _Pss.kwargs,
  364. ) -> _T: ...
  365. # not generic at runtime
  366. class _MaskedBinaryOperation(_MaskedUFunc[_UFuncT_co], Generic[_UFuncT_co]):
  367. fillx: Final[_FillValue]
  368. filly: Final[_FillValue]
  369. def __init__(self, /, mbfunc: _UFuncT_co, fillx: _FillValue = 0, filly: _FillValue = 0) -> None: ...
  370. # NOTE: See the comment in `_MaskedUnaryOperation.__call__`
  371. def __call__(
  372. self: _MaskedBinaryOperation[Callable[Concatenate[Any, Any, _Pss], _T]],
  373. /,
  374. a: ArrayLike,
  375. b: ArrayLike,
  376. *args: _Pss.args,
  377. **kwargs: _Pss.kwargs,
  378. ) -> _T: ...
  379. # NOTE: We cannot meaningfully annotate the return (d)types of these methods until
  380. # the signatures of the corresponding `numpy.ufunc` methods are specified.
  381. def reduce(self, /, target: ArrayLike, axis: SupportsIndex = 0, dtype: DTypeLike | None = None) -> Incomplete: ...
  382. def outer(self, /, a: ArrayLike, b: ArrayLike) -> _MaskedArray[Incomplete]: ...
  383. def accumulate(self, /, target: ArrayLike, axis: SupportsIndex = 0) -> _MaskedArray[Incomplete]: ...
  384. # not generic at runtime
  385. class _DomainedBinaryOperation(_MaskedUFunc[_UFuncT_co], Generic[_UFuncT_co]):
  386. domain: Final[_DomainCallable]
  387. fillx: Final[_FillValue]
  388. filly: Final[_FillValue]
  389. def __init__(
  390. self,
  391. /,
  392. dbfunc: _UFuncT_co,
  393. domain: _DomainCallable,
  394. fillx: _FillValue = 0,
  395. filly: _FillValue = 0,
  396. ) -> None: ...
  397. # NOTE: See the comment in `_MaskedUnaryOperation.__call__`
  398. def __call__(
  399. self: _DomainedBinaryOperation[Callable[Concatenate[Any, Any, _Pss], _T]],
  400. /,
  401. a: ArrayLike,
  402. b: ArrayLike,
  403. *args: _Pss.args,
  404. **kwargs: _Pss.kwargs,
  405. ) -> _T: ...
  406. # not generic at runtime
  407. class _extrema_operation(_MaskedUFunc[_UFuncT_co], Generic[_UFuncT_co]):
  408. compare: Final[_MaskedBinaryOperation]
  409. fill_value_func: Final[_FillValueCallable]
  410. def __init__(
  411. self,
  412. /,
  413. ufunc: _UFuncT_co,
  414. compare: _MaskedBinaryOperation,
  415. fill_value: _FillValueCallable,
  416. ) -> None: ...
  417. # NOTE: This class is only used internally for `maximum` and `minimum`, so we are
  418. # able to annotate the `__call__` method specifically for those two functions.
  419. @overload
  420. def __call__(self, /, a: _ArrayLike[_ScalarT], b: _ArrayLike[_ScalarT]) -> _MaskedArray[_ScalarT]: ...
  421. @overload
  422. def __call__(self, /, a: ArrayLike, b: ArrayLike) -> _MaskedArray[Incomplete]: ...
  423. # NOTE: We cannot meaningfully annotate the return (d)types of these methods until
  424. # the signatures of the corresponding `numpy.ufunc` methods are specified.
  425. def reduce(self, /, target: ArrayLike, axis: SupportsIndex | _NoValueType = ...) -> Incomplete: ...
  426. def outer(self, /, a: ArrayLike, b: ArrayLike) -> _MaskedArray[Incomplete]: ...
  427. @final
  428. class _MaskedPrintOption:
  429. _display: str
  430. _enabled: bool | Literal[0, 1]
  431. def __init__(self, /, display: str) -> None: ...
  432. def display(self, /) -> str: ...
  433. def set_display(self, /, s: str) -> None: ...
  434. def enabled(self, /) -> bool: ...
  435. def enable(self, /, shrink: bool | Literal[0, 1] = 1) -> None: ...
  436. masked_print_option: Final[_MaskedPrintOption] = ...
  437. exp: _MaskedUnaryOperation = ...
  438. conjugate: _MaskedUnaryOperation = ...
  439. sin: _MaskedUnaryOperation = ...
  440. cos: _MaskedUnaryOperation = ...
  441. arctan: _MaskedUnaryOperation = ...
  442. arcsinh: _MaskedUnaryOperation = ...
  443. sinh: _MaskedUnaryOperation = ...
  444. cosh: _MaskedUnaryOperation = ...
  445. tanh: _MaskedUnaryOperation = ...
  446. abs: _MaskedUnaryOperation = ...
  447. absolute: _MaskedUnaryOperation = ...
  448. angle: _MaskedUnaryOperation = ...
  449. fabs: _MaskedUnaryOperation = ...
  450. negative: _MaskedUnaryOperation = ...
  451. floor: _MaskedUnaryOperation = ...
  452. ceil: _MaskedUnaryOperation = ...
  453. around: _MaskedUnaryOperation = ...
  454. logical_not: _MaskedUnaryOperation = ...
  455. sqrt: _MaskedUnaryOperation = ...
  456. log: _MaskedUnaryOperation = ...
  457. log2: _MaskedUnaryOperation = ...
  458. log10: _MaskedUnaryOperation = ...
  459. tan: _MaskedUnaryOperation = ...
  460. arcsin: _MaskedUnaryOperation = ...
  461. arccos: _MaskedUnaryOperation = ...
  462. arccosh: _MaskedUnaryOperation = ...
  463. arctanh: _MaskedUnaryOperation = ...
  464. add: _MaskedBinaryOperation = ...
  465. subtract: _MaskedBinaryOperation = ...
  466. multiply: _MaskedBinaryOperation = ...
  467. arctan2: _MaskedBinaryOperation = ...
  468. equal: _MaskedBinaryOperation = ...
  469. not_equal: _MaskedBinaryOperation = ...
  470. less_equal: _MaskedBinaryOperation = ...
  471. greater_equal: _MaskedBinaryOperation = ...
  472. less: _MaskedBinaryOperation = ...
  473. greater: _MaskedBinaryOperation = ...
  474. logical_and: _MaskedBinaryOperation = ...
  475. def alltrue(target: ArrayLike, axis: SupportsIndex | None = 0, dtype: _DTypeLikeBool | None = None) -> Incomplete: ...
  476. logical_or: _MaskedBinaryOperation = ...
  477. def sometrue(target: ArrayLike, axis: SupportsIndex | None = 0, dtype: _DTypeLikeBool | None = None) -> Incomplete: ...
  478. logical_xor: _MaskedBinaryOperation = ...
  479. bitwise_and: _MaskedBinaryOperation = ...
  480. bitwise_or: _MaskedBinaryOperation = ...
  481. bitwise_xor: _MaskedBinaryOperation = ...
  482. hypot: _MaskedBinaryOperation = ...
  483. divide: _DomainedBinaryOperation = ...
  484. true_divide: _DomainedBinaryOperation = ...
  485. floor_divide: _DomainedBinaryOperation = ...
  486. remainder: _DomainedBinaryOperation = ...
  487. fmod: _DomainedBinaryOperation = ...
  488. mod: _DomainedBinaryOperation = ...
  489. # `obj` can be anything (even `object()`), and is too "flexible", so we can't
  490. # meaningfully annotate it, or its return type.
  491. def default_fill_value(obj: object) -> Any: ...
  492. def minimum_fill_value(obj: object) -> Any: ...
  493. def maximum_fill_value(obj: object) -> Any: ...
  494. #
  495. @overload # returns `a.fill_value` if `a` is a `MaskedArray`
  496. def get_fill_value(a: _MaskedArray[_ScalarT]) -> _ScalarT: ...
  497. @overload # otherwise returns `default_fill_value(a)`
  498. def get_fill_value(a: object) -> Any: ...
  499. # this is a noop if `a` isn't a `MaskedArray`, so we only accept `MaskedArray` input
  500. def set_fill_value(a: MaskedArray, fill_value: _ScalarLike_co) -> None: ...
  501. # the return type depends on the *values* of `a` and `b` (which cannot be known
  502. # statically), which is why we need to return an awkward `_ | None`
  503. @overload
  504. def common_fill_value(a: _MaskedArray[_ScalarT], b: MaskedArray) -> _ScalarT | None: ...
  505. @overload
  506. def common_fill_value(a: object, b: object) -> Any: ...
  507. # keep in sync with `fix_invalid`, but return `ndarray` instead of `MaskedArray`
  508. @overload
  509. def filled(a: ndarray[_ShapeT, _DTypeT], fill_value: _ScalarLike_co | None = None) -> ndarray[_ShapeT, _DTypeT]: ...
  510. @overload
  511. def filled(a: _ArrayLike[_ScalarT], fill_value: _ScalarLike_co | None = None) -> NDArray[_ScalarT]: ...
  512. @overload
  513. def filled(a: ArrayLike, fill_value: _ScalarLike_co | None = None) -> NDArray[Incomplete]: ...
  514. # keep in sync with `filled`, but return `MaskedArray` instead of `ndarray`
  515. @overload
  516. def fix_invalid(
  517. a: np.ndarray[_ShapeT, _DTypeT],
  518. mask: _ArrayLikeBool_co = nomask,
  519. copy: bool = True,
  520. fill_value: _ScalarLike_co | None = None,
  521. ) -> MaskedArray[_ShapeT, _DTypeT]: ...
  522. @overload
  523. def fix_invalid(
  524. a: _ArrayLike[_ScalarT],
  525. mask: _ArrayLikeBool_co = nomask,
  526. copy: bool = True,
  527. fill_value: _ScalarLike_co | None = None,
  528. ) -> _MaskedArray[_ScalarT]: ...
  529. @overload
  530. def fix_invalid(
  531. a: ArrayLike,
  532. mask: _ArrayLikeBool_co = nomask,
  533. copy: bool = True,
  534. fill_value: _ScalarLike_co | None = None,
  535. ) -> _MaskedArray[Incomplete]: ...
  536. #
  537. def get_masked_subclass(*arrays: object) -> type[MaskedArray]: ...
  538. #
  539. @overload
  540. def getdata(a: np.ndarray[_ShapeT, _DTypeT], subok: bool = True) -> np.ndarray[_ShapeT, _DTypeT]: ...
  541. @overload
  542. def getdata(a: _ArrayLike[_ScalarT], subok: bool = True) -> NDArray[_ScalarT]: ...
  543. @overload
  544. def getdata(a: ArrayLike, subok: bool = True) -> NDArray[Incomplete]: ...
  545. get_data = getdata
  546. #
  547. @overload
  548. def getmask(a: _ScalarLike_co) -> _NoMaskType: ...
  549. @overload
  550. def getmask(a: MaskedArray[_ShapeT, Any]) -> _MaskArray[_ShapeT] | _NoMaskType: ...
  551. @overload
  552. def getmask(a: ArrayLike) -> _MaskArray | _NoMaskType: ...
  553. get_mask = getmask
  554. # like `getmask`, but instead of `nomask` returns `make_mask_none(arr, arr.dtype?)`
  555. @overload
  556. def getmaskarray(arr: _ScalarLike_co) -> _MaskArray[tuple[()]]: ...
  557. @overload
  558. def getmaskarray(arr: np.ndarray[_ShapeT, Any]) -> _MaskArray[_ShapeT]: ...
  559. # It's sufficient for `m` to have dtype with type: `type[np.bool_]`,
  560. # which isn't necessarily a ndarray. Please open an issue if this causes issues.
  561. def is_mask(m: object) -> TypeIs[NDArray[bool_]]: ...
  562. #
  563. @overload
  564. def make_mask_descr(ndtype: _VoidDTypeLike) -> np.dtype[np.void]: ...
  565. @overload
  566. def make_mask_descr(ndtype: _DTypeLike[np.generic] | str | type) -> np.dtype[np.bool_]: ...
  567. #
  568. @overload # m is nomask
  569. def make_mask(
  570. m: _NoMaskType,
  571. copy: bool = False,
  572. shrink: bool = True,
  573. dtype: _DTypeLikeBool = ...,
  574. ) -> _NoMaskType: ...
  575. @overload # m: ndarray, shrink=True (default), dtype: bool-like (default)
  576. def make_mask(
  577. m: np.ndarray[_ShapeT],
  578. copy: bool = False,
  579. shrink: Literal[True] = True,
  580. dtype: _DTypeLikeBool = ...,
  581. ) -> _MaskArray[_ShapeT] | _NoMaskType: ...
  582. @overload # m: ndarray, shrink=False (kwarg), dtype: bool-like (default)
  583. def make_mask(
  584. m: np.ndarray[_ShapeT],
  585. copy: bool = False,
  586. *,
  587. shrink: Literal[False],
  588. dtype: _DTypeLikeBool = ...,
  589. ) -> _MaskArray[_ShapeT]: ...
  590. @overload # m: ndarray, dtype: void-like
  591. def make_mask(
  592. m: np.ndarray[_ShapeT],
  593. copy: bool = False,
  594. shrink: bool = True,
  595. *,
  596. dtype: _DTypeLikeVoid,
  597. ) -> np.ndarray[_ShapeT, np.dtype[np.void]]: ...
  598. @overload # m: array-like, shrink=True (default), dtype: bool-like (default)
  599. def make_mask(
  600. m: ArrayLike,
  601. copy: bool = False,
  602. shrink: Literal[True] = True,
  603. dtype: _DTypeLikeBool = ...,
  604. ) -> _MaskArray | _NoMaskType: ...
  605. @overload # m: array-like, shrink=False (kwarg), dtype: bool-like (default)
  606. def make_mask(
  607. m: ArrayLike,
  608. copy: bool = False,
  609. *,
  610. shrink: Literal[False],
  611. dtype: _DTypeLikeBool = ...,
  612. ) -> _MaskArray: ...
  613. @overload # m: array-like, dtype: void-like
  614. def make_mask(
  615. m: ArrayLike,
  616. copy: bool = False,
  617. shrink: bool = True,
  618. *,
  619. dtype: _DTypeLikeVoid,
  620. ) -> NDArray[np.void]: ...
  621. @overload # fallback
  622. def make_mask(
  623. m: ArrayLike,
  624. copy: bool = False,
  625. shrink: bool = True,
  626. *,
  627. dtype: DTypeLike = ...,
  628. ) -> NDArray[Incomplete] | _NoMaskType: ...
  629. #
  630. @overload # known shape, dtype: unstructured (default)
  631. def make_mask_none(newshape: _ShapeT, dtype: np.dtype | type | str | None = None) -> _MaskArray[_ShapeT]: ...
  632. @overload # known shape, dtype: structured
  633. def make_mask_none(newshape: _ShapeT, dtype: _VoidDTypeLike) -> np.ndarray[_ShapeT, dtype[np.void]]: ...
  634. @overload # unknown shape, dtype: unstructured (default)
  635. def make_mask_none(newshape: _ShapeLike, dtype: np.dtype | type | str | None = None) -> _MaskArray: ...
  636. @overload # unknown shape, dtype: structured
  637. def make_mask_none(newshape: _ShapeLike, dtype: _VoidDTypeLike) -> NDArray[np.void]: ...
  638. #
  639. @overload # nomask, scalar-like, shrink=True (default)
  640. def mask_or(
  641. m1: _NoMaskType | Literal[False],
  642. m2: _ScalarLike_co,
  643. copy: bool = False,
  644. shrink: Literal[True] = True,
  645. ) -> _NoMaskType: ...
  646. @overload # nomask, scalar-like, shrink=False (kwarg)
  647. def mask_or(
  648. m1: _NoMaskType | Literal[False],
  649. m2: _ScalarLike_co,
  650. copy: bool = False,
  651. *,
  652. shrink: Literal[False],
  653. ) -> _MaskArray[tuple[()]]: ...
  654. @overload # scalar-like, nomask, shrink=True (default)
  655. def mask_or(
  656. m1: _ScalarLike_co,
  657. m2: _NoMaskType | Literal[False],
  658. copy: bool = False,
  659. shrink: Literal[True] = True,
  660. ) -> _NoMaskType: ...
  661. @overload # scalar-like, nomask, shrink=False (kwarg)
  662. def mask_or(
  663. m1: _ScalarLike_co,
  664. m2: _NoMaskType | Literal[False],
  665. copy: bool = False,
  666. *,
  667. shrink: Literal[False],
  668. ) -> _MaskArray[tuple[()]]: ...
  669. @overload # ndarray, ndarray | nomask, shrink=True (default)
  670. def mask_or(
  671. m1: np.ndarray[_ShapeT, np.dtype[_ScalarT]],
  672. m2: np.ndarray[_ShapeT, np.dtype[_ScalarT]] | _NoMaskType | Literal[False],
  673. copy: bool = False,
  674. shrink: Literal[True] = True,
  675. ) -> _MaskArray[_ShapeT] | _NoMaskType: ...
  676. @overload # ndarray, ndarray | nomask, shrink=False (kwarg)
  677. def mask_or(
  678. m1: np.ndarray[_ShapeT, np.dtype[_ScalarT]],
  679. m2: np.ndarray[_ShapeT, np.dtype[_ScalarT]] | _NoMaskType | Literal[False],
  680. copy: bool = False,
  681. *,
  682. shrink: Literal[False],
  683. ) -> _MaskArray[_ShapeT]: ...
  684. @overload # ndarray | nomask, ndarray, shrink=True (default)
  685. def mask_or(
  686. m1: np.ndarray[_ShapeT, np.dtype[_ScalarT]] | _NoMaskType | Literal[False],
  687. m2: np.ndarray[_ShapeT, np.dtype[_ScalarT]],
  688. copy: bool = False,
  689. shrink: Literal[True] = True,
  690. ) -> _MaskArray[_ShapeT] | _NoMaskType: ...
  691. @overload # ndarray | nomask, ndarray, shrink=False (kwarg)
  692. def mask_or(
  693. m1: np.ndarray[_ShapeT, np.dtype[_ScalarT]] | _NoMaskType | Literal[False],
  694. m2: np.ndarray[_ShapeT, np.dtype[_ScalarT]],
  695. copy: bool = False,
  696. *,
  697. shrink: Literal[False],
  698. ) -> _MaskArray[_ShapeT]: ...
  699. #
  700. @overload
  701. def flatten_mask(mask: np.ndarray[_ShapeT]) -> _MaskArray[_ShapeT]: ...
  702. @overload
  703. def flatten_mask(mask: ArrayLike) -> _MaskArray: ...
  704. # NOTE: we currently don't know the field types of `void` dtypes, so it's not possible
  705. # to know the output dtype of the returned array.
  706. @overload
  707. def flatten_structured_array(a: MaskedArray[_ShapeT, np.dtype[np.void]]) -> MaskedArray[_ShapeT]: ...
  708. @overload
  709. def flatten_structured_array(a: np.ndarray[_ShapeT, np.dtype[np.void]]) -> np.ndarray[_ShapeT]: ...
  710. @overload # for some reason this accepts unstructured array-likes, hence this fallback overload
  711. def flatten_structured_array(a: ArrayLike) -> np.ndarray: ...
  712. # keep in sync with other the `masked_*` functions
  713. @overload # known array with known shape and dtype
  714. def masked_invalid(a: ndarray[_ShapeT, _DTypeT], copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  715. @overload # array-like of known scalar-type
  716. def masked_invalid(a: _ArrayLike[_ScalarT], copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  717. @overload # unknown array-like
  718. def masked_invalid(a: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  719. # keep in sync with other the `masked_*` functions
  720. @overload # array-like of known scalar-type
  721. def masked_where(
  722. condition: _ArrayLikeBool_co, a: ndarray[_ShapeT, _DTypeT], copy: bool = True
  723. ) -> MaskedArray[_ShapeT, _DTypeT]: ...
  724. @overload # array-like of known scalar-type
  725. def masked_where(condition: _ArrayLikeBool_co, a: _ArrayLike[_ScalarT], copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  726. @overload # unknown array-like
  727. def masked_where(condition: _ArrayLikeBool_co, a: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  728. # keep in sync with other the `masked_*` functions
  729. @overload # known array with known shape and dtype
  730. def masked_greater(x: ndarray[_ShapeT, _DTypeT], value: ArrayLike, copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  731. @overload # array-like of known scalar-type
  732. def masked_greater(x: _ArrayLike[_ScalarT], value: ArrayLike, copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  733. @overload # unknown array-like
  734. def masked_greater(x: ArrayLike, value: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  735. # keep in sync with other the `masked_*` functions
  736. @overload # known array with known shape and dtype
  737. def masked_greater_equal(x: ndarray[_ShapeT, _DTypeT], value: ArrayLike, copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  738. @overload # array-like of known scalar-type
  739. def masked_greater_equal(x: _ArrayLike[_ScalarT], value: ArrayLike, copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  740. @overload # unknown array-like
  741. def masked_greater_equal(x: ArrayLike, value: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  742. # keep in sync with other the `masked_*` functions
  743. @overload # known array with known shape and dtype
  744. def masked_less(x: ndarray[_ShapeT, _DTypeT], value: ArrayLike, copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  745. @overload # array-like of known scalar-type
  746. def masked_less(x: _ArrayLike[_ScalarT], value: ArrayLike, copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  747. @overload # unknown array-like
  748. def masked_less(x: ArrayLike, value: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  749. # keep in sync with other the `masked_*` functions
  750. @overload # known array with known shape and dtype
  751. def masked_less_equal(x: ndarray[_ShapeT, _DTypeT], value: ArrayLike, copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  752. @overload # array-like of known scalar-type
  753. def masked_less_equal(x: _ArrayLike[_ScalarT], value: ArrayLike, copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  754. @overload # unknown array-like
  755. def masked_less_equal(x: ArrayLike, value: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  756. # keep in sync with other the `masked_*` functions
  757. @overload # known array with known shape and dtype
  758. def masked_not_equal(x: ndarray[_ShapeT, _DTypeT], value: ArrayLike, copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  759. @overload # array-like of known scalar-type
  760. def masked_not_equal(x: _ArrayLike[_ScalarT], value: ArrayLike, copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  761. @overload # unknown array-like
  762. def masked_not_equal(x: ArrayLike, value: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  763. # keep in sync with other the `masked_*` functions
  764. @overload # known array with known shape and dtype
  765. def masked_equal(x: ndarray[_ShapeT, _DTypeT], value: ArrayLike, copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  766. @overload # array-like of known scalar-type
  767. def masked_equal(x: _ArrayLike[_ScalarT], value: ArrayLike, copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  768. @overload # unknown array-like
  769. def masked_equal(x: ArrayLike, value: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  770. # keep in sync with other the `masked_*` functions
  771. @overload # known array with known shape and dtype
  772. def masked_inside(x: ndarray[_ShapeT, _DTypeT], v1: ArrayLike, v2: ArrayLike, copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  773. @overload # array-like of known scalar-type
  774. def masked_inside(x: _ArrayLike[_ScalarT], v1: ArrayLike, v2: ArrayLike, copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  775. @overload # unknown array-like
  776. def masked_inside(x: ArrayLike, v1: ArrayLike, v2: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  777. # keep in sync with other the `masked_*` functions
  778. @overload # known array with known shape and dtype
  779. def masked_outside(x: ndarray[_ShapeT, _DTypeT], v1: ArrayLike, v2: ArrayLike, copy: bool = True) -> MaskedArray[_ShapeT, _DTypeT]: ...
  780. @overload # array-like of known scalar-type
  781. def masked_outside(x: _ArrayLike[_ScalarT], v1: ArrayLike, v2: ArrayLike, copy: bool = True) -> _MaskedArray[_ScalarT]: ...
  782. @overload # unknown array-like
  783. def masked_outside(x: ArrayLike, v1: ArrayLike, v2: ArrayLike, copy: bool = True) -> _MaskedArray[Incomplete]: ...
  784. # only intended for object arrays, so we assume that's how it's always used in practice
  785. @overload
  786. def masked_object(
  787. x: np.ndarray[_ShapeT, np.dtype[np.object_]],
  788. value: object,
  789. copy: bool = True,
  790. shrink: bool = True,
  791. ) -> MaskedArray[_ShapeT, np.dtype[np.object_]]: ...
  792. @overload
  793. def masked_object(
  794. x: _ArrayLikeObject_co,
  795. value: object,
  796. copy: bool = True,
  797. shrink: bool = True,
  798. ) -> _MaskedArray[np.object_]: ...
  799. # keep roughly in sync with `filled`
  800. @overload
  801. def masked_values(
  802. x: np.ndarray[_ShapeT, _DTypeT],
  803. value: _ScalarLike_co,
  804. rtol: float = 1e-5,
  805. atol: float = 1e-8,
  806. copy: bool = True,
  807. shrink: bool = True
  808. ) -> MaskedArray[_ShapeT, _DTypeT]: ...
  809. @overload
  810. def masked_values(
  811. x: _ArrayLike[_ScalarT],
  812. value: _ScalarLike_co,
  813. rtol: float = 1e-5,
  814. atol: float = 1e-8,
  815. copy: bool = True,
  816. shrink: bool = True
  817. ) -> _MaskedArray[_ScalarT]: ...
  818. @overload
  819. def masked_values(
  820. x: ArrayLike,
  821. value: _ScalarLike_co,
  822. rtol: float = 1e-5,
  823. atol: float = 1e-8,
  824. copy: bool = True,
  825. shrink: bool = True
  826. ) -> _MaskedArray[Incomplete]: ...
  827. # TODO: Support non-boolean mask dtypes, such as `np.void`. This will require adding an
  828. # additional generic type parameter to (at least) `MaskedArray` and `MaskedIterator` to
  829. # hold the dtype of the mask.
  830. class MaskedIterator(Generic[_ShapeT_co, _DTypeT_co]):
  831. ma: MaskedArray[_ShapeT_co, _DTypeT_co] # readonly
  832. dataiter: np.flatiter[ndarray[_ShapeT_co, _DTypeT_co]] # readonly
  833. maskiter: Final[np.flatiter[NDArray[np.bool]]]
  834. def __init__(self, ma: MaskedArray[_ShapeT_co, _DTypeT_co]) -> None: ...
  835. def __iter__(self) -> Self: ...
  836. # Similar to `MaskedArray.__getitem__` but without the `void` case.
  837. @overload
  838. def __getitem__(self, indx: _ArrayInt_co | tuple[_ArrayInt_co, ...], /) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  839. @overload
  840. def __getitem__(self, indx: SupportsIndex | tuple[SupportsIndex, ...], /) -> Incomplete: ...
  841. @overload
  842. def __getitem__(self, indx: _ToIndices, /) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  843. # Similar to `ndarray.__setitem__` but without the `void` case.
  844. @overload # flexible | object_ | bool
  845. def __setitem__(
  846. self: MaskedIterator[Any, dtype[flexible | object_ | np.bool] | dtypes.StringDType],
  847. index: _ToIndices,
  848. value: object,
  849. /,
  850. ) -> None: ...
  851. @overload # integer
  852. def __setitem__(
  853. self: MaskedIterator[Any, dtype[integer]],
  854. index: _ToIndices,
  855. value: _ConvertibleToInt | _NestedSequence[_ConvertibleToInt] | _ArrayLikeInt_co,
  856. /,
  857. ) -> None: ...
  858. @overload # floating
  859. def __setitem__(
  860. self: MaskedIterator[Any, dtype[floating]],
  861. index: _ToIndices,
  862. value: _ConvertibleToFloat | _NestedSequence[_ConvertibleToFloat | None] | _ArrayLikeFloat_co | None,
  863. /,
  864. ) -> None: ...
  865. @overload # complexfloating
  866. def __setitem__(
  867. self: MaskedIterator[Any, dtype[complexfloating]],
  868. index: _ToIndices,
  869. value: _ConvertibleToComplex | _NestedSequence[_ConvertibleToComplex | None] | _ArrayLikeNumber_co | None,
  870. /,
  871. ) -> None: ...
  872. @overload # timedelta64
  873. def __setitem__(
  874. self: MaskedIterator[Any, dtype[timedelta64]],
  875. index: _ToIndices,
  876. value: _ConvertibleToTD64 | _NestedSequence[_ConvertibleToTD64],
  877. /,
  878. ) -> None: ...
  879. @overload # datetime64
  880. def __setitem__(
  881. self: MaskedIterator[Any, dtype[datetime64]],
  882. index: _ToIndices,
  883. value: _ConvertibleToDT64 | _NestedSequence[_ConvertibleToDT64],
  884. /,
  885. ) -> None: ...
  886. @overload # catch-all
  887. def __setitem__(self, index: _ToIndices, value: ArrayLike, /) -> None: ...
  888. # TODO: Returns `mvoid[(), _DTypeT_co]` for masks with `np.void` dtype.
  889. def __next__(self: MaskedIterator[Any, np.dtype[_ScalarT]]) -> _ScalarT: ...
  890. class MaskedArray(ndarray[_ShapeT_co, _DTypeT_co]):
  891. __array_priority__: Final[Literal[15]] = 15
  892. @overload
  893. def __new__(
  894. cls,
  895. data: _ArrayLike[_ScalarT],
  896. mask: _ArrayLikeBool_co = nomask,
  897. dtype: None = None,
  898. copy: bool = False,
  899. subok: bool = True,
  900. ndmin: int = 0,
  901. fill_value: _ScalarLike_co | None = None,
  902. keep_mask: bool = True,
  903. hard_mask: bool | None = None,
  904. shrink: bool = True,
  905. order: _OrderKACF | None = None,
  906. ) -> _MaskedArray[_ScalarT]: ...
  907. @overload
  908. def __new__(
  909. cls,
  910. data: object,
  911. mask: _ArrayLikeBool_co,
  912. dtype: _DTypeLike[_ScalarT],
  913. copy: bool = False,
  914. subok: bool = True,
  915. ndmin: int = 0,
  916. fill_value: _ScalarLike_co | None = None,
  917. keep_mask: bool = True,
  918. hard_mask: bool | None = None,
  919. shrink: bool = True,
  920. order: _OrderKACF | None = None,
  921. ) -> _MaskedArray[_ScalarT]: ...
  922. @overload
  923. def __new__(
  924. cls,
  925. data: object,
  926. mask: _ArrayLikeBool_co = nomask,
  927. *,
  928. dtype: _DTypeLike[_ScalarT],
  929. copy: bool = False,
  930. subok: bool = True,
  931. ndmin: int = 0,
  932. fill_value: _ScalarLike_co | None = None,
  933. keep_mask: bool = True,
  934. hard_mask: bool | None = None,
  935. shrink: bool = True,
  936. order: _OrderKACF | None = None,
  937. ) -> _MaskedArray[_ScalarT]: ...
  938. @overload
  939. def __new__(
  940. cls,
  941. data: object = None,
  942. mask: _ArrayLikeBool_co = nomask,
  943. dtype: DTypeLike | None = None,
  944. copy: bool = False,
  945. subok: bool = True,
  946. ndmin: int = 0,
  947. fill_value: _ScalarLike_co | None = None,
  948. keep_mask: bool = True,
  949. hard_mask: bool | None = None,
  950. shrink: bool = True,
  951. order: _OrderKACF | None = None,
  952. ) -> _MaskedArray[Any]: ...
  953. def __array_wrap__(
  954. self,
  955. obj: ndarray[_ShapeT, _DTypeT],
  956. context: tuple[ufunc, tuple[Any, ...], int] | None = None,
  957. return_scalar: bool = False,
  958. ) -> MaskedArray[_ShapeT, _DTypeT]: ...
  959. @overload # type: ignore[override] # ()
  960. def view(self, /, dtype: None = None, type: None = None, fill_value: _ScalarLike_co | None = None) -> Self: ...
  961. @overload # (dtype: DTypeT)
  962. def view(
  963. self,
  964. /,
  965. dtype: _DTypeT | _HasDType[_DTypeT],
  966. type: None = None,
  967. fill_value: _ScalarLike_co | None = None
  968. ) -> MaskedArray[_ShapeT_co, _DTypeT]: ...
  969. @overload # (dtype: dtype[ScalarT])
  970. def view(
  971. self,
  972. /,
  973. dtype: _DTypeLike[_ScalarT],
  974. type: None = None,
  975. fill_value: _ScalarLike_co | None = None
  976. ) -> MaskedArray[_ShapeT_co, dtype[_ScalarT]]: ...
  977. @overload # ([dtype: _, ]*, type: ArrayT)
  978. def view(
  979. self,
  980. /,
  981. dtype: DTypeLike | None = None,
  982. *,
  983. type: type[_ArrayT],
  984. fill_value: _ScalarLike_co | None = None
  985. ) -> _ArrayT: ...
  986. @overload # (dtype: _, type: ArrayT)
  987. def view(self, /, dtype: DTypeLike | None, type: type[_ArrayT], fill_value: _ScalarLike_co | None = None) -> _ArrayT: ...
  988. @overload # (dtype: ArrayT, /)
  989. def view(self, /, dtype: type[_ArrayT], type: None = None, fill_value: _ScalarLike_co | None = None) -> _ArrayT: ...
  990. @overload # (dtype: ?)
  991. def view(
  992. self,
  993. /,
  994. # `_VoidDTypeLike | str | None` is like `DTypeLike` but without `_DTypeLike[Any]` to avoid
  995. # overlaps with previous overloads.
  996. dtype: _VoidDTypeLike | str | None,
  997. type: None = None,
  998. fill_value: _ScalarLike_co | None = None
  999. ) -> MaskedArray[_ShapeT_co, dtype]: ...
  1000. # Keep in sync with `ndarray.__getitem__`
  1001. @overload
  1002. def __getitem__(self, key: _ArrayInt_co | tuple[_ArrayInt_co, ...], /) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  1003. @overload
  1004. def __getitem__(self, key: SupportsIndex | tuple[SupportsIndex, ...], /) -> Any: ...
  1005. @overload
  1006. def __getitem__(self, key: _ToIndices, /) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  1007. @overload
  1008. def __getitem__(self: _MaskedArray[void], indx: str, /) -> MaskedArray[_ShapeT_co, dtype]: ...
  1009. @overload
  1010. def __getitem__(self: _MaskedArray[void], indx: list[str], /) -> MaskedArray[_ShapeT_co, dtype[void]]: ...
  1011. @property
  1012. def shape(self) -> _ShapeT_co: ...
  1013. @shape.setter # type: ignore[override]
  1014. def shape(self: MaskedArray[_ShapeT, Any], shape: _ShapeT, /) -> None: ...
  1015. def __setmask__(self, mask: _ArrayLikeBool_co, copy: bool = False) -> None: ...
  1016. @property
  1017. def mask(self) -> np.ndarray[_ShapeT_co, dtype[MaskType]] | MaskType: ...
  1018. @mask.setter
  1019. def mask(self, value: _ArrayLikeBool_co, /) -> None: ...
  1020. @property
  1021. def recordmask(self) -> np.ndarray[_ShapeT_co, dtype[MaskType]] | MaskType: ...
  1022. @recordmask.setter
  1023. def recordmask(self, mask: Never, /) -> NoReturn: ...
  1024. def harden_mask(self) -> Self: ...
  1025. def soften_mask(self) -> Self: ...
  1026. @property
  1027. def hardmask(self) -> bool: ...
  1028. def unshare_mask(self) -> Self: ...
  1029. @property
  1030. def sharedmask(self) -> bool: ...
  1031. def shrink_mask(self) -> Self: ...
  1032. @property
  1033. def baseclass(self) -> type[ndarray]: ...
  1034. @property
  1035. def _data(self) -> ndarray[_ShapeT_co, _DTypeT_co]: ...
  1036. @property
  1037. def data(self) -> ndarray[_ShapeT_co, _DTypeT_co]: ... # type: ignore[override]
  1038. @property # type: ignore[override]
  1039. def flat(self) -> MaskedIterator[_ShapeT_co, _DTypeT_co]: ...
  1040. @flat.setter
  1041. def flat(self, value: ArrayLike, /) -> None: ...
  1042. @property
  1043. def fill_value(self: _MaskedArray[_ScalarT]) -> _ScalarT: ...
  1044. @fill_value.setter
  1045. def fill_value(self, value: _ScalarLike_co | None = None, /) -> None: ...
  1046. def get_fill_value(self: _MaskedArray[_ScalarT]) -> _ScalarT: ...
  1047. def set_fill_value(self, /, value: _ScalarLike_co | None = None) -> None: ...
  1048. def filled(self, /, fill_value: _ScalarLike_co | None = None) -> ndarray[_ShapeT_co, _DTypeT_co]: ...
  1049. def compressed(self) -> ndarray[tuple[int], _DTypeT_co]: ...
  1050. # keep roughly in sync with `ma.core.compress`, but swap the first two arguments
  1051. @overload # type: ignore[override]
  1052. def compress(
  1053. self,
  1054. condition: _ArrayLikeBool_co,
  1055. axis: _ShapeLike | None,
  1056. out: _ArrayT
  1057. ) -> _ArrayT: ...
  1058. @overload
  1059. def compress(
  1060. self,
  1061. condition: _ArrayLikeBool_co,
  1062. axis: _ShapeLike | None = None,
  1063. *,
  1064. out: _ArrayT
  1065. ) -> _ArrayT: ...
  1066. @overload
  1067. def compress(
  1068. self,
  1069. condition: _ArrayLikeBool_co,
  1070. axis: None = None,
  1071. out: None = None
  1072. ) -> MaskedArray[tuple[int], _DTypeT_co]: ...
  1073. @overload
  1074. def compress(
  1075. self,
  1076. condition: _ArrayLikeBool_co,
  1077. axis: _ShapeLike | None = None,
  1078. out: None = None
  1079. ) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  1080. # TODO: How to deal with the non-commutative nature of `==` and `!=`?
  1081. # xref numpy/numpy#17368
  1082. def __eq__(self, other: Incomplete, /) -> Incomplete: ...
  1083. def __ne__(self, other: Incomplete, /) -> Incomplete: ...
  1084. def __ge__(self, other: ArrayLike, /) -> _MaskedArray[bool_]: ... # type: ignore[override]
  1085. def __gt__(self, other: ArrayLike, /) -> _MaskedArray[bool_]: ... # type: ignore[override]
  1086. def __le__(self, other: ArrayLike, /) -> _MaskedArray[bool_]: ... # type: ignore[override]
  1087. def __lt__(self, other: ArrayLike, /) -> _MaskedArray[bool_]: ... # type: ignore[override]
  1088. # Keep in sync with `ndarray.__add__`
  1089. @overload # type: ignore[override]
  1090. def __add__(self: _MaskedArray[_NumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_NumberT]]: ...
  1091. @overload
  1092. def __add__(self: _MaskedArray[_NumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1093. @overload
  1094. def __add__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> _MaskedArray[np.bool]: ... # type: ignore[overload-overlap]
  1095. @overload
  1096. def __add__(self: _MaskedArray[np.bool], other: _ArrayLike[_NumberT], /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1097. @overload
  1098. def __add__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1099. @overload
  1100. def __add__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1101. @overload
  1102. def __add__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1103. @overload
  1104. def __add__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1105. @overload
  1106. def __add__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1107. @overload
  1108. def __add__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1109. @overload
  1110. def __add__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1111. @overload
  1112. def __add__(self: _MaskedArrayComplex_co, other: _ArrayLikeComplex_co, /) -> _MaskedArray[complexfloating]: ... # type: ignore[overload-overlap]
  1113. @overload
  1114. def __add__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ... # type: ignore[overload-overlap]
  1115. @overload
  1116. def __add__(self: _MaskedArrayTD64_co, other: _ArrayLikeTD64_co, /) -> _MaskedArray[timedelta64]: ...
  1117. @overload
  1118. def __add__(self: _MaskedArrayTD64_co, other: _ArrayLikeDT64_co, /) -> _MaskedArray[datetime64]: ...
  1119. @overload
  1120. def __add__(self: _MaskedArray[datetime64], other: _ArrayLikeTD64_co, /) -> _MaskedArray[datetime64]: ...
  1121. @overload
  1122. def __add__(self: _MaskedArray[bytes_], other: _ArrayLikeBytes_co, /) -> _MaskedArray[bytes_]: ...
  1123. @overload
  1124. def __add__(self: _MaskedArray[str_], other: _ArrayLikeStr_co, /) -> _MaskedArray[str_]: ...
  1125. @overload
  1126. def __add__(
  1127. self: MaskedArray[Any, dtypes.StringDType],
  1128. other: _ArrayLikeStr_co | _ArrayLikeString_co,
  1129. /,
  1130. ) -> MaskedArray[_AnyShape, dtypes.StringDType]: ...
  1131. @overload
  1132. def __add__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1133. @overload
  1134. def __add__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1135. # Keep in sync with `ndarray.__radd__`
  1136. @overload # type: ignore[override] # signature equivalent to __add__
  1137. def __radd__(self: _MaskedArray[_NumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_NumberT]]: ...
  1138. @overload
  1139. def __radd__(self: _MaskedArray[_NumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1140. @overload
  1141. def __radd__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> _MaskedArray[np.bool]: ... # type: ignore[overload-overlap]
  1142. @overload
  1143. def __radd__(self: _MaskedArray[np.bool], other: _ArrayLike[_NumberT], /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1144. @overload
  1145. def __radd__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1146. @overload
  1147. def __radd__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1148. @overload
  1149. def __radd__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1150. @overload
  1151. def __radd__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1152. @overload
  1153. def __radd__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1154. @overload
  1155. def __radd__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1156. @overload
  1157. def __radd__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1158. @overload
  1159. def __radd__(self: _MaskedArrayComplex_co, other: _ArrayLikeComplex_co, /) -> _MaskedArray[complexfloating]: ... # type: ignore[overload-overlap]
  1160. @overload
  1161. def __radd__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ... # type: ignore[overload-overlap]
  1162. @overload
  1163. def __radd__(self: _MaskedArrayTD64_co, other: _ArrayLikeTD64_co, /) -> _MaskedArray[timedelta64]: ...
  1164. @overload
  1165. def __radd__(self: _MaskedArrayTD64_co, other: _ArrayLikeDT64_co, /) -> _MaskedArray[datetime64]: ...
  1166. @overload
  1167. def __radd__(self: _MaskedArray[datetime64], other: _ArrayLikeTD64_co, /) -> _MaskedArray[datetime64]: ...
  1168. @overload
  1169. def __radd__(self: _MaskedArray[bytes_], other: _ArrayLikeBytes_co, /) -> _MaskedArray[bytes_]: ...
  1170. @overload
  1171. def __radd__(self: _MaskedArray[str_], other: _ArrayLikeStr_co, /) -> _MaskedArray[str_]: ...
  1172. @overload
  1173. def __radd__(
  1174. self: MaskedArray[Any, dtypes.StringDType],
  1175. other: _ArrayLikeStr_co | _ArrayLikeString_co,
  1176. /,
  1177. ) -> MaskedArray[_AnyShape, dtypes.StringDType]: ...
  1178. @overload
  1179. def __radd__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1180. @overload
  1181. def __radd__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1182. # Keep in sync with `ndarray.__sub__`
  1183. @overload # type: ignore[override]
  1184. def __sub__(self: _MaskedArray[_NumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_NumberT]]: ...
  1185. @overload
  1186. def __sub__(self: _MaskedArray[_NumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1187. @overload
  1188. def __sub__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> NoReturn: ...
  1189. @overload
  1190. def __sub__(self: _MaskedArray[np.bool], other: _ArrayLike[_NumberT], /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1191. @overload
  1192. def __sub__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1193. @overload
  1194. def __sub__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1195. @overload
  1196. def __sub__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1197. @overload
  1198. def __sub__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1199. @overload
  1200. def __sub__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1201. @overload
  1202. def __sub__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1203. @overload
  1204. def __sub__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1205. @overload
  1206. def __sub__(self: _MaskedArrayComplex_co, other: _ArrayLikeComplex_co, /) -> _MaskedArray[complexfloating]: ... # type: ignore[overload-overlap]
  1207. @overload
  1208. def __sub__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ... # type: ignore[overload-overlap]
  1209. @overload
  1210. def __sub__(self: _MaskedArrayTD64_co, other: _ArrayLikeTD64_co, /) -> _MaskedArray[timedelta64]: ...
  1211. @overload
  1212. def __sub__(self: _MaskedArray[datetime64], other: _ArrayLikeTD64_co, /) -> _MaskedArray[datetime64]: ...
  1213. @overload
  1214. def __sub__(self: _MaskedArray[datetime64], other: _ArrayLikeDT64_co, /) -> _MaskedArray[timedelta64]: ...
  1215. @overload
  1216. def __sub__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1217. @overload
  1218. def __sub__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1219. # Keep in sync with `ndarray.__rsub__`
  1220. @overload # type: ignore[override]
  1221. def __rsub__(self: _MaskedArray[_NumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_NumberT]]: ...
  1222. @overload
  1223. def __rsub__(self: _MaskedArray[_NumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1224. @overload
  1225. def __rsub__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> NoReturn: ...
  1226. @overload
  1227. def __rsub__(self: _MaskedArray[np.bool], other: _ArrayLike[_NumberT], /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1228. @overload
  1229. def __rsub__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1230. @overload
  1231. def __rsub__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1232. @overload
  1233. def __rsub__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1234. @overload
  1235. def __rsub__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1236. @overload
  1237. def __rsub__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1238. @overload
  1239. def __rsub__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1240. @overload
  1241. def __rsub__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1242. @overload
  1243. def __rsub__(self: _MaskedArrayComplex_co, other: _ArrayLikeComplex_co, /) -> _MaskedArray[complexfloating]: ... # type: ignore[overload-overlap]
  1244. @overload
  1245. def __rsub__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ... # type: ignore[overload-overlap]
  1246. @overload
  1247. def __rsub__(self: _MaskedArrayTD64_co, other: _ArrayLikeTD64_co, /) -> _MaskedArray[timedelta64]: ...
  1248. @overload
  1249. def __rsub__(self: _MaskedArrayTD64_co, other: _ArrayLikeDT64_co, /) -> _MaskedArray[datetime64]: ...
  1250. @overload
  1251. def __rsub__(self: _MaskedArray[datetime64], other: _ArrayLikeDT64_co, /) -> _MaskedArray[timedelta64]: ...
  1252. @overload
  1253. def __rsub__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1254. @overload
  1255. def __rsub__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1256. # Keep in sync with `ndarray.__mul__`
  1257. @overload # type: ignore[override]
  1258. def __mul__(self: _MaskedArray[_NumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_NumberT]]: ...
  1259. @overload
  1260. def __mul__(self: _MaskedArray[_NumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1261. @overload
  1262. def __mul__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> _MaskedArray[np.bool]: ... # type: ignore[overload-overlap]
  1263. @overload
  1264. def __mul__(self: _MaskedArray[np.bool], other: _ArrayLike[_NumberT], /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1265. @overload
  1266. def __mul__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1267. @overload
  1268. def __mul__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1269. @overload
  1270. def __mul__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1271. @overload
  1272. def __mul__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1273. @overload
  1274. def __mul__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1275. @overload
  1276. def __mul__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1277. @overload
  1278. def __mul__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1279. @overload
  1280. def __mul__(self: _MaskedArrayComplex_co, other: _ArrayLikeComplex_co, /) -> _MaskedArray[complexfloating]: ... # type: ignore[overload-overlap]
  1281. @overload
  1282. def __mul__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ...
  1283. @overload
  1284. def __mul__(self: _MaskedArray[timedelta64], other: _ArrayLikeFloat_co, /) -> _MaskedArray[timedelta64]: ...
  1285. @overload
  1286. def __mul__(self: _MaskedArrayFloat_co, other: _ArrayLike[timedelta64], /) -> _MaskedArray[timedelta64]: ...
  1287. @overload
  1288. def __mul__(
  1289. self: MaskedArray[Any, dtype[character] | dtypes.StringDType],
  1290. other: _ArrayLikeInt,
  1291. /,
  1292. ) -> MaskedArray[tuple[Any, ...], _DTypeT_co]: ...
  1293. @overload
  1294. def __mul__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1295. @overload
  1296. def __mul__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1297. # Keep in sync with `ndarray.__rmul__`
  1298. @overload # type: ignore[override] # signature equivalent to __mul__
  1299. def __rmul__(self: _MaskedArray[_NumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_NumberT]]: ...
  1300. @overload
  1301. def __rmul__(self: _MaskedArray[_NumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1302. @overload
  1303. def __rmul__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> _MaskedArray[np.bool]: ... # type: ignore[overload-overlap]
  1304. @overload
  1305. def __rmul__(self: _MaskedArray[np.bool], other: _ArrayLike[_NumberT], /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1306. @overload
  1307. def __rmul__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1308. @overload
  1309. def __rmul__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1310. @overload
  1311. def __rmul__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1312. @overload
  1313. def __rmul__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1314. @overload
  1315. def __rmul__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1316. @overload
  1317. def __rmul__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1318. @overload
  1319. def __rmul__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1320. @overload
  1321. def __rmul__(self: _MaskedArrayComplex_co, other: _ArrayLikeComplex_co, /) -> _MaskedArray[complexfloating]: ... # type: ignore[overload-overlap]
  1322. @overload
  1323. def __rmul__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ...
  1324. @overload
  1325. def __rmul__(self: _MaskedArray[timedelta64], other: _ArrayLikeFloat_co, /) -> _MaskedArray[timedelta64]: ...
  1326. @overload
  1327. def __rmul__(self: _MaskedArrayFloat_co, other: _ArrayLike[timedelta64], /) -> _MaskedArray[timedelta64]: ...
  1328. @overload
  1329. def __rmul__(
  1330. self: MaskedArray[Any, dtype[character] | dtypes.StringDType],
  1331. other: _ArrayLikeInt,
  1332. /,
  1333. ) -> MaskedArray[tuple[Any, ...], _DTypeT_co]: ...
  1334. @overload
  1335. def __rmul__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1336. @overload
  1337. def __rmul__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1338. # Keep in sync with `ndarray.__truediv__`
  1339. @overload # type: ignore[override]
  1340. def __truediv__(self: _MaskedArrayInt_co | _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1341. @overload
  1342. def __truediv__(self: _MaskedArrayFloat64_co, other: _ArrayLikeInt_co | _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1343. @overload
  1344. def __truediv__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1345. @overload
  1346. def __truediv__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1347. @overload
  1348. def __truediv__(self: _MaskedArray[floating], other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ...
  1349. @overload
  1350. def __truediv__(self: _MaskedArrayFloat_co, other: _ArrayLike[floating], /) -> _MaskedArray[floating]: ...
  1351. @overload
  1352. def __truediv__(self: _MaskedArray[complexfloating], other: _ArrayLikeNumber_co, /) -> _MaskedArray[complexfloating]: ...
  1353. @overload
  1354. def __truediv__(self: _MaskedArrayNumber_co, other: _ArrayLike[complexfloating], /) -> _MaskedArray[complexfloating]: ...
  1355. @overload
  1356. def __truediv__(self: _MaskedArray[inexact], other: _ArrayLikeNumber_co, /) -> _MaskedArray[inexact]: ...
  1357. @overload
  1358. def __truediv__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ...
  1359. @overload
  1360. def __truediv__(self: _MaskedArray[timedelta64], other: _ArrayLike[timedelta64], /) -> _MaskedArray[float64]: ...
  1361. @overload
  1362. def __truediv__(self: _MaskedArray[timedelta64], other: _ArrayLikeBool_co, /) -> NoReturn: ...
  1363. @overload
  1364. def __truediv__(self: _MaskedArray[timedelta64], other: _ArrayLikeFloat_co, /) -> _MaskedArray[timedelta64]: ...
  1365. @overload
  1366. def __truediv__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1367. @overload
  1368. def __truediv__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1369. # Keep in sync with `ndarray.__rtruediv__`
  1370. @overload # type: ignore[override]
  1371. def __rtruediv__(self: _MaskedArrayInt_co | _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1372. @overload
  1373. def __rtruediv__(self: _MaskedArrayFloat64_co, other: _ArrayLikeInt_co | _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1374. @overload
  1375. def __rtruediv__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1376. @overload
  1377. def __rtruediv__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1378. @overload
  1379. def __rtruediv__(self: _MaskedArray[floating], other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ...
  1380. @overload
  1381. def __rtruediv__(self: _MaskedArrayFloat_co, other: _ArrayLike[floating], /) -> _MaskedArray[floating]: ...
  1382. @overload
  1383. def __rtruediv__(self: _MaskedArray[complexfloating], other: _ArrayLikeNumber_co, /) -> _MaskedArray[complexfloating]: ...
  1384. @overload
  1385. def __rtruediv__(self: _MaskedArrayNumber_co, other: _ArrayLike[complexfloating], /) -> _MaskedArray[complexfloating]: ...
  1386. @overload
  1387. def __rtruediv__(self: _MaskedArray[inexact], other: _ArrayLikeNumber_co, /) -> _MaskedArray[inexact]: ...
  1388. @overload
  1389. def __rtruediv__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ...
  1390. @overload
  1391. def __rtruediv__(self: _MaskedArray[timedelta64], other: _ArrayLike[timedelta64], /) -> _MaskedArray[float64]: ...
  1392. @overload
  1393. def __rtruediv__(self: _MaskedArray[integer | floating], other: _ArrayLike[timedelta64], /) -> _MaskedArray[timedelta64]: ...
  1394. @overload
  1395. def __rtruediv__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1396. @overload
  1397. def __rtruediv__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1398. # Keep in sync with `ndarray.__floordiv__`
  1399. @overload # type: ignore[override]
  1400. def __floordiv__(self: _MaskedArray[_RealNumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_RealNumberT]]: ...
  1401. @overload
  1402. def __floordiv__(self: _MaskedArray[_RealNumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  1403. @overload
  1404. def __floordiv__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> _MaskedArray[int8]: ... # type: ignore[overload-overlap]
  1405. @overload
  1406. def __floordiv__(self: _MaskedArray[np.bool], other: _ArrayLike[_RealNumberT], /) -> _MaskedArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  1407. @overload
  1408. def __floordiv__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1409. @overload
  1410. def __floordiv__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1411. @overload
  1412. def __floordiv__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1413. @overload
  1414. def __floordiv__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1415. @overload
  1416. def __floordiv__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ...
  1417. @overload
  1418. def __floordiv__(self: _MaskedArray[timedelta64], other: _ArrayLike[timedelta64], /) -> _MaskedArray[int64]: ...
  1419. @overload
  1420. def __floordiv__(self: _MaskedArray[timedelta64], other: _ArrayLikeBool_co, /) -> NoReturn: ...
  1421. @overload
  1422. def __floordiv__(self: _MaskedArray[timedelta64], other: _ArrayLikeFloat_co, /) -> _MaskedArray[timedelta64]: ...
  1423. @overload
  1424. def __floordiv__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1425. @overload
  1426. def __floordiv__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1427. # Keep in sync with `ndarray.__rfloordiv__`
  1428. @overload # type: ignore[override]
  1429. def __rfloordiv__(self: _MaskedArray[_RealNumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_RealNumberT]]: ...
  1430. @overload
  1431. def __rfloordiv__(self: _MaskedArray[_RealNumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  1432. @overload
  1433. def __rfloordiv__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> _MaskedArray[int8]: ... # type: ignore[overload-overlap]
  1434. @overload
  1435. def __rfloordiv__(self: _MaskedArray[np.bool], other: _ArrayLike[_RealNumberT], /) -> _MaskedArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  1436. @overload
  1437. def __rfloordiv__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1438. @overload
  1439. def __rfloordiv__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1440. @overload
  1441. def __rfloordiv__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1442. @overload
  1443. def __rfloordiv__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1444. @overload
  1445. def __rfloordiv__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1446. @overload
  1447. def __rfloordiv__(self: _MaskedArray[timedelta64], other: _ArrayLike[timedelta64], /) -> _MaskedArray[int64]: ...
  1448. @overload
  1449. def __rfloordiv__(self: _MaskedArray[floating | integer], other: _ArrayLike[timedelta64], /) -> _MaskedArray[timedelta64]: ...
  1450. @overload
  1451. def __rfloordiv__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1452. @overload
  1453. def __rfloordiv__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1454. # Keep in sync with `ndarray.__pow__` (minus the `mod` parameter)
  1455. @overload # type: ignore[override]
  1456. def __pow__(self: _MaskedArray[_NumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_NumberT]]: ...
  1457. @overload
  1458. def __pow__(self: _MaskedArray[_NumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1459. @overload
  1460. def __pow__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> _MaskedArray[int8]: ... # type: ignore[overload-overlap]
  1461. @overload
  1462. def __pow__(self: _MaskedArray[np.bool], other: _ArrayLike[_NumberT], /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1463. @overload
  1464. def __pow__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1465. @overload
  1466. def __pow__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1467. @overload
  1468. def __pow__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1469. @overload
  1470. def __pow__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1471. @overload
  1472. def __pow__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1473. @overload
  1474. def __pow__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1475. @overload
  1476. def __pow__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1477. @overload
  1478. def __pow__(self: _MaskedArrayComplex_co, other: _ArrayLikeComplex_co, /) -> _MaskedArray[complexfloating]: ...
  1479. @overload
  1480. def __pow__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ...
  1481. @overload
  1482. def __pow__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1483. @overload
  1484. def __pow__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1485. # Keep in sync with `ndarray.__rpow__` (minus the `mod` parameter)
  1486. @overload # type: ignore[override]
  1487. def __rpow__(self: _MaskedArray[_NumberT], other: int | np.bool, /) -> MaskedArray[_ShapeT_co, dtype[_NumberT]]: ...
  1488. @overload
  1489. def __rpow__(self: _MaskedArray[_NumberT], other: _ArrayLikeBool_co, /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1490. @overload
  1491. def __rpow__(self: _MaskedArray[np.bool], other: _ArrayLikeBool_co, /) -> _MaskedArray[int8]: ... # type: ignore[overload-overlap]
  1492. @overload
  1493. def __rpow__(self: _MaskedArray[np.bool], other: _ArrayLike[_NumberT], /) -> _MaskedArray[_NumberT]: ... # type: ignore[overload-overlap]
  1494. @overload
  1495. def __rpow__(self: _MaskedArray[float64], other: _ArrayLikeFloat64_co, /) -> _MaskedArray[float64]: ...
  1496. @overload
  1497. def __rpow__(self: _MaskedArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> _MaskedArray[float64]: ...
  1498. @overload
  1499. def __rpow__(self: _MaskedArray[complex128], other: _ArrayLikeComplex128_co, /) -> _MaskedArray[complex128]: ...
  1500. @overload
  1501. def __rpow__(self: _MaskedArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> _MaskedArray[complex128]: ...
  1502. @overload
  1503. def __rpow__(self: _MaskedArrayUInt_co, other: _ArrayLikeUInt_co, /) -> _MaskedArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  1504. @overload
  1505. def __rpow__(self: _MaskedArrayInt_co, other: _ArrayLikeInt_co, /) -> _MaskedArray[signedinteger]: ... # type: ignore[overload-overlap]
  1506. @overload
  1507. def __rpow__(self: _MaskedArrayFloat_co, other: _ArrayLikeFloat_co, /) -> _MaskedArray[floating]: ... # type: ignore[overload-overlap]
  1508. @overload
  1509. def __rpow__(self: _MaskedArrayComplex_co, other: _ArrayLikeComplex_co, /) -> _MaskedArray[complexfloating]: ...
  1510. @overload
  1511. def __rpow__(self: _MaskedArray[number], other: _ArrayLikeNumber_co, /) -> _MaskedArray[number]: ...
  1512. @overload
  1513. def __rpow__(self: _MaskedArray[object_], other: Any, /) -> Any: ...
  1514. @overload
  1515. def __rpow__(self: _MaskedArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  1516. #
  1517. @property # type: ignore[misc]
  1518. def imag(self: _HasDTypeWithRealAndImag[object, _ScalarT], /) -> MaskedArray[_ShapeT_co, dtype[_ScalarT]]: ... # type: ignore[override]
  1519. def get_imag(self: _HasDTypeWithRealAndImag[object, _ScalarT], /) -> MaskedArray[_ShapeT_co, dtype[_ScalarT]]: ...
  1520. #
  1521. @property # type: ignore[misc]
  1522. def real(self: _HasDTypeWithRealAndImag[_ScalarT, object], /) -> MaskedArray[_ShapeT_co, dtype[_ScalarT]]: ... # type: ignore[override]
  1523. def get_real(self: _HasDTypeWithRealAndImag[_ScalarT, object], /) -> MaskedArray[_ShapeT_co, dtype[_ScalarT]]: ...
  1524. # keep in sync with `np.ma.count`
  1525. @overload
  1526. def count(self, axis: None = None, keepdims: Literal[False] | _NoValueType = ...) -> int: ...
  1527. @overload
  1528. def count(self, axis: _ShapeLike, keepdims: bool | _NoValueType = ...) -> NDArray[int_]: ...
  1529. @overload
  1530. def count(self, axis: _ShapeLike | None = None, *, keepdims: Literal[True]) -> NDArray[int_]: ...
  1531. @overload
  1532. def count(self, axis: _ShapeLike | None, keepdims: Literal[True]) -> NDArray[int_]: ...
  1533. # Keep in sync with `ndarray.reshape`
  1534. # NOTE: reshape also accepts negative integers, so we can't use integer literals
  1535. @overload # (None)
  1536. def reshape(self, shape: None, /, *, order: _OrderACF = "C", copy: bool | None = None) -> Self: ...
  1537. @overload # (empty_sequence)
  1538. def reshape( # type: ignore[overload-overlap] # mypy false positive
  1539. self,
  1540. shape: Sequence[Never],
  1541. /,
  1542. *,
  1543. order: _OrderACF = "C",
  1544. copy: bool | None = None,
  1545. ) -> MaskedArray[tuple[()], _DTypeT_co]: ...
  1546. @overload # (() | (int) | (int, int) | ....) # up to 8-d
  1547. def reshape(
  1548. self,
  1549. shape: _AnyShapeT,
  1550. /,
  1551. *,
  1552. order: _OrderACF = "C",
  1553. copy: bool | None = None,
  1554. ) -> MaskedArray[_AnyShapeT, _DTypeT_co]: ...
  1555. @overload # (index)
  1556. def reshape(
  1557. self,
  1558. size1: SupportsIndex,
  1559. /,
  1560. *,
  1561. order: _OrderACF = "C",
  1562. copy: bool | None = None,
  1563. ) -> MaskedArray[tuple[int], _DTypeT_co]: ...
  1564. @overload # (index, index)
  1565. def reshape(
  1566. self,
  1567. size1: SupportsIndex,
  1568. size2: SupportsIndex,
  1569. /,
  1570. *,
  1571. order: _OrderACF = "C",
  1572. copy: bool | None = None,
  1573. ) -> MaskedArray[tuple[int, int], _DTypeT_co]: ...
  1574. @overload # (index, index, index)
  1575. def reshape(
  1576. self,
  1577. size1: SupportsIndex,
  1578. size2: SupportsIndex,
  1579. size3: SupportsIndex,
  1580. /,
  1581. *,
  1582. order: _OrderACF = "C",
  1583. copy: bool | None = None,
  1584. ) -> MaskedArray[tuple[int, int, int], _DTypeT_co]: ...
  1585. @overload # (index, index, index, index)
  1586. def reshape(
  1587. self,
  1588. size1: SupportsIndex,
  1589. size2: SupportsIndex,
  1590. size3: SupportsIndex,
  1591. size4: SupportsIndex,
  1592. /,
  1593. *,
  1594. order: _OrderACF = "C",
  1595. copy: bool | None = None,
  1596. ) -> MaskedArray[tuple[int, int, int, int], _DTypeT_co]: ...
  1597. @overload # (int, *(index, ...))
  1598. def reshape(
  1599. self,
  1600. size0: SupportsIndex,
  1601. /,
  1602. *shape: SupportsIndex,
  1603. order: _OrderACF = "C",
  1604. copy: bool | None = None,
  1605. ) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  1606. @overload # (sequence[index])
  1607. def reshape(
  1608. self,
  1609. shape: Sequence[SupportsIndex],
  1610. /,
  1611. *,
  1612. order: _OrderACF = "C",
  1613. copy: bool | None = None,
  1614. ) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  1615. def resize(self, newshape: Never, refcheck: bool = True, order: bool = False) -> NoReturn: ... # type: ignore[override]
  1616. def put(self, indices: _ArrayLikeInt_co, values: ArrayLike, mode: _ModeKind = "raise") -> None: ...
  1617. def ids(self) -> tuple[int, int]: ...
  1618. def iscontiguous(self) -> bool: ...
  1619. # Keep in sync with `ma.core.all`
  1620. @overload # type: ignore[override]
  1621. def all(
  1622. self,
  1623. axis: None = None,
  1624. out: None = None,
  1625. keepdims: Literal[False] | _NoValueType = ...,
  1626. ) -> bool_: ...
  1627. @overload
  1628. def all(
  1629. self,
  1630. axis: _ShapeLike | None = None,
  1631. out: None = None,
  1632. *,
  1633. keepdims: Literal[True],
  1634. ) -> _MaskedArray[bool_]: ...
  1635. @overload
  1636. def all(
  1637. self,
  1638. axis: _ShapeLike | None,
  1639. out: None,
  1640. keepdims: Literal[True],
  1641. ) -> _MaskedArray[bool_]: ...
  1642. @overload
  1643. def all(
  1644. self,
  1645. axis: _ShapeLike | None = None,
  1646. out: None = None,
  1647. keepdims: bool | _NoValueType = ...,
  1648. ) -> bool_ | _MaskedArray[bool_]: ...
  1649. @overload
  1650. def all(
  1651. self,
  1652. axis: _ShapeLike | None = None,
  1653. *,
  1654. out: _ArrayT,
  1655. keepdims: bool | _NoValueType = ...,
  1656. ) -> _ArrayT: ...
  1657. @overload
  1658. def all(
  1659. self,
  1660. axis: _ShapeLike | None,
  1661. out: _ArrayT,
  1662. keepdims: bool | _NoValueType = ...,
  1663. ) -> _ArrayT: ...
  1664. # Keep in sync with `ma.core.any`
  1665. @overload # type: ignore[override]
  1666. def any(
  1667. self,
  1668. axis: None = None,
  1669. out: None = None,
  1670. keepdims: Literal[False] | _NoValueType = ...,
  1671. ) -> bool_: ...
  1672. @overload
  1673. def any(
  1674. self,
  1675. axis: _ShapeLike | None = None,
  1676. out: None = None,
  1677. *,
  1678. keepdims: Literal[True],
  1679. ) -> _MaskedArray[bool_]: ...
  1680. @overload
  1681. def any(
  1682. self,
  1683. axis: _ShapeLike | None,
  1684. out: None,
  1685. keepdims: Literal[True],
  1686. ) -> _MaskedArray[bool_]: ...
  1687. @overload
  1688. def any(
  1689. self,
  1690. axis: _ShapeLike | None = None,
  1691. out: None = None,
  1692. keepdims: bool | _NoValueType = ...,
  1693. ) -> bool_ | _MaskedArray[bool_]: ...
  1694. @overload
  1695. def any(
  1696. self,
  1697. axis: _ShapeLike | None = None,
  1698. *,
  1699. out: _ArrayT,
  1700. keepdims: bool | _NoValueType = ...,
  1701. ) -> _ArrayT: ...
  1702. @overload
  1703. def any(
  1704. self,
  1705. axis: _ShapeLike | None,
  1706. out: _ArrayT,
  1707. keepdims: bool | _NoValueType = ...,
  1708. ) -> _ArrayT: ...
  1709. # Keep in sync with `ndarray.trace` and `ma.core.trace`
  1710. @overload
  1711. def trace(
  1712. self, # >= 2D MaskedArray
  1713. offset: SupportsIndex = 0,
  1714. axis1: SupportsIndex = 0,
  1715. axis2: SupportsIndex = 1,
  1716. dtype: DTypeLike | None = None,
  1717. out: None = None,
  1718. ) -> Any: ...
  1719. @overload
  1720. def trace(
  1721. self, # >= 2D MaskedArray
  1722. offset: SupportsIndex = 0,
  1723. axis1: SupportsIndex = 0,
  1724. axis2: SupportsIndex = 1,
  1725. dtype: DTypeLike | None = None,
  1726. *,
  1727. out: _ArrayT,
  1728. ) -> _ArrayT: ...
  1729. @overload
  1730. def trace(
  1731. self, # >= 2D MaskedArray
  1732. offset: SupportsIndex,
  1733. axis1: SupportsIndex,
  1734. axis2: SupportsIndex,
  1735. dtype: DTypeLike | None,
  1736. out: _ArrayT,
  1737. ) -> _ArrayT: ...
  1738. # This differs from `ndarray.dot`, in that 1D dot 1D returns a 0D array.
  1739. @overload
  1740. def dot(self, b: ArrayLike, out: None = None, strict: bool = False) -> _MaskedArray[Any]: ...
  1741. @overload
  1742. def dot(self, b: ArrayLike, out: _ArrayT, strict: bool = False) -> _ArrayT: ...
  1743. # Keep in sync with `ma.core.sum`
  1744. @overload # type: ignore[override]
  1745. def sum(
  1746. self,
  1747. /,
  1748. axis: _ShapeLike | None = None,
  1749. dtype: DTypeLike | None = None,
  1750. out: None = None,
  1751. keepdims: bool | _NoValueType = ...,
  1752. ) -> Any: ...
  1753. @overload
  1754. def sum(
  1755. self,
  1756. /,
  1757. axis: _ShapeLike | None,
  1758. dtype: DTypeLike | None,
  1759. out: _ArrayT,
  1760. keepdims: bool | _NoValueType = ...,
  1761. ) -> _ArrayT: ...
  1762. @overload
  1763. def sum(
  1764. self,
  1765. /,
  1766. axis: _ShapeLike | None = None,
  1767. dtype: DTypeLike | None = None,
  1768. *,
  1769. out: _ArrayT,
  1770. keepdims: bool | _NoValueType = ...,
  1771. ) -> _ArrayT: ...
  1772. # Keep in sync with `ndarray.cumsum` and `ma.core.cumsum`
  1773. @overload # out: None (default)
  1774. def cumsum(self, /, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, out: None = None) -> _MaskedArray[Any]: ...
  1775. @overload # out: ndarray
  1776. def cumsum(self, /, axis: SupportsIndex | None, dtype: DTypeLike | None, out: _ArrayT) -> _ArrayT: ...
  1777. @overload
  1778. def cumsum(self, /, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, *, out: _ArrayT) -> _ArrayT: ...
  1779. # Keep in sync with `ma.core.prod`
  1780. @overload # type: ignore[override]
  1781. def prod(
  1782. self,
  1783. /,
  1784. axis: _ShapeLike | None = None,
  1785. dtype: DTypeLike | None = None,
  1786. out: None = None,
  1787. keepdims: bool | _NoValueType = ...,
  1788. ) -> Any: ...
  1789. @overload
  1790. def prod(
  1791. self,
  1792. /,
  1793. axis: _ShapeLike | None,
  1794. dtype: DTypeLike | None,
  1795. out: _ArrayT,
  1796. keepdims: bool | _NoValueType = ...,
  1797. ) -> _ArrayT: ...
  1798. @overload
  1799. def prod(
  1800. self,
  1801. /,
  1802. axis: _ShapeLike | None = None,
  1803. dtype: DTypeLike | None = None,
  1804. *,
  1805. out: _ArrayT,
  1806. keepdims: bool | _NoValueType = ...,
  1807. ) -> _ArrayT: ...
  1808. product = prod
  1809. # Keep in sync with `ndarray.cumprod` and `ma.core.cumprod`
  1810. @overload # out: None (default)
  1811. def cumprod(self, /, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, out: None = None) -> _MaskedArray[Any]: ...
  1812. @overload # out: ndarray
  1813. def cumprod(self, /, axis: SupportsIndex | None, dtype: DTypeLike | None, out: _ArrayT) -> _ArrayT: ...
  1814. @overload
  1815. def cumprod(self, /, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, *, out: _ArrayT) -> _ArrayT: ...
  1816. # Keep in sync with `ma.core.mean`
  1817. @overload # type: ignore[override]
  1818. def mean(
  1819. self,
  1820. axis: _ShapeLike | None = None,
  1821. dtype: DTypeLike | None = None,
  1822. out: None = None,
  1823. keepdims: bool | _NoValueType = ...,
  1824. ) -> Any: ...
  1825. @overload
  1826. def mean(
  1827. self,
  1828. /,
  1829. axis: _ShapeLike | None,
  1830. dtype: DTypeLike | None,
  1831. out: _ArrayT,
  1832. keepdims: bool | _NoValueType = ...,
  1833. ) -> _ArrayT: ...
  1834. @overload
  1835. def mean(
  1836. self,
  1837. /,
  1838. axis: _ShapeLike | None = None,
  1839. dtype: DTypeLike | None = None,
  1840. *,
  1841. out: _ArrayT,
  1842. keepdims: bool | _NoValueType = ...,
  1843. ) -> _ArrayT: ...
  1844. # keep roughly in sync with `ma.core.anom`
  1845. @overload
  1846. def anom(self, axis: SupportsIndex | None = None, dtype: None = None) -> Self: ...
  1847. @overload
  1848. def anom(self, axis: SupportsIndex | None = None, *, dtype: DTypeLike) -> MaskedArray[_ShapeT_co, dtype]: ...
  1849. @overload
  1850. def anom(self, axis: SupportsIndex | None, dtype: DTypeLike) -> MaskedArray[_ShapeT_co, dtype]: ...
  1851. # keep in sync with `std` and `ma.core.var`
  1852. @overload # type: ignore[override]
  1853. def var(
  1854. self,
  1855. axis: _ShapeLike | None = None,
  1856. dtype: DTypeLike | None = None,
  1857. out: None = None,
  1858. ddof: float = 0,
  1859. keepdims: bool | _NoValueType = ...,
  1860. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1861. ) -> Any: ...
  1862. @overload
  1863. def var(
  1864. self,
  1865. axis: _ShapeLike | None,
  1866. dtype: DTypeLike | None,
  1867. out: _ArrayT,
  1868. ddof: float = 0,
  1869. keepdims: bool | _NoValueType = ...,
  1870. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1871. ) -> _ArrayT: ...
  1872. @overload
  1873. def var(
  1874. self,
  1875. axis: _ShapeLike | None = None,
  1876. dtype: DTypeLike | None = None,
  1877. *,
  1878. out: _ArrayT,
  1879. ddof: float = 0,
  1880. keepdims: bool | _NoValueType = ...,
  1881. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1882. ) -> _ArrayT: ...
  1883. # keep in sync with `var` and `ma.core.std`
  1884. @overload # type: ignore[override]
  1885. def std(
  1886. self,
  1887. axis: _ShapeLike | None = None,
  1888. dtype: DTypeLike | None = None,
  1889. out: None = None,
  1890. ddof: float = 0,
  1891. keepdims: bool | _NoValueType = ...,
  1892. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1893. ) -> Any: ...
  1894. @overload
  1895. def std(
  1896. self,
  1897. axis: _ShapeLike | None,
  1898. dtype: DTypeLike | None,
  1899. out: _ArrayT,
  1900. ddof: float = 0,
  1901. keepdims: bool | _NoValueType = ...,
  1902. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1903. ) -> _ArrayT: ...
  1904. @overload
  1905. def std(
  1906. self,
  1907. axis: _ShapeLike | None = None,
  1908. dtype: DTypeLike | None = None,
  1909. *,
  1910. out: _ArrayT,
  1911. ddof: float = 0,
  1912. keepdims: bool | _NoValueType = ...,
  1913. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1914. ) -> _ArrayT: ...
  1915. # Keep in sync with `ndarray.round`
  1916. @overload # out=None (default)
  1917. def round(self, /, decimals: SupportsIndex = 0, out: None = None) -> Self: ...
  1918. @overload # out=ndarray
  1919. def round(self, /, decimals: SupportsIndex, out: _ArrayT) -> _ArrayT: ...
  1920. @overload
  1921. def round(self, /, decimals: SupportsIndex = 0, *, out: _ArrayT) -> _ArrayT: ...
  1922. def argsort( # type: ignore[override]
  1923. self,
  1924. axis: SupportsIndex | _NoValueType = ...,
  1925. kind: _SortKind | None = None,
  1926. order: str | Sequence[str] | None = None,
  1927. endwith: bool = True,
  1928. fill_value: _ScalarLike_co | None = None,
  1929. *,
  1930. stable: bool = False,
  1931. ) -> _MaskedArray[intp]: ...
  1932. # Keep in-sync with np.ma.argmin
  1933. @overload # type: ignore[override]
  1934. def argmin(
  1935. self,
  1936. axis: None = None,
  1937. fill_value: _ScalarLike_co | None = None,
  1938. out: None = None,
  1939. *,
  1940. keepdims: Literal[False] | _NoValueType = ...,
  1941. ) -> intp: ...
  1942. @overload
  1943. def argmin(
  1944. self,
  1945. axis: SupportsIndex | None = None,
  1946. fill_value: _ScalarLike_co | None = None,
  1947. out: None = None,
  1948. *,
  1949. keepdims: bool | _NoValueType = ...,
  1950. ) -> Any: ...
  1951. @overload
  1952. def argmin(
  1953. self,
  1954. axis: SupportsIndex | None = None,
  1955. fill_value: _ScalarLike_co | None = None,
  1956. *,
  1957. out: _ArrayT,
  1958. keepdims: bool | _NoValueType = ...,
  1959. ) -> _ArrayT: ...
  1960. @overload
  1961. def argmin(
  1962. self,
  1963. axis: SupportsIndex | None,
  1964. fill_value: _ScalarLike_co | None,
  1965. out: _ArrayT,
  1966. *,
  1967. keepdims: bool | _NoValueType = ...,
  1968. ) -> _ArrayT: ...
  1969. # Keep in-sync with np.ma.argmax
  1970. @overload # type: ignore[override]
  1971. def argmax(
  1972. self,
  1973. axis: None = None,
  1974. fill_value: _ScalarLike_co | None = None,
  1975. out: None = None,
  1976. *,
  1977. keepdims: Literal[False] | _NoValueType = ...,
  1978. ) -> intp: ...
  1979. @overload
  1980. def argmax(
  1981. self,
  1982. axis: SupportsIndex | None = None,
  1983. fill_value: _ScalarLike_co | None = None,
  1984. out: None = None,
  1985. *,
  1986. keepdims: bool | _NoValueType = ...,
  1987. ) -> Any: ...
  1988. @overload
  1989. def argmax(
  1990. self,
  1991. axis: SupportsIndex | None = None,
  1992. fill_value: _ScalarLike_co | None = None,
  1993. *,
  1994. out: _ArrayT,
  1995. keepdims: bool | _NoValueType = ...,
  1996. ) -> _ArrayT: ...
  1997. @overload
  1998. def argmax(
  1999. self,
  2000. axis: SupportsIndex | None,
  2001. fill_value: _ScalarLike_co | None,
  2002. out: _ArrayT,
  2003. *,
  2004. keepdims: bool | _NoValueType = ...,
  2005. ) -> _ArrayT: ...
  2006. #
  2007. def sort( # type: ignore[override]
  2008. self,
  2009. axis: SupportsIndex = -1,
  2010. kind: _SortKind | None = None,
  2011. order: str | Sequence[str] | None = None,
  2012. endwith: bool | None = True,
  2013. fill_value: _ScalarLike_co | None = None,
  2014. *,
  2015. stable: Literal[False] | None = False,
  2016. ) -> None: ...
  2017. #
  2018. @overload # type: ignore[override]
  2019. def min(
  2020. self: _MaskedArray[_ScalarT],
  2021. axis: None = None,
  2022. out: None = None,
  2023. fill_value: _ScalarLike_co | None = None,
  2024. keepdims: Literal[False] | _NoValueType = ...,
  2025. ) -> _ScalarT: ...
  2026. @overload
  2027. def min(
  2028. self,
  2029. axis: _ShapeLike | None = None,
  2030. out: None = None,
  2031. fill_value: _ScalarLike_co | None = None,
  2032. keepdims: bool | _NoValueType = ...
  2033. ) -> Any: ...
  2034. @overload
  2035. def min(
  2036. self,
  2037. axis: _ShapeLike | None,
  2038. out: _ArrayT,
  2039. fill_value: _ScalarLike_co | None = None,
  2040. keepdims: bool | _NoValueType = ...,
  2041. ) -> _ArrayT: ...
  2042. @overload
  2043. def min(
  2044. self,
  2045. axis: _ShapeLike | None = None,
  2046. *,
  2047. out: _ArrayT,
  2048. fill_value: _ScalarLike_co | None = None,
  2049. keepdims: bool | _NoValueType = ...,
  2050. ) -> _ArrayT: ...
  2051. #
  2052. @overload # type: ignore[override]
  2053. def max(
  2054. self: _MaskedArray[_ScalarT],
  2055. axis: None = None,
  2056. out: None = None,
  2057. fill_value: _ScalarLike_co | None = None,
  2058. keepdims: Literal[False] | _NoValueType = ...,
  2059. ) -> _ScalarT: ...
  2060. @overload
  2061. def max(
  2062. self,
  2063. axis: _ShapeLike | None = None,
  2064. out: None = None,
  2065. fill_value: _ScalarLike_co | None = None,
  2066. keepdims: bool | _NoValueType = ...
  2067. ) -> Any: ...
  2068. @overload
  2069. def max(
  2070. self,
  2071. axis: _ShapeLike | None,
  2072. out: _ArrayT,
  2073. fill_value: _ScalarLike_co | None = None,
  2074. keepdims: bool | _NoValueType = ...,
  2075. ) -> _ArrayT: ...
  2076. @overload
  2077. def max(
  2078. self,
  2079. axis: _ShapeLike | None = None,
  2080. *,
  2081. out: _ArrayT,
  2082. fill_value: _ScalarLike_co | None = None,
  2083. keepdims: bool | _NoValueType = ...,
  2084. ) -> _ArrayT: ...
  2085. #
  2086. @overload
  2087. def ptp(
  2088. self: _MaskedArray[_ScalarT],
  2089. axis: None = None,
  2090. out: None = None,
  2091. fill_value: _ScalarLike_co | None = None,
  2092. keepdims: Literal[False] = False,
  2093. ) -> _ScalarT: ...
  2094. @overload
  2095. def ptp(
  2096. self,
  2097. axis: _ShapeLike | None = None,
  2098. out: None = None,
  2099. fill_value: _ScalarLike_co | None = None,
  2100. keepdims: bool = False,
  2101. ) -> Any: ...
  2102. @overload
  2103. def ptp(
  2104. self,
  2105. axis: _ShapeLike | None,
  2106. out: _ArrayT,
  2107. fill_value: _ScalarLike_co | None = None,
  2108. keepdims: bool = False,
  2109. ) -> _ArrayT: ...
  2110. @overload
  2111. def ptp(
  2112. self,
  2113. axis: _ShapeLike | None = None,
  2114. *,
  2115. out: _ArrayT,
  2116. fill_value: _ScalarLike_co | None = None,
  2117. keepdims: bool = False,
  2118. ) -> _ArrayT: ...
  2119. #
  2120. @overload
  2121. def partition(
  2122. self,
  2123. /,
  2124. kth: _ArrayLikeInt,
  2125. axis: SupportsIndex = -1,
  2126. kind: _PartitionKind = "introselect",
  2127. order: None = None
  2128. ) -> None: ...
  2129. @overload
  2130. def partition(
  2131. self: _MaskedArray[np.void],
  2132. /,
  2133. kth: _ArrayLikeInt,
  2134. axis: SupportsIndex = -1,
  2135. kind: _PartitionKind = "introselect",
  2136. order: str | Sequence[str] | None = None,
  2137. ) -> None: ...
  2138. #
  2139. @overload
  2140. def argpartition(
  2141. self,
  2142. /,
  2143. kth: _ArrayLikeInt,
  2144. axis: SupportsIndex | None = -1,
  2145. kind: _PartitionKind = "introselect",
  2146. order: None = None,
  2147. ) -> _MaskedArray[intp]: ...
  2148. @overload
  2149. def argpartition(
  2150. self: _MaskedArray[np.void],
  2151. /,
  2152. kth: _ArrayLikeInt,
  2153. axis: SupportsIndex | None = -1,
  2154. kind: _PartitionKind = "introselect",
  2155. order: str | Sequence[str] | None = None,
  2156. ) -> _MaskedArray[intp]: ...
  2157. # Keep in-sync with np.ma.take
  2158. @overload # type: ignore[override]
  2159. def take( # type: ignore[overload-overlap]
  2160. self: _MaskedArray[_ScalarT],
  2161. indices: _IntLike_co,
  2162. axis: None = None,
  2163. out: None = None,
  2164. mode: _ModeKind = "raise"
  2165. ) -> _ScalarT: ...
  2166. @overload
  2167. def take(
  2168. self: _MaskedArray[_ScalarT],
  2169. indices: _ArrayLikeInt_co,
  2170. axis: SupportsIndex | None = None,
  2171. out: None = None,
  2172. mode: _ModeKind = "raise",
  2173. ) -> _MaskedArray[_ScalarT]: ...
  2174. @overload
  2175. def take(
  2176. self,
  2177. indices: _ArrayLikeInt_co,
  2178. axis: SupportsIndex | None,
  2179. out: _ArrayT,
  2180. mode: _ModeKind = "raise",
  2181. ) -> _ArrayT: ...
  2182. @overload
  2183. def take(
  2184. self,
  2185. indices: _ArrayLikeInt_co,
  2186. axis: SupportsIndex | None = None,
  2187. *,
  2188. out: _ArrayT,
  2189. mode: _ModeKind = "raise",
  2190. ) -> _ArrayT: ...
  2191. # keep in sync with `ndarray.diagonal`
  2192. @override
  2193. def diagonal(
  2194. self,
  2195. /,
  2196. offset: SupportsIndex = 0,
  2197. axis1: SupportsIndex = 0,
  2198. axis2: SupportsIndex = 1,
  2199. ) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  2200. # keep in sync with `ndarray.repeat`
  2201. @override
  2202. @overload
  2203. def repeat(
  2204. self,
  2205. /,
  2206. repeats: _ArrayLikeInt_co,
  2207. axis: None = None,
  2208. ) -> MaskedArray[tuple[int], _DTypeT_co]: ...
  2209. @overload
  2210. def repeat(
  2211. self,
  2212. /,
  2213. repeats: _ArrayLikeInt_co,
  2214. axis: SupportsIndex,
  2215. ) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  2216. # keep in sync with `ndarray.flatten` and `ndarray.ravel`
  2217. @override
  2218. def flatten(self, /, order: _OrderKACF = "C") -> MaskedArray[tuple[int], _DTypeT_co]: ...
  2219. @override
  2220. def ravel(self, order: _OrderKACF = "C") -> MaskedArray[tuple[int], _DTypeT_co]: ...
  2221. # keep in sync with `ndarray.squeeze`
  2222. @override
  2223. def squeeze(
  2224. self,
  2225. /,
  2226. axis: SupportsIndex | tuple[SupportsIndex, ...] | None = None,
  2227. ) -> MaskedArray[_AnyShape, _DTypeT_co]: ...
  2228. #
  2229. def toflex(self) -> MaskedArray[_ShapeT_co, np.dtype[np.void]]: ...
  2230. def torecords(self) -> MaskedArray[_ShapeT_co, np.dtype[np.void]]: ...
  2231. #
  2232. @override
  2233. def tobytes(self, /, fill_value: Incomplete | None = None, order: _OrderKACF = "C") -> bytes: ... # type: ignore[override]
  2234. # keep in sync with `ndarray.tolist`
  2235. @override
  2236. @overload
  2237. def tolist(self: MaskedArray[tuple[Never], dtype[generic[_T]]], /, fill_value: _ScalarLike_co | None = None) -> Any: ...
  2238. @overload
  2239. def tolist(self: MaskedArray[tuple[()], dtype[generic[_T]]], /, fill_value: _ScalarLike_co | None = None) -> _T: ...
  2240. @overload
  2241. def tolist(self: MaskedArray[tuple[int], dtype[generic[_T]]], /, fill_value: _ScalarLike_co | None = None) -> list[_T]: ...
  2242. @overload
  2243. def tolist(
  2244. self: MaskedArray[tuple[int, int], dtype[generic[_T]]], /, fill_value: _ScalarLike_co | None = None
  2245. ) -> list[list[_T]]: ...
  2246. @overload
  2247. def tolist(
  2248. self: MaskedArray[tuple[int, int, int], dtype[generic[_T]]], /, fill_value: _ScalarLike_co | None = None
  2249. ) -> list[list[list[_T]]]: ...
  2250. @overload
  2251. def tolist(self, /, fill_value: _ScalarLike_co | None = None) -> Any: ...
  2252. # NOTE: will raise `NotImplementedError`
  2253. @override
  2254. def tofile(self, /, fid: Never, sep: str = "", format: str = "%s") -> NoReturn: ... # type: ignore[override]
  2255. #
  2256. @override
  2257. def __deepcopy__(self, memo: dict[int, Any] | None = None) -> Self: ...
  2258. # Keep `dtype` at the bottom to avoid name conflicts with `np.dtype`
  2259. @property
  2260. def dtype(self) -> _DTypeT_co: ...
  2261. @dtype.setter
  2262. def dtype(self: MaskedArray[_AnyShape, _DTypeT], dtype: _DTypeT, /) -> None: ...
  2263. class mvoid(MaskedArray[_ShapeT_co, _DTypeT_co]):
  2264. def __new__(
  2265. self, # pyright: ignore[reportSelfClsParameterName]
  2266. data,
  2267. mask=...,
  2268. dtype=...,
  2269. fill_value=...,
  2270. hardmask=...,
  2271. copy=...,
  2272. subok=...,
  2273. ): ...
  2274. def __getitem__(self, indx): ...
  2275. def __setitem__(self, indx, value): ...
  2276. def __iter__(self): ...
  2277. def __len__(self): ...
  2278. def filled(self, fill_value=None): ...
  2279. def tolist(self): ... # type: ignore[override]
  2280. def isMaskedArray(x: object) -> TypeIs[MaskedArray]: ...
  2281. def isarray(x: object) -> TypeIs[MaskedArray]: ... # alias to isMaskedArray
  2282. def isMA(x: object) -> TypeIs[MaskedArray]: ... # alias to isMaskedArray
  2283. # 0D float64 array
  2284. class MaskedConstant(MaskedArray[tuple[()], dtype[float64]]):
  2285. def __new__(cls) -> Self: ...
  2286. # these overrides are no-ops
  2287. @override
  2288. def __iadd__(self, other: _Ignored, /) -> Self: ... # type: ignore[override]
  2289. @override
  2290. def __isub__(self, other: _Ignored, /) -> Self: ... # type: ignore[override]
  2291. @override
  2292. def __imul__(self, other: _Ignored, /) -> Self: ... # type: ignore[override]
  2293. @override
  2294. def __ifloordiv__(self, other: _Ignored, /) -> Self: ...
  2295. @override
  2296. def __itruediv__(self, other: _Ignored, /) -> Self: ... # type: ignore[override]
  2297. @override
  2298. def __ipow__(self, other: _Ignored, /) -> Self: ... # type: ignore[override]
  2299. @override
  2300. def __deepcopy__(self, /, memo: _Ignored) -> Self: ... # type: ignore[override]
  2301. @override
  2302. def copy(self, /, *args: _Ignored, **kwargs: _Ignored) -> Self: ...
  2303. masked: Final[MaskedConstant] = ...
  2304. masked_singleton: Final[MaskedConstant] = ...
  2305. masked_array: TypeAlias = MaskedArray
  2306. # keep in sync with `MaskedArray.__new__`
  2307. @overload
  2308. def array(
  2309. data: _ArrayLike[_ScalarT],
  2310. dtype: None = None,
  2311. copy: bool = False,
  2312. order: _OrderKACF | None = None,
  2313. mask: _ArrayLikeBool_co = nomask,
  2314. fill_value: _ScalarLike_co | None = None,
  2315. keep_mask: bool = True,
  2316. hard_mask: bool = False,
  2317. shrink: bool = True,
  2318. subok: bool = True,
  2319. ndmin: int = 0,
  2320. ) -> _MaskedArray[_ScalarT]: ...
  2321. @overload
  2322. def array(
  2323. data: object,
  2324. dtype: _DTypeLike[_ScalarT],
  2325. copy: bool = False,
  2326. order: _OrderKACF | None = None,
  2327. mask: _ArrayLikeBool_co = nomask,
  2328. fill_value: _ScalarLike_co | None = None,
  2329. keep_mask: bool = True,
  2330. hard_mask: bool = False,
  2331. shrink: bool = True,
  2332. subok: bool = True,
  2333. ndmin: int = 0,
  2334. ) -> _MaskedArray[_ScalarT]: ...
  2335. @overload
  2336. def array(
  2337. data: object,
  2338. dtype: DTypeLike | None = None,
  2339. copy: bool = False,
  2340. order: _OrderKACF | None = None,
  2341. mask: _ArrayLikeBool_co = nomask,
  2342. fill_value: _ScalarLike_co | None = None,
  2343. keep_mask: bool = True,
  2344. hard_mask: bool = False,
  2345. shrink: bool = True,
  2346. subok: bool = True,
  2347. ndmin: int = 0,
  2348. ) -> _MaskedArray[_ScalarT]: ...
  2349. # keep in sync with `array`
  2350. @overload
  2351. def asarray(a: _ArrayLike[_ScalarT], dtype: None = None, order: _OrderKACF | None = None) -> _MaskedArray[_ScalarT]: ...
  2352. @overload
  2353. def asarray(a: object, dtype: _DTypeLike[_ScalarT], order: _OrderKACF | None = None) -> _MaskedArray[_ScalarT]: ...
  2354. @overload
  2355. def asarray(a: object, dtype: DTypeLike | None = None, order: _OrderKACF | None = None) -> _MaskedArray[_ScalarT]: ...
  2356. # keep in sync with `asarray` (but note the additional first overload)
  2357. @overload
  2358. def asanyarray(a: _MArrayT, dtype: None = None, order: _OrderKACF | None = None) -> _MArrayT: ...
  2359. @overload
  2360. def asanyarray(a: _ArrayLike[_ScalarT], dtype: None = None, order: _OrderKACF | None = None) -> _MaskedArray[_ScalarT]: ...
  2361. @overload
  2362. def asanyarray(a: object, dtype: _DTypeLike[_ScalarT], order: _OrderKACF | None = None) -> _MaskedArray[_ScalarT]: ...
  2363. @overload
  2364. def asanyarray(a: object, dtype: DTypeLike | None = None, order: _OrderKACF | None = None) -> _MaskedArray[_ScalarT]: ...
  2365. #
  2366. def is_masked(x: object) -> bool: ...
  2367. @overload
  2368. def min(
  2369. obj: _ArrayLike[_ScalarT],
  2370. axis: None = None,
  2371. out: None = None,
  2372. fill_value: _ScalarLike_co | None = None,
  2373. keepdims: Literal[False] | _NoValueType = ...,
  2374. ) -> _ScalarT: ...
  2375. @overload
  2376. def min(
  2377. obj: ArrayLike,
  2378. axis: _ShapeLike | None = None,
  2379. out: None = None,
  2380. fill_value: _ScalarLike_co | None = None,
  2381. keepdims: bool | _NoValueType = ...
  2382. ) -> Any: ...
  2383. @overload
  2384. def min(
  2385. obj: ArrayLike,
  2386. axis: _ShapeLike | None,
  2387. out: _ArrayT,
  2388. fill_value: _ScalarLike_co | None = None,
  2389. keepdims: bool | _NoValueType = ...,
  2390. ) -> _ArrayT: ...
  2391. @overload
  2392. def min(
  2393. obj: ArrayLike,
  2394. axis: _ShapeLike | None = None,
  2395. *,
  2396. out: _ArrayT,
  2397. fill_value: _ScalarLike_co | None = None,
  2398. keepdims: bool | _NoValueType = ...,
  2399. ) -> _ArrayT: ...
  2400. @overload
  2401. def max(
  2402. obj: _ArrayLike[_ScalarT],
  2403. axis: None = None,
  2404. out: None = None,
  2405. fill_value: _ScalarLike_co | None = None,
  2406. keepdims: Literal[False] | _NoValueType = ...,
  2407. ) -> _ScalarT: ...
  2408. @overload
  2409. def max(
  2410. obj: ArrayLike,
  2411. axis: _ShapeLike | None = None,
  2412. out: None = None,
  2413. fill_value: _ScalarLike_co | None = None,
  2414. keepdims: bool | _NoValueType = ...
  2415. ) -> Any: ...
  2416. @overload
  2417. def max(
  2418. obj: ArrayLike,
  2419. axis: _ShapeLike | None,
  2420. out: _ArrayT,
  2421. fill_value: _ScalarLike_co | None = None,
  2422. keepdims: bool | _NoValueType = ...,
  2423. ) -> _ArrayT: ...
  2424. @overload
  2425. def max(
  2426. obj: ArrayLike,
  2427. axis: _ShapeLike | None = None,
  2428. *,
  2429. out: _ArrayT,
  2430. fill_value: _ScalarLike_co | None = None,
  2431. keepdims: bool | _NoValueType = ...,
  2432. ) -> _ArrayT: ...
  2433. @overload
  2434. def ptp(
  2435. obj: _ArrayLike[_ScalarT],
  2436. axis: None = None,
  2437. out: None = None,
  2438. fill_value: _ScalarLike_co | None = None,
  2439. keepdims: Literal[False] | _NoValueType = ...,
  2440. ) -> _ScalarT: ...
  2441. @overload
  2442. def ptp(
  2443. obj: ArrayLike,
  2444. axis: _ShapeLike | None = None,
  2445. out: None = None,
  2446. fill_value: _ScalarLike_co | None = None,
  2447. keepdims: bool | _NoValueType = ...
  2448. ) -> Any: ...
  2449. @overload
  2450. def ptp(
  2451. obj: ArrayLike,
  2452. axis: _ShapeLike | None,
  2453. out: _ArrayT,
  2454. fill_value: _ScalarLike_co | None = None,
  2455. keepdims: bool | _NoValueType = ...,
  2456. ) -> _ArrayT: ...
  2457. @overload
  2458. def ptp(
  2459. obj: ArrayLike,
  2460. axis: _ShapeLike | None = None,
  2461. *,
  2462. out: _ArrayT,
  2463. fill_value: _ScalarLike_co | None = None,
  2464. keepdims: bool | _NoValueType = ...,
  2465. ) -> _ArrayT: ...
  2466. # we cannot meaningfully annotate `frommethod` further, because the callable signature
  2467. # of the return type fully depends on the *value* of `methodname` and `reversed` in
  2468. # a way that cannot be expressed in the Python type system.
  2469. def _frommethod(methodname: str, reversed: bool = False) -> types.FunctionType: ...
  2470. # NOTE: The following `*_mask` functions will accept any array-like input runtime, but
  2471. # since their use-cases are specific to masks, they only accept `MaskedArray` inputs.
  2472. # keep in sync with `MaskedArray.harden_mask`
  2473. def harden_mask(a: _MArrayT) -> _MArrayT: ...
  2474. # keep in sync with `MaskedArray.soften_mask`
  2475. def soften_mask(a: _MArrayT) -> _MArrayT: ...
  2476. # keep in sync with `MaskedArray.shrink_mask`
  2477. def shrink_mask(a: _MArrayT) -> _MArrayT: ...
  2478. # keep in sync with `MaskedArray.ids`
  2479. def ids(a: ArrayLike) -> tuple[int, int]: ...
  2480. # keep in sync with `ndarray.nonzero`
  2481. def nonzero(a: ArrayLike) -> tuple[ndarray[tuple[int], np.dtype[intp]], ...]: ...
  2482. # keep first overload in sync with `MaskedArray.ravel`
  2483. @overload
  2484. def ravel(a: np.ndarray[Any, _DTypeT], order: _OrderKACF = "C") -> MaskedArray[tuple[int], _DTypeT]: ...
  2485. @overload
  2486. def ravel(a: _ArrayLike[_ScalarT], order: _OrderKACF = "C") -> MaskedArray[tuple[int], np.dtype[_ScalarT]]: ...
  2487. @overload
  2488. def ravel(a: ArrayLike, order: _OrderKACF = "C") -> MaskedArray[tuple[int], _DTypeT_co]: ...
  2489. # keep roughly in sync with `lib._function_base_impl.copy`
  2490. @overload
  2491. def copy(a: _MArrayT, order: _OrderKACF = "C") -> _MArrayT: ...
  2492. @overload
  2493. def copy(a: np.ndarray[_ShapeT, _DTypeT], order: _OrderKACF = "C") -> MaskedArray[_ShapeT, _DTypeT]: ...
  2494. @overload
  2495. def copy(a: _ArrayLike[_ScalarT], order: _OrderKACF = "C") -> _MaskedArray[_ScalarT]: ...
  2496. @overload
  2497. def copy(a: ArrayLike, order: _OrderKACF = "C") -> _MaskedArray[Incomplete]: ...
  2498. # keep in sync with `_core.fromnumeric.diagonal`
  2499. @overload
  2500. def diagonal(
  2501. a: _ArrayLike[_ScalarT],
  2502. offset: SupportsIndex = 0,
  2503. axis1: SupportsIndex = 0,
  2504. axis2: SupportsIndex = 1,
  2505. ) -> NDArray[_ScalarT]: ...
  2506. @overload
  2507. def diagonal(
  2508. a: ArrayLike,
  2509. offset: SupportsIndex = 0,
  2510. axis1: SupportsIndex = 0,
  2511. axis2: SupportsIndex = 1,
  2512. ) -> NDArray[Incomplete]: ...
  2513. # keep in sync with `_core.fromnumeric.repeat`
  2514. @overload
  2515. def repeat(a: _ArrayLike[_ScalarT], repeats: _ArrayLikeInt_co, axis: None = None) -> MaskedArray[tuple[int], dtype[_ScalarT]]: ...
  2516. @overload
  2517. def repeat(a: _ArrayLike[_ScalarT], repeats: _ArrayLikeInt_co, axis: SupportsIndex) -> _MaskedArray[_ScalarT]: ...
  2518. @overload
  2519. def repeat(a: ArrayLike, repeats: _ArrayLikeInt_co, axis: None = None) -> MaskedArray[tuple[int], dtype[Incomplete]]: ...
  2520. @overload
  2521. def repeat(a: ArrayLike, repeats: _ArrayLikeInt_co, axis: SupportsIndex) -> _MaskedArray[Incomplete]: ...
  2522. # keep in sync with `_core.fromnumeric.swapaxes`
  2523. @overload
  2524. def swapaxes(a: _MArrayT, axis1: SupportsIndex, axis2: SupportsIndex) -> _MArrayT: ...
  2525. @overload
  2526. def swapaxes(a: _ArrayLike[_ScalarT], axis1: SupportsIndex, axis2: SupportsIndex) -> _MaskedArray[_ScalarT]: ...
  2527. @overload
  2528. def swapaxes(a: ArrayLike, axis1: SupportsIndex, axis2: SupportsIndex) -> _MaskedArray[Incomplete]: ...
  2529. # NOTE: The `MaskedArray.anom` definition is specific to `MaskedArray`, so we need
  2530. # additional overloads to cover the array-like input here.
  2531. @overload # a: MaskedArray, dtype=None
  2532. def anom(a: _MArrayT, axis: SupportsIndex | None = None, dtype: None = None) -> _MArrayT: ...
  2533. @overload # a: array-like, dtype=None
  2534. def anom(a: _ArrayLike[_ScalarT], axis: SupportsIndex | None = None, dtype: None = None) -> _MaskedArray[_ScalarT]: ...
  2535. @overload # a: unknown array-like, dtype: dtype-like (positional)
  2536. def anom(a: ArrayLike, axis: SupportsIndex | None, dtype: _DTypeLike[_ScalarT]) -> _MaskedArray[_ScalarT]: ...
  2537. @overload # a: unknown array-like, dtype: dtype-like (keyword)
  2538. def anom(a: ArrayLike, axis: SupportsIndex | None = None, *, dtype: _DTypeLike[_ScalarT]) -> _MaskedArray[_ScalarT]: ...
  2539. @overload # a: unknown array-like, dtype: unknown dtype-like (positional)
  2540. def anom(a: ArrayLike, axis: SupportsIndex | None, dtype: DTypeLike) -> _MaskedArray[Incomplete]: ...
  2541. @overload # a: unknown array-like, dtype: unknown dtype-like (keyword)
  2542. def anom(a: ArrayLike, axis: SupportsIndex | None = None, *, dtype: DTypeLike) -> _MaskedArray[Incomplete]: ...
  2543. anomalies = anom
  2544. # Keep in sync with `any` and `MaskedArray.all`
  2545. @overload
  2546. def all(a: ArrayLike, axis: None = None, out: None = None, keepdims: Literal[False] | _NoValueType = ...) -> np.bool: ...
  2547. @overload
  2548. def all(a: ArrayLike, axis: _ShapeLike | None, out: None, keepdims: Literal[True]) -> _MaskedArray[np.bool]: ...
  2549. @overload
  2550. def all(a: ArrayLike, axis: _ShapeLike | None = None, out: None = None, *, keepdims: Literal[True]) -> _MaskedArray[np.bool]: ...
  2551. @overload
  2552. def all(
  2553. a: ArrayLike, axis: _ShapeLike | None = None, out: None = None, keepdims: bool | _NoValueType = ...
  2554. ) -> np.bool | _MaskedArray[np.bool]: ...
  2555. @overload
  2556. def all(a: ArrayLike, axis: _ShapeLike | None, out: _ArrayT, keepdims: bool | _NoValueType = ...) -> _ArrayT: ...
  2557. @overload
  2558. def all(a: ArrayLike, axis: _ShapeLike | None = None, *, out: _ArrayT, keepdims: bool | _NoValueType = ...) -> _ArrayT: ...
  2559. # Keep in sync with `all` and `MaskedArray.any`
  2560. @overload
  2561. def any(a: ArrayLike, axis: None = None, out: None = None, keepdims: Literal[False] | _NoValueType = ...) -> np.bool: ...
  2562. @overload
  2563. def any(a: ArrayLike, axis: _ShapeLike | None, out: None, keepdims: Literal[True]) -> _MaskedArray[np.bool]: ...
  2564. @overload
  2565. def any(a: ArrayLike, axis: _ShapeLike | None = None, out: None = None, *, keepdims: Literal[True]) -> _MaskedArray[np.bool]: ...
  2566. @overload
  2567. def any(
  2568. a: ArrayLike, axis: _ShapeLike | None = None, out: None = None, keepdims: bool | _NoValueType = ...
  2569. ) -> np.bool | _MaskedArray[np.bool]: ...
  2570. @overload
  2571. def any(a: ArrayLike, axis: _ShapeLike | None, out: _ArrayT, keepdims: bool | _NoValueType = ...) -> _ArrayT: ...
  2572. @overload
  2573. def any(a: ArrayLike, axis: _ShapeLike | None = None, *, out: _ArrayT, keepdims: bool | _NoValueType = ...) -> _ArrayT: ...
  2574. # NOTE: The `MaskedArray.compress` definition uses its `DTypeT_co` type parameter,
  2575. # which wouldn't work here for array-like inputs, so we need additional overloads.
  2576. @overload
  2577. def compress(
  2578. condition: _ArrayLikeBool_co, a: _ArrayLike[_ScalarT], axis: None = None, out: None = None
  2579. ) -> MaskedArray[tuple[int], np.dtype[_ScalarT]]: ...
  2580. @overload
  2581. def compress(
  2582. condition: _ArrayLikeBool_co, a: _ArrayLike[_ScalarT], axis: _ShapeLike | None = None, out: None = None
  2583. ) -> MaskedArray[_AnyShape, np.dtype[_ScalarT]]: ...
  2584. @overload
  2585. def compress(condition: _ArrayLikeBool_co, a: ArrayLike, axis: None = None, out: None = None) -> MaskedArray[tuple[int]]: ...
  2586. @overload
  2587. def compress(
  2588. condition: _ArrayLikeBool_co, a: ArrayLike, axis: _ShapeLike | None = None, out: None = None
  2589. ) -> _MaskedArray[Incomplete]: ...
  2590. @overload
  2591. def compress(condition: _ArrayLikeBool_co, a: ArrayLike, axis: _ShapeLike | None, out: _ArrayT) -> _ArrayT: ...
  2592. @overload
  2593. def compress(condition: _ArrayLikeBool_co, a: ArrayLike, axis: _ShapeLike | None = None, *, out: _ArrayT) -> _ArrayT: ...
  2594. # Keep in sync with `cumprod` and `MaskedArray.cumsum`
  2595. @overload # out: None (default)
  2596. def cumsum(
  2597. a: ArrayLike, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, out: None = None
  2598. ) -> _MaskedArray[Incomplete]: ...
  2599. @overload # out: ndarray (positional)
  2600. def cumsum(a: ArrayLike, axis: SupportsIndex | None, dtype: DTypeLike | None, out: _ArrayT) -> _ArrayT: ...
  2601. @overload # out: ndarray (kwarg)
  2602. def cumsum(a: ArrayLike, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, *, out: _ArrayT) -> _ArrayT: ...
  2603. # Keep in sync with `cumsum` and `MaskedArray.cumsum`
  2604. @overload # out: None (default)
  2605. def cumprod(
  2606. a: ArrayLike, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, out: None = None
  2607. ) -> _MaskedArray[Incomplete]: ...
  2608. @overload # out: ndarray (positional)
  2609. def cumprod(a: ArrayLike, axis: SupportsIndex | None, dtype: DTypeLike | None, out: _ArrayT) -> _ArrayT: ...
  2610. @overload # out: ndarray (kwarg)
  2611. def cumprod(a: ArrayLike, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, *, out: _ArrayT) -> _ArrayT: ...
  2612. # Keep in sync with `sum`, `prod`, `product`, and `MaskedArray.mean`
  2613. @overload
  2614. def mean(
  2615. a: ArrayLike,
  2616. axis: _ShapeLike | None = None,
  2617. dtype: DTypeLike | None = None,
  2618. out: None = None,
  2619. keepdims: bool | _NoValueType = ...,
  2620. ) -> Incomplete: ...
  2621. @overload
  2622. def mean(
  2623. a: ArrayLike,
  2624. axis: _ShapeLike | None,
  2625. dtype: DTypeLike | None,
  2626. out: _ArrayT,
  2627. keepdims: bool | _NoValueType = ...,
  2628. ) -> _ArrayT: ...
  2629. @overload
  2630. def mean(
  2631. a: ArrayLike,
  2632. axis: _ShapeLike | None = None,
  2633. dtype: DTypeLike | None = None,
  2634. *,
  2635. out: _ArrayT,
  2636. keepdims: bool | _NoValueType = ...,
  2637. ) -> _ArrayT: ...
  2638. # Keep in sync with `mean`, `prod`, `product`, and `MaskedArray.sum`
  2639. @overload
  2640. def sum(
  2641. a: ArrayLike,
  2642. axis: _ShapeLike | None = None,
  2643. dtype: DTypeLike | None = None,
  2644. out: None = None,
  2645. keepdims: bool | _NoValueType = ...,
  2646. ) -> Incomplete: ...
  2647. @overload
  2648. def sum(
  2649. a: ArrayLike,
  2650. axis: _ShapeLike | None,
  2651. dtype: DTypeLike | None,
  2652. out: _ArrayT,
  2653. keepdims: bool | _NoValueType = ...,
  2654. ) -> _ArrayT: ...
  2655. @overload
  2656. def sum(
  2657. a: ArrayLike,
  2658. axis: _ShapeLike | None = None,
  2659. dtype: DTypeLike | None = None,
  2660. *,
  2661. out: _ArrayT,
  2662. keepdims: bool | _NoValueType = ...,
  2663. ) -> _ArrayT: ...
  2664. # Keep in sync with `product` and `MaskedArray.prod`
  2665. @overload
  2666. def prod(
  2667. a: ArrayLike,
  2668. axis: _ShapeLike | None = None,
  2669. dtype: DTypeLike | None = None,
  2670. out: None = None,
  2671. keepdims: bool | _NoValueType = ...,
  2672. ) -> Incomplete: ...
  2673. @overload
  2674. def prod(
  2675. a: ArrayLike,
  2676. axis: _ShapeLike | None,
  2677. dtype: DTypeLike | None,
  2678. out: _ArrayT,
  2679. keepdims: bool | _NoValueType = ...,
  2680. ) -> _ArrayT: ...
  2681. @overload
  2682. def prod(
  2683. a: ArrayLike,
  2684. axis: _ShapeLike | None = None,
  2685. dtype: DTypeLike | None = None,
  2686. *,
  2687. out: _ArrayT,
  2688. keepdims: bool | _NoValueType = ...,
  2689. ) -> _ArrayT: ...
  2690. # Keep in sync with `prod` and `MaskedArray.prod`
  2691. @overload
  2692. def product(
  2693. a: ArrayLike,
  2694. axis: _ShapeLike | None = None,
  2695. dtype: DTypeLike | None = None,
  2696. out: None = None,
  2697. keepdims: bool | _NoValueType = ...,
  2698. ) -> Incomplete: ...
  2699. @overload
  2700. def product(
  2701. a: ArrayLike,
  2702. axis: _ShapeLike | None,
  2703. dtype: DTypeLike | None,
  2704. out: _ArrayT,
  2705. keepdims: bool | _NoValueType = ...,
  2706. ) -> _ArrayT: ...
  2707. @overload
  2708. def product(
  2709. a: ArrayLike,
  2710. axis: _ShapeLike | None = None,
  2711. dtype: DTypeLike | None = None,
  2712. *,
  2713. out: _ArrayT,
  2714. keepdims: bool | _NoValueType = ...,
  2715. ) -> _ArrayT: ...
  2716. # Keep in sync with `MaskedArray.trace` and `_core.fromnumeric.trace`
  2717. @overload
  2718. def trace(
  2719. a: ArrayLike,
  2720. offset: SupportsIndex = 0,
  2721. axis1: SupportsIndex = 0,
  2722. axis2: SupportsIndex = 1,
  2723. dtype: DTypeLike | None = None,
  2724. out: None = None,
  2725. ) -> Incomplete: ...
  2726. @overload
  2727. def trace(
  2728. a: ArrayLike,
  2729. offset: SupportsIndex,
  2730. axis1: SupportsIndex,
  2731. axis2: SupportsIndex,
  2732. dtype: DTypeLike | None,
  2733. out: _ArrayT,
  2734. ) -> _ArrayT: ...
  2735. @overload
  2736. def trace(
  2737. a: ArrayLike,
  2738. offset: SupportsIndex = 0,
  2739. axis1: SupportsIndex = 0,
  2740. axis2: SupportsIndex = 1,
  2741. dtype: DTypeLike | None = None,
  2742. *,
  2743. out: _ArrayT,
  2744. ) -> _ArrayT: ...
  2745. # keep in sync with `std` and `MaskedArray.var`
  2746. @overload
  2747. def std(
  2748. a: ArrayLike,
  2749. axis: _ShapeLike | None = None,
  2750. dtype: DTypeLike | None = None,
  2751. out: None = None,
  2752. ddof: float = 0,
  2753. keepdims: bool | _NoValueType = ...,
  2754. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  2755. ) -> Incomplete: ...
  2756. @overload
  2757. def std(
  2758. a: ArrayLike,
  2759. axis: _ShapeLike | None,
  2760. dtype: DTypeLike | None,
  2761. out: _ArrayT,
  2762. ddof: float = 0,
  2763. keepdims: bool | _NoValueType = ...,
  2764. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  2765. ) -> _ArrayT: ...
  2766. @overload
  2767. def std(
  2768. a: ArrayLike,
  2769. axis: _ShapeLike | None = None,
  2770. dtype: DTypeLike | None = None,
  2771. *,
  2772. out: _ArrayT,
  2773. ddof: float = 0,
  2774. keepdims: bool | _NoValueType = ...,
  2775. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  2776. ) -> _ArrayT: ...
  2777. # keep in sync with `std` and `MaskedArray.var`
  2778. @overload
  2779. def var(
  2780. a: ArrayLike,
  2781. axis: _ShapeLike | None = None,
  2782. dtype: DTypeLike | None = None,
  2783. out: None = None,
  2784. ddof: float = 0,
  2785. keepdims: bool | _NoValueType = ...,
  2786. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  2787. ) -> Incomplete: ...
  2788. @overload
  2789. def var(
  2790. a: ArrayLike,
  2791. axis: _ShapeLike | None,
  2792. dtype: DTypeLike | None,
  2793. out: _ArrayT,
  2794. ddof: float = 0,
  2795. keepdims: bool | _NoValueType = ...,
  2796. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  2797. ) -> _ArrayT: ...
  2798. @overload
  2799. def var(
  2800. a: ArrayLike,
  2801. axis: _ShapeLike | None = None,
  2802. dtype: DTypeLike | None = None,
  2803. *,
  2804. out: _ArrayT,
  2805. ddof: float = 0,
  2806. keepdims: bool | _NoValueType = ...,
  2807. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  2808. ) -> _ArrayT: ...
  2809. # (a, b)
  2810. minimum: _extrema_operation = ...
  2811. maximum: _extrema_operation = ...
  2812. # NOTE: this is a `_frommethod` instance at runtime
  2813. @overload
  2814. def count(a: ArrayLike, axis: None = None, keepdims: Literal[False] | _NoValueType = ...) -> int: ...
  2815. @overload
  2816. def count(a: ArrayLike, axis: _ShapeLike, keepdims: bool | _NoValueType = ...) -> NDArray[int_]: ...
  2817. @overload
  2818. def count(a: ArrayLike, axis: _ShapeLike | None = None, *, keepdims: Literal[True]) -> NDArray[int_]: ...
  2819. @overload
  2820. def count(a: ArrayLike, axis: _ShapeLike | None, keepdims: Literal[True]) -> NDArray[int_]: ...
  2821. # NOTE: this is a `_frommethod` instance at runtime
  2822. @overload
  2823. def argmin(
  2824. a: ArrayLike,
  2825. axis: None = None,
  2826. fill_value: _ScalarLike_co | None = None,
  2827. out: None = None,
  2828. *,
  2829. keepdims: Literal[False] | _NoValueType = ...,
  2830. ) -> intp: ...
  2831. @overload
  2832. def argmin(
  2833. a: ArrayLike,
  2834. axis: SupportsIndex | None = None,
  2835. fill_value: _ScalarLike_co | None = None,
  2836. out: None = None,
  2837. *,
  2838. keepdims: bool | _NoValueType = ...,
  2839. ) -> Any: ...
  2840. @overload
  2841. def argmin(
  2842. a: ArrayLike,
  2843. axis: SupportsIndex | None = None,
  2844. fill_value: _ScalarLike_co | None = None,
  2845. *,
  2846. out: _ArrayT,
  2847. keepdims: bool | _NoValueType = ...,
  2848. ) -> _ArrayT: ...
  2849. @overload
  2850. def argmin(
  2851. a: ArrayLike,
  2852. axis: SupportsIndex | None,
  2853. fill_value: _ScalarLike_co | None,
  2854. out: _ArrayT,
  2855. *,
  2856. keepdims: bool | _NoValueType = ...,
  2857. ) -> _ArrayT: ...
  2858. # keep in sync with `argmin`
  2859. @overload
  2860. def argmax(
  2861. a: ArrayLike,
  2862. axis: None = None,
  2863. fill_value: _ScalarLike_co | None = None,
  2864. out: None = None,
  2865. *,
  2866. keepdims: Literal[False] | _NoValueType = ...,
  2867. ) -> intp: ...
  2868. @overload
  2869. def argmax(
  2870. a: ArrayLike,
  2871. axis: SupportsIndex | None = None,
  2872. fill_value: _ScalarLike_co | None = None,
  2873. out: None = None,
  2874. *,
  2875. keepdims: bool | _NoValueType = ...,
  2876. ) -> Any: ...
  2877. @overload
  2878. def argmax(
  2879. a: ArrayLike,
  2880. axis: SupportsIndex | None = None,
  2881. fill_value: _ScalarLike_co | None = None,
  2882. *,
  2883. out: _ArrayT,
  2884. keepdims: bool | _NoValueType = ...,
  2885. ) -> _ArrayT: ...
  2886. @overload
  2887. def argmax(
  2888. a: ArrayLike,
  2889. axis: SupportsIndex | None,
  2890. fill_value: _ScalarLike_co | None,
  2891. out: _ArrayT,
  2892. *,
  2893. keepdims: bool | _NoValueType = ...,
  2894. ) -> _ArrayT: ...
  2895. @overload
  2896. def take(
  2897. a: _ArrayLike[_ScalarT],
  2898. indices: _IntLike_co,
  2899. axis: None = None,
  2900. out: None = None,
  2901. mode: _ModeKind = "raise"
  2902. ) -> _ScalarT: ...
  2903. @overload
  2904. def take(
  2905. a: _ArrayLike[_ScalarT],
  2906. indices: _ArrayLikeInt_co,
  2907. axis: SupportsIndex | None = None,
  2908. out: None = None,
  2909. mode: _ModeKind = "raise",
  2910. ) -> _MaskedArray[_ScalarT]: ...
  2911. @overload
  2912. def take(
  2913. a: ArrayLike,
  2914. indices: _IntLike_co,
  2915. axis: SupportsIndex | None = None,
  2916. out: None = None,
  2917. mode: _ModeKind = "raise",
  2918. ) -> Any: ...
  2919. @overload
  2920. def take(
  2921. a: ArrayLike,
  2922. indices: _ArrayLikeInt_co,
  2923. axis: SupportsIndex | None = None,
  2924. out: None = None,
  2925. mode: _ModeKind = "raise",
  2926. ) -> _MaskedArray[Any]: ...
  2927. @overload
  2928. def take(
  2929. a: ArrayLike,
  2930. indices: _ArrayLikeInt_co,
  2931. axis: SupportsIndex | None,
  2932. out: _ArrayT,
  2933. mode: _ModeKind = "raise",
  2934. ) -> _ArrayT: ...
  2935. @overload
  2936. def take(
  2937. a: ArrayLike,
  2938. indices: _ArrayLikeInt_co,
  2939. axis: SupportsIndex | None = None,
  2940. *,
  2941. out: _ArrayT,
  2942. mode: _ModeKind = "raise",
  2943. ) -> _ArrayT: ...
  2944. def power(a, b, third=None): ...
  2945. def argsort(a, axis=..., kind=None, order=None, endwith=True, fill_value=None, *, stable=None): ...
  2946. @overload
  2947. def sort(
  2948. a: _ArrayT,
  2949. axis: SupportsIndex = -1,
  2950. kind: _SortKind | None = None,
  2951. order: str | Sequence[str] | None = None,
  2952. endwith: bool | None = True,
  2953. fill_value: _ScalarLike_co | None = None,
  2954. *,
  2955. stable: Literal[False] | None = None,
  2956. ) -> _ArrayT: ...
  2957. @overload
  2958. def sort(
  2959. a: ArrayLike,
  2960. axis: SupportsIndex = -1,
  2961. kind: _SortKind | None = None,
  2962. order: str | Sequence[str] | None = None,
  2963. endwith: bool | None = True,
  2964. fill_value: _ScalarLike_co | None = None,
  2965. *,
  2966. stable: Literal[False] | None = None,
  2967. ) -> NDArray[Any]: ...
  2968. @overload
  2969. def compressed(x: _ArrayLike[_ScalarT_co]) -> _Array1D[_ScalarT_co]: ...
  2970. @overload
  2971. def compressed(x: ArrayLike) -> _Array1D[Any]: ...
  2972. def concatenate(arrays, axis=0): ...
  2973. def diag(v, k=0): ...
  2974. def left_shift(a, n): ...
  2975. def right_shift(a, n): ...
  2976. def put(a: NDArray[Any], indices: _ArrayLikeInt_co, values: ArrayLike, mode: _ModeKind = "raise") -> None: ...
  2977. def putmask(a: NDArray[Any], mask: _ArrayLikeBool_co, values: ArrayLike) -> None: ...
  2978. def transpose(a, axes=None): ...
  2979. def reshape(a, new_shape, order="C"): ...
  2980. def resize(x, new_shape): ...
  2981. def ndim(obj: ArrayLike) -> int: ...
  2982. def shape(obj): ...
  2983. def size(obj: ArrayLike, axis: SupportsIndex | None = None) -> int: ...
  2984. def diff(a, /, n=1, axis=-1, prepend=..., append=...): ...
  2985. def where(condition, x=..., y=...): ...
  2986. def choose(indices, choices, out=None, mode="raise"): ...
  2987. def round_(a, decimals=0, out=None): ...
  2988. round = round_
  2989. def inner(a, b): ...
  2990. innerproduct = inner
  2991. def outer(a, b): ...
  2992. outerproduct = outer
  2993. def correlate(a, v, mode="valid", propagate_mask=True): ...
  2994. def convolve(a, v, mode="full", propagate_mask=True): ...
  2995. def allequal(a: ArrayLike, b: ArrayLike, fill_value: bool = True) -> bool: ...
  2996. def allclose(a: ArrayLike, b: ArrayLike, masked_equal: bool = True, rtol: float = 1e-5, atol: float = 1e-8) -> bool: ...
  2997. def fromflex(fxarray): ...
  2998. def append(a, b, axis=None): ...
  2999. def dot(a, b, strict=False, out=None): ...
  3000. # internal wrapper functions for the functions below
  3001. def _convert2ma(
  3002. funcname: str,
  3003. np_ret: str,
  3004. np_ma_ret: str,
  3005. params: dict[str, Any] | None = None,
  3006. ) -> Callable[..., Any]: ...
  3007. # keep in sync with `_core.multiarray.arange`
  3008. @overload # dtype=<known>
  3009. def arange(
  3010. start_or_stop: _ArangeScalar | float,
  3011. /,
  3012. stop: _ArangeScalar | float | None = None,
  3013. step: _ArangeScalar | float | None = 1,
  3014. *,
  3015. dtype: _DTypeLike[_ArangeScalarT],
  3016. device: Literal["cpu"] | None = None,
  3017. like: _SupportsArrayFunc | None = None,
  3018. fill_value: _FillValue | None = None,
  3019. hardmask: bool = False,
  3020. ) -> _Masked1D[_ArangeScalarT]: ...
  3021. @overload # (int-like, int-like?, int-like?)
  3022. def arange(
  3023. start_or_stop: _IntLike_co,
  3024. /,
  3025. stop: _IntLike_co | None = None,
  3026. step: _IntLike_co | None = 1,
  3027. *,
  3028. dtype: type[int] | _DTypeLike[np.int_] | None = None,
  3029. device: Literal["cpu"] | None = None,
  3030. like: _SupportsArrayFunc | None = None,
  3031. fill_value: _FillValue | None = None,
  3032. hardmask: bool = False,
  3033. ) -> _Masked1D[np.int_]: ...
  3034. @overload # (float, float-like?, float-like?)
  3035. def arange(
  3036. start_or_stop: float | floating,
  3037. /,
  3038. stop: _FloatLike_co | None = None,
  3039. step: _FloatLike_co | None = 1,
  3040. *,
  3041. dtype: type[float] | _DTypeLike[np.float64] | None = None,
  3042. device: Literal["cpu"] | None = None,
  3043. like: _SupportsArrayFunc | None = None,
  3044. fill_value: _FillValue | None = None,
  3045. hardmask: bool = False,
  3046. ) -> _Masked1D[np.float64 | Any]: ...
  3047. @overload # (float-like, float, float-like?)
  3048. def arange(
  3049. start_or_stop: _FloatLike_co,
  3050. /,
  3051. stop: float | floating,
  3052. step: _FloatLike_co | None = 1,
  3053. *,
  3054. dtype: type[float] | _DTypeLike[np.float64] | None = None,
  3055. device: Literal["cpu"] | None = None,
  3056. like: _SupportsArrayFunc | None = None,
  3057. fill_value: _FillValue | None = None,
  3058. hardmask: bool = False,
  3059. ) -> _Masked1D[np.float64 | Any]: ...
  3060. @overload # (timedelta, timedelta-like?, timedelta-like?)
  3061. def arange(
  3062. start_or_stop: np.timedelta64,
  3063. /,
  3064. stop: _TD64Like_co | None = None,
  3065. step: _TD64Like_co | None = 1,
  3066. *,
  3067. dtype: _DTypeLike[np.timedelta64] | None = None,
  3068. device: Literal["cpu"] | None = None,
  3069. like: _SupportsArrayFunc | None = None,
  3070. fill_value: _FillValue | None = None,
  3071. hardmask: bool = False,
  3072. ) -> _Masked1D[np.timedelta64[Incomplete]]: ...
  3073. @overload # (timedelta-like, timedelta, timedelta-like?)
  3074. def arange(
  3075. start_or_stop: _TD64Like_co,
  3076. /,
  3077. stop: np.timedelta64,
  3078. step: _TD64Like_co | None = 1,
  3079. *,
  3080. dtype: _DTypeLike[np.timedelta64] | None = None,
  3081. device: Literal["cpu"] | None = None,
  3082. like: _SupportsArrayFunc | None = None,
  3083. fill_value: _FillValue | None = None,
  3084. hardmask: bool = False,
  3085. ) -> _Masked1D[np.timedelta64[Incomplete]]: ...
  3086. @overload # (datetime, datetime, timedelta-like) (requires both start and stop)
  3087. def arange(
  3088. start_or_stop: np.datetime64,
  3089. /,
  3090. stop: np.datetime64,
  3091. step: _TD64Like_co | None = 1,
  3092. *,
  3093. dtype: _DTypeLike[np.datetime64] | None = None,
  3094. device: Literal["cpu"] | None = None,
  3095. like: _SupportsArrayFunc | None = None,
  3096. fill_value: _FillValue | None = None,
  3097. hardmask: bool = False,
  3098. ) -> _Masked1D[np.datetime64[Incomplete]]: ...
  3099. @overload # (str, str, timedelta-like, dtype=dt64-like) (requires both start and stop)
  3100. def arange(
  3101. start_or_stop: str,
  3102. /,
  3103. stop: str,
  3104. step: _TD64Like_co | None = 1,
  3105. *,
  3106. dtype: _DTypeLike[np.datetime64] | _DT64Codes,
  3107. like: _SupportsArrayFunc | None = None,
  3108. fill_value: _FillValue | None = None,
  3109. hardmask: bool = False,
  3110. ) -> _Masked1D[np.datetime64[Incomplete]]: ...
  3111. @overload # dtype=<unknown>
  3112. def arange(
  3113. start_or_stop: _ArangeScalar | float | str,
  3114. /,
  3115. stop: _ArangeScalar | float | str | None = None,
  3116. step: _ArangeScalar | float | None = 1,
  3117. *,
  3118. dtype: DTypeLike | None = None,
  3119. device: Literal["cpu"] | None = None,
  3120. like: _SupportsArrayFunc | None = None,
  3121. fill_value: _FillValue | None = None,
  3122. hardmask: bool = False,
  3123. ) -> _Masked1D[Incomplete]: ...
  3124. # based on `_core.fromnumeric.clip`
  3125. @overload
  3126. def clip(
  3127. a: _ScalarT,
  3128. a_min: ArrayLike | _NoValueType | None = ...,
  3129. a_max: ArrayLike | _NoValueType | None = ...,
  3130. out: None = None,
  3131. *,
  3132. min: ArrayLike | _NoValueType | None = ...,
  3133. max: ArrayLike | _NoValueType | None = ...,
  3134. fill_value: _FillValue | None = None,
  3135. hardmask: bool = False,
  3136. dtype: None = None,
  3137. **kwargs: Unpack[_UFuncKwargs],
  3138. ) -> _ScalarT: ...
  3139. @overload
  3140. def clip(
  3141. a: NDArray[_ScalarT],
  3142. a_min: ArrayLike | _NoValueType | None = ...,
  3143. a_max: ArrayLike | _NoValueType | None = ...,
  3144. out: None = None,
  3145. *,
  3146. min: ArrayLike | _NoValueType | None = ...,
  3147. max: ArrayLike | _NoValueType | None = ...,
  3148. fill_value: _FillValue | None = None,
  3149. hardmask: bool = False,
  3150. dtype: None = None,
  3151. **kwargs: Unpack[_UFuncKwargs],
  3152. ) -> _MaskedArray[_ScalarT]: ...
  3153. @overload
  3154. def clip(
  3155. a: ArrayLike,
  3156. a_min: ArrayLike | None,
  3157. a_max: ArrayLike | None,
  3158. out: _MArrayT,
  3159. *,
  3160. min: ArrayLike | _NoValueType | None = ...,
  3161. max: ArrayLike | _NoValueType | None = ...,
  3162. fill_value: _FillValue | None = None,
  3163. hardmask: bool = False,
  3164. dtype: DTypeLike | None = None,
  3165. **kwargs: Unpack[_UFuncKwargs],
  3166. ) -> _MArrayT: ...
  3167. @overload
  3168. def clip(
  3169. a: ArrayLike,
  3170. a_min: ArrayLike | _NoValueType | None = ...,
  3171. a_max: ArrayLike | _NoValueType | None = ...,
  3172. *,
  3173. out: _MArrayT,
  3174. min: ArrayLike | _NoValueType | None = ...,
  3175. max: ArrayLike | _NoValueType | None = ...,
  3176. fill_value: _FillValue | None = None,
  3177. hardmask: bool = False,
  3178. dtype: DTypeLike | None = None,
  3179. **kwargs: Unpack[_UFuncKwargs],
  3180. ) -> _MArrayT: ...
  3181. @overload
  3182. def clip(
  3183. a: ArrayLike,
  3184. a_min: ArrayLike | _NoValueType | None = ...,
  3185. a_max: ArrayLike | _NoValueType | None = ...,
  3186. out: None = None,
  3187. *,
  3188. min: ArrayLike | _NoValueType | None = ...,
  3189. max: ArrayLike | _NoValueType | None = ...,
  3190. fill_value: _FillValue | None = None,
  3191. hardmask: bool = False,
  3192. dtype: DTypeLike | None = None,
  3193. **kwargs: Unpack[_UFuncKwargs],
  3194. ) -> Incomplete: ...
  3195. # keep in sync with `_core.multiarray.ones`
  3196. @overload
  3197. def empty(
  3198. shape: SupportsIndex,
  3199. dtype: None = None,
  3200. order: _OrderCF = "C",
  3201. *,
  3202. device: Literal["cpu"] | None = None,
  3203. like: _SupportsArrayFunc | None = None,
  3204. fill_value: _FillValue | None = None,
  3205. hardmask: bool = False,
  3206. ) -> MaskedArray[tuple[int], np.dtype[np.float64]]: ...
  3207. @overload
  3208. def empty(
  3209. shape: SupportsIndex,
  3210. dtype: _DTypeT | _SupportsDType[_DTypeT],
  3211. order: _OrderCF = "C",
  3212. *,
  3213. device: Literal["cpu"] | None = None,
  3214. like: _SupportsArrayFunc | None = None,
  3215. fill_value: _FillValue | None = None,
  3216. hardmask: bool = False,
  3217. ) -> MaskedArray[tuple[int], _DTypeT]: ...
  3218. @overload
  3219. def empty(
  3220. shape: SupportsIndex,
  3221. dtype: type[_ScalarT],
  3222. order: _OrderCF = "C",
  3223. *,
  3224. device: Literal["cpu"] | None = None,
  3225. like: _SupportsArrayFunc | None = None,
  3226. fill_value: _FillValue | None = None,
  3227. hardmask: bool = False,
  3228. ) -> MaskedArray[tuple[int], np.dtype[_ScalarT]]: ...
  3229. @overload
  3230. def empty(
  3231. shape: SupportsIndex,
  3232. dtype: DTypeLike | None = None,
  3233. order: _OrderCF = "C",
  3234. *,
  3235. device: Literal["cpu"] | None = None,
  3236. like: _SupportsArrayFunc | None = None,
  3237. fill_value: _FillValue | None = None,
  3238. hardmask: bool = False,
  3239. ) -> MaskedArray[tuple[int]]: ...
  3240. @overload # known shape
  3241. def empty(
  3242. shape: _AnyShapeT,
  3243. dtype: None = None,
  3244. order: _OrderCF = "C",
  3245. *,
  3246. device: Literal["cpu"] | None = None,
  3247. like: _SupportsArrayFunc | None = None,
  3248. fill_value: _FillValue | None = None,
  3249. hardmask: bool = False,
  3250. ) -> MaskedArray[_AnyShapeT, np.dtype[np.float64]]: ...
  3251. @overload
  3252. def empty(
  3253. shape: _AnyShapeT,
  3254. dtype: _DTypeT | _SupportsDType[_DTypeT],
  3255. order: _OrderCF = "C",
  3256. *,
  3257. device: Literal["cpu"] | None = None,
  3258. like: _SupportsArrayFunc | None = None,
  3259. fill_value: _FillValue | None = None,
  3260. hardmask: bool = False,
  3261. ) -> MaskedArray[_AnyShapeT, _DTypeT]: ...
  3262. @overload
  3263. def empty(
  3264. shape: _AnyShapeT,
  3265. dtype: type[_ScalarT],
  3266. order: _OrderCF = "C",
  3267. *,
  3268. device: Literal["cpu"] | None = None,
  3269. like: _SupportsArrayFunc | None = None,
  3270. fill_value: _FillValue | None = None,
  3271. hardmask: bool = False,
  3272. ) -> MaskedArray[_AnyShapeT, np.dtype[_ScalarT]]: ...
  3273. @overload
  3274. def empty(
  3275. shape: _AnyShapeT,
  3276. dtype: DTypeLike | None = None,
  3277. order: _OrderCF = "C",
  3278. *,
  3279. device: Literal["cpu"] | None = None,
  3280. like: _SupportsArrayFunc | None = None,
  3281. fill_value: _FillValue | None = None,
  3282. hardmask: bool = False,
  3283. ) -> MaskedArray[_AnyShapeT]: ...
  3284. @overload # unknown shape
  3285. def empty(
  3286. shape: _ShapeLike,
  3287. dtype: None = None,
  3288. order: _OrderCF = "C",
  3289. *,
  3290. device: Literal["cpu"] | None = None,
  3291. like: _SupportsArrayFunc | None = None,
  3292. fill_value: _FillValue | None = None,
  3293. hardmask: bool = False,
  3294. ) -> _MaskedArray[np.float64]: ...
  3295. @overload
  3296. def empty(
  3297. shape: _ShapeLike,
  3298. dtype: _DTypeT | _SupportsDType[_DTypeT],
  3299. order: _OrderCF = "C",
  3300. *,
  3301. device: Literal["cpu"] | None = None,
  3302. like: _SupportsArrayFunc | None = None,
  3303. fill_value: _FillValue | None = None,
  3304. hardmask: bool = False,
  3305. ) -> MaskedArray[_AnyShape, _DTypeT]: ...
  3306. @overload
  3307. def empty(
  3308. shape: _ShapeLike,
  3309. dtype: type[_ScalarT],
  3310. order: _OrderCF = "C",
  3311. *,
  3312. device: Literal["cpu"] | None = None,
  3313. like: _SupportsArrayFunc | None = None,
  3314. fill_value: _FillValue | None = None,
  3315. hardmask: bool = False,
  3316. ) -> _MaskedArray[_ScalarT]: ...
  3317. @overload
  3318. def empty(
  3319. shape: _ShapeLike,
  3320. dtype: DTypeLike | None = None,
  3321. *,
  3322. device: Literal["cpu"] | None = None,
  3323. like: _SupportsArrayFunc | None = None,
  3324. fill_value: _FillValue | None = None,
  3325. hardmask: bool = False,
  3326. ) -> MaskedArray: ...
  3327. # keep in sync with `_core.multiarray.empty_like`
  3328. @overload
  3329. def empty_like(
  3330. a: _MArrayT,
  3331. /,
  3332. dtype: None = None,
  3333. order: _OrderKACF = "K",
  3334. subok: bool = True,
  3335. shape: _ShapeLike | None = None,
  3336. *,
  3337. device: Literal["cpu"] | None = None,
  3338. ) -> _MArrayT: ...
  3339. @overload
  3340. def empty_like(
  3341. a: _ArrayLike[_ScalarT],
  3342. /,
  3343. dtype: None = None,
  3344. order: _OrderKACF = "K",
  3345. subok: bool = True,
  3346. shape: _ShapeLike | None = None,
  3347. *,
  3348. device: Literal["cpu"] | None = None,
  3349. ) -> _MaskedArray[_ScalarT]: ...
  3350. @overload
  3351. def empty_like(
  3352. a: Incomplete,
  3353. /,
  3354. dtype: _DTypeLike[_ScalarT],
  3355. order: _OrderKACF = "K",
  3356. subok: bool = True,
  3357. shape: _ShapeLike | None = None,
  3358. *,
  3359. device: Literal["cpu"] | None = None,
  3360. ) -> _MaskedArray[_ScalarT]: ...
  3361. @overload
  3362. def empty_like(
  3363. a: Incomplete,
  3364. /,
  3365. dtype: DTypeLike | None = None,
  3366. order: _OrderKACF = "K",
  3367. subok: bool = True,
  3368. shape: _ShapeLike | None = None,
  3369. *,
  3370. device: Literal["cpu"] | None = None,
  3371. ) -> _MaskedArray[Incomplete]: ...
  3372. # This is a bit of a hack to avoid having to duplicate all those `empty` overloads for
  3373. # `ones` and `zeros`, that relies on the fact that empty/zeros/ones have identical
  3374. # type signatures, but may cause some type-checkers to report incorrect names in case
  3375. # of user errors. Mypy and Pyright seem to handle this just fine.
  3376. ones = empty
  3377. ones_like = empty_like
  3378. zeros = empty
  3379. zeros_like = empty_like
  3380. # keep in sync with `_core.multiarray.frombuffer`
  3381. @overload
  3382. def frombuffer(
  3383. buffer: Buffer,
  3384. *,
  3385. count: SupportsIndex = -1,
  3386. offset: SupportsIndex = 0,
  3387. like: _SupportsArrayFunc | None = None,
  3388. ) -> _MaskedArray[np.float64]: ...
  3389. @overload
  3390. def frombuffer(
  3391. buffer: Buffer,
  3392. dtype: _DTypeLike[_ScalarT],
  3393. count: SupportsIndex = -1,
  3394. offset: SupportsIndex = 0,
  3395. *,
  3396. like: _SupportsArrayFunc | None = None,
  3397. ) -> _MaskedArray[_ScalarT]: ...
  3398. @overload
  3399. def frombuffer(
  3400. buffer: Buffer,
  3401. dtype: DTypeLike | None = float,
  3402. count: SupportsIndex = -1,
  3403. offset: SupportsIndex = 0,
  3404. *,
  3405. like: _SupportsArrayFunc | None = None,
  3406. ) -> _MaskedArray[Incomplete]: ...
  3407. # keep roughly in sync with `_core.numeric.fromfunction`
  3408. def fromfunction(
  3409. function: Callable[..., np.ndarray[_ShapeT, _DTypeT]],
  3410. shape: Sequence[int],
  3411. *,
  3412. dtype: DTypeLike | None = float,
  3413. like: _SupportsArrayFunc | None = None,
  3414. **kwargs: object,
  3415. ) -> MaskedArray[_ShapeT, _DTypeT]: ...
  3416. # keep roughly in sync with `_core.numeric.identity`
  3417. @overload
  3418. def identity(
  3419. n: int,
  3420. dtype: None = None,
  3421. *,
  3422. like: _SupportsArrayFunc | None = None,
  3423. fill_value: _FillValue | None = None,
  3424. hardmask: bool = False,
  3425. ) -> MaskedArray[tuple[int, int], np.dtype[np.float64]]: ...
  3426. @overload
  3427. def identity(
  3428. n: int,
  3429. dtype: _DTypeLike[_ScalarT],
  3430. *,
  3431. like: _SupportsArrayFunc | None = None,
  3432. fill_value: _FillValue | None = None,
  3433. hardmask: bool = False,
  3434. ) -> MaskedArray[tuple[int, int], np.dtype[_ScalarT]]: ...
  3435. @overload
  3436. def identity(
  3437. n: int,
  3438. dtype: DTypeLike | None = None,
  3439. *,
  3440. like: _SupportsArrayFunc | None = None,
  3441. fill_value: _FillValue | None = None,
  3442. hardmask: bool = False,
  3443. ) -> MaskedArray[tuple[int, int], np.dtype[Incomplete]]: ...
  3444. # keep roughly in sync with `_core.numeric.indices`
  3445. @overload
  3446. def indices(
  3447. dimensions: Sequence[int],
  3448. dtype: type[int] = int,
  3449. sparse: Literal[False] = False,
  3450. *,
  3451. fill_value: _FillValue | None = None,
  3452. hardmask: bool = False,
  3453. ) -> _MaskedArray[np.intp]: ...
  3454. @overload
  3455. def indices(
  3456. dimensions: Sequence[int],
  3457. dtype: type[int],
  3458. sparse: Literal[True],
  3459. *,
  3460. fill_value: _FillValue | None = None,
  3461. hardmask: bool = False,
  3462. ) -> tuple[_MaskedArray[np.intp], ...]: ...
  3463. @overload
  3464. def indices(
  3465. dimensions: Sequence[int],
  3466. dtype: type[int] = int,
  3467. *,
  3468. sparse: Literal[True],
  3469. fill_value: _FillValue | None = None,
  3470. hardmask: bool = False,
  3471. ) -> tuple[_MaskedArray[np.intp], ...]: ...
  3472. @overload
  3473. def indices(
  3474. dimensions: Sequence[int],
  3475. dtype: _DTypeLike[_ScalarT],
  3476. sparse: Literal[False] = False,
  3477. *,
  3478. fill_value: _FillValue | None = None,
  3479. hardmask: bool = False,
  3480. ) -> _MaskedArray[_ScalarT]: ...
  3481. @overload
  3482. def indices(
  3483. dimensions: Sequence[int],
  3484. dtype: _DTypeLike[_ScalarT],
  3485. sparse: Literal[True],
  3486. *,
  3487. fill_value: _FillValue | None = None,
  3488. hardmask: bool = False,
  3489. ) -> tuple[_MaskedArray[_ScalarT], ...]: ...
  3490. @overload
  3491. def indices(
  3492. dimensions: Sequence[int],
  3493. dtype: DTypeLike | None = int,
  3494. sparse: Literal[False] = False,
  3495. *,
  3496. fill_value: _FillValue | None = None,
  3497. hardmask: bool = False,
  3498. ) -> _MaskedArray[Incomplete]: ...
  3499. @overload
  3500. def indices(
  3501. dimensions: Sequence[int],
  3502. dtype: DTypeLike | None,
  3503. sparse: Literal[True],
  3504. *,
  3505. fill_value: _FillValue | None = None,
  3506. hardmask: bool = False,
  3507. ) -> tuple[_MaskedArray[Incomplete], ...]: ...
  3508. @overload
  3509. def indices(
  3510. dimensions: Sequence[int],
  3511. dtype: DTypeLike | None = int,
  3512. *,
  3513. sparse: Literal[True],
  3514. fill_value: _FillValue | None = None,
  3515. hardmask: bool = False,
  3516. ) -> tuple[_MaskedArray[Incomplete], ...]: ...
  3517. # keep roughly in sync with `_core.fromnumeric.squeeze`
  3518. @overload
  3519. def squeeze(
  3520. a: _ArrayLike[_ScalarT],
  3521. axis: _ShapeLike | None = None,
  3522. *,
  3523. fill_value: _FillValue | None = None,
  3524. hardmask: bool = False,
  3525. ) -> _MaskedArray[_ScalarT]: ...
  3526. @overload
  3527. def squeeze(
  3528. a: ArrayLike,
  3529. axis: _ShapeLike | None = None,
  3530. *,
  3531. fill_value: _FillValue | None = None,
  3532. hardmask: bool = False,
  3533. ) -> _MaskedArray[Incomplete]: ...