core.pyi 128 KB

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