__init__.pyi 231 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202
  1. # ruff: noqa: I001
  2. import builtins
  3. import sys
  4. import mmap
  5. import ctypes as ct
  6. import array as _array
  7. import datetime as dt
  8. import inspect
  9. from abc import abstractmethod
  10. from types import EllipsisType, ModuleType, TracebackType, MappingProxyType, GenericAlias
  11. from decimal import Decimal
  12. from fractions import Fraction
  13. from uuid import UUID
  14. import numpy as np
  15. from numpy.__config__ import show as show_config
  16. from numpy._pytesttester import PytestTester
  17. from numpy._core._internal import _ctypes
  18. from numpy._typing import ( # type: ignore[deprecated]
  19. # Arrays
  20. ArrayLike,
  21. NDArray,
  22. _SupportsArray,
  23. _NestedSequence,
  24. _ArrayLike,
  25. _ArrayLikeBool_co,
  26. _ArrayLikeUInt_co,
  27. _ArrayLikeInt,
  28. _ArrayLikeInt_co,
  29. _ArrayLikeFloat64_co,
  30. _ArrayLikeFloat_co,
  31. _ArrayLikeComplex128_co,
  32. _ArrayLikeComplex_co,
  33. _ArrayLikeNumber_co,
  34. _ArrayLikeObject_co,
  35. _ArrayLikeBytes_co,
  36. _ArrayLikeStr_co,
  37. _ArrayLikeString_co,
  38. _ArrayLikeTD64_co,
  39. _ArrayLikeDT64_co,
  40. # DTypes
  41. DTypeLike,
  42. _DTypeLike,
  43. _DTypeLikeVoid,
  44. _VoidDTypeLike,
  45. # Shapes
  46. _AnyShape,
  47. _Shape,
  48. _ShapeLike,
  49. # Scalars
  50. _CharLike_co,
  51. _IntLike_co,
  52. _FloatLike_co,
  53. _TD64Like_co,
  54. _NumberLike_co,
  55. _ScalarLike_co,
  56. # `number` precision
  57. NBitBase,
  58. # NOTE: Do not remove the extended precision bit-types even if seemingly unused;
  59. # they're used by the mypy plugin
  60. _128Bit,
  61. _96Bit,
  62. _64Bit,
  63. _32Bit,
  64. _16Bit,
  65. _8Bit,
  66. _NBitByte,
  67. _NBitShort,
  68. _NBitIntC,
  69. _NBitIntP,
  70. _NBitLong,
  71. _NBitLongLong,
  72. _NBitHalf,
  73. _NBitSingle,
  74. _NBitDouble,
  75. _NBitLongDouble,
  76. # Character codes
  77. _BoolCodes,
  78. _UInt8Codes,
  79. _UInt16Codes,
  80. _UInt32Codes,
  81. _UInt64Codes,
  82. _Int8Codes,
  83. _Int16Codes,
  84. _Int32Codes,
  85. _Int64Codes,
  86. _Float16Codes,
  87. _Float32Codes,
  88. _Float64Codes,
  89. _Complex64Codes,
  90. _Complex128Codes,
  91. _ByteCodes,
  92. _ShortCodes,
  93. _IntCCodes,
  94. _IntPCodes,
  95. _LongCodes,
  96. _LongLongCodes,
  97. _UByteCodes,
  98. _UShortCodes,
  99. _UIntCCodes,
  100. _UIntPCodes,
  101. _ULongCodes,
  102. _ULongLongCodes,
  103. _HalfCodes,
  104. _SingleCodes,
  105. _DoubleCodes,
  106. _LongDoubleCodes,
  107. _CSingleCodes,
  108. _CDoubleCodes,
  109. _CLongDoubleCodes,
  110. _DT64Codes,
  111. _TD64Codes,
  112. _StrCodes,
  113. _BytesCodes,
  114. _VoidCodes,
  115. _ObjectCodes,
  116. _StringCodes,
  117. _UnsignedIntegerCodes,
  118. _SignedIntegerCodes,
  119. _IntegerCodes,
  120. _FloatingCodes,
  121. _ComplexFloatingCodes,
  122. _InexactCodes,
  123. _CharacterCodes,
  124. # Ufuncs
  125. _UFunc_Nin1_Nout1,
  126. _UFunc_Nin2_Nout1,
  127. _UFunc_Nin1_Nout2,
  128. _UFunc_Nin2_Nout2,
  129. _GUFunc_Nin2_Nout1,
  130. )
  131. # NOTE: Numpy's mypy plugin is used for removing the types unavailable to the specific platform
  132. from numpy._typing._extended_precision import (
  133. float96,
  134. float128,
  135. complex192,
  136. complex256,
  137. )
  138. from numpy._array_api_info import __array_namespace_info__
  139. from collections.abc import (
  140. Callable,
  141. Iterable,
  142. Iterator,
  143. Mapping,
  144. Sequence,
  145. )
  146. if sys.version_info >= (3, 12):
  147. from collections.abc import Buffer as _SupportsBuffer
  148. else:
  149. _SupportsBuffer: TypeAlias = (
  150. bytes
  151. | bytearray
  152. | memoryview
  153. | _array.array[Any]
  154. | mmap.mmap
  155. | NDArray[Any]
  156. | generic
  157. )
  158. from typing import (
  159. Any,
  160. ClassVar,
  161. Final,
  162. Generic,
  163. Literal as L,
  164. LiteralString,
  165. Never,
  166. NoReturn,
  167. Protocol,
  168. Self,
  169. SupportsComplex,
  170. SupportsFloat,
  171. SupportsInt,
  172. SupportsIndex,
  173. TypeAlias,
  174. TypedDict,
  175. final,
  176. overload,
  177. type_check_only,
  178. )
  179. # NOTE: `typing_extensions` and `_typeshed` are always available in `.pyi` stubs, even
  180. # if not available at runtime. This is because the `typeshed` stubs for the standard
  181. # library include `typing_extensions` stubs:
  182. # https://github.com/python/typeshed/blob/main/stdlib/typing_extensions.pyi
  183. from _typeshed import Incomplete, StrOrBytesPath, SupportsFlush, SupportsLenAndGetItem, SupportsWrite
  184. from typing_extensions import CapsuleType, TypeVar, deprecated, override
  185. from numpy import (
  186. char,
  187. core,
  188. ctypeslib,
  189. dtypes,
  190. exceptions,
  191. f2py,
  192. fft,
  193. lib,
  194. linalg,
  195. ma,
  196. polynomial,
  197. random,
  198. rec,
  199. strings,
  200. testing,
  201. typing,
  202. )
  203. # available through `__getattr__`, but not in `__all__` or `__dir__`
  204. from numpy import (
  205. __config__ as __config__,
  206. matlib as matlib,
  207. matrixlib as matrixlib,
  208. version as version,
  209. )
  210. if sys.version_info < (3, 12):
  211. from numpy import distutils as distutils
  212. from numpy._core.records import (
  213. record,
  214. recarray,
  215. )
  216. from numpy._core.function_base import (
  217. linspace,
  218. logspace,
  219. geomspace,
  220. )
  221. from numpy._core.fromnumeric import (
  222. take,
  223. reshape,
  224. choose,
  225. repeat,
  226. put,
  227. swapaxes,
  228. transpose,
  229. matrix_transpose,
  230. partition,
  231. argpartition,
  232. sort,
  233. argsort,
  234. argmax,
  235. argmin,
  236. searchsorted,
  237. resize,
  238. squeeze,
  239. diagonal,
  240. trace,
  241. ravel,
  242. nonzero,
  243. shape,
  244. compress,
  245. clip,
  246. sum,
  247. all,
  248. any,
  249. cumsum,
  250. cumulative_sum,
  251. ptp,
  252. max,
  253. min,
  254. amax,
  255. amin,
  256. prod,
  257. cumprod,
  258. cumulative_prod,
  259. ndim,
  260. size,
  261. around,
  262. round,
  263. mean,
  264. std,
  265. var,
  266. )
  267. from numpy._core._asarray import (
  268. require,
  269. )
  270. from numpy._core._type_aliases import (
  271. sctypeDict,
  272. )
  273. from numpy._core._ufunc_config import (
  274. seterr,
  275. geterr,
  276. setbufsize,
  277. getbufsize,
  278. seterrcall,
  279. geterrcall,
  280. errstate,
  281. )
  282. from numpy._core.arrayprint import (
  283. set_printoptions,
  284. get_printoptions,
  285. array2string,
  286. format_float_scientific,
  287. format_float_positional,
  288. array_repr,
  289. array_str,
  290. printoptions,
  291. )
  292. from numpy._core.einsumfunc import (
  293. einsum,
  294. einsum_path,
  295. )
  296. from numpy._core.getlimits import (
  297. finfo,
  298. iinfo,
  299. )
  300. from numpy._core.multiarray import (
  301. array,
  302. empty_like,
  303. empty,
  304. zeros,
  305. concatenate,
  306. inner,
  307. where,
  308. lexsort,
  309. can_cast,
  310. min_scalar_type,
  311. result_type,
  312. dot,
  313. vdot,
  314. bincount,
  315. copyto,
  316. putmask,
  317. packbits,
  318. unpackbits,
  319. shares_memory,
  320. may_share_memory,
  321. asarray,
  322. asanyarray,
  323. ascontiguousarray,
  324. asfortranarray,
  325. arange,
  326. busday_count,
  327. busday_offset,
  328. datetime_as_string,
  329. datetime_data,
  330. frombuffer,
  331. fromfile,
  332. fromiter,
  333. is_busday,
  334. promote_types,
  335. fromstring,
  336. frompyfunc,
  337. nested_iters,
  338. flagsobj,
  339. )
  340. from numpy._core.numeric import (
  341. zeros_like,
  342. ones,
  343. ones_like,
  344. full,
  345. full_like,
  346. count_nonzero,
  347. isfortran,
  348. argwhere,
  349. flatnonzero,
  350. correlate,
  351. convolve,
  352. outer,
  353. tensordot,
  354. roll,
  355. rollaxis,
  356. moveaxis,
  357. cross,
  358. indices,
  359. fromfunction,
  360. isscalar,
  361. binary_repr,
  362. base_repr,
  363. identity,
  364. allclose,
  365. isclose,
  366. array_equal,
  367. array_equiv,
  368. astype,
  369. )
  370. from numpy._core.numerictypes import (
  371. isdtype,
  372. issubdtype,
  373. ScalarType,
  374. typecodes,
  375. )
  376. from numpy._core.shape_base import (
  377. atleast_1d,
  378. atleast_2d,
  379. atleast_3d,
  380. block,
  381. hstack,
  382. stack,
  383. vstack,
  384. unstack,
  385. )
  386. from ._expired_attrs_2_0 import __expired_attributes__ as __expired_attributes__
  387. from ._globals import _CopyMode as _CopyMode
  388. from ._globals import _NoValue as _NoValue, _NoValueType
  389. from numpy.lib import (
  390. scimath as emath,
  391. )
  392. from numpy.lib._arraypad_impl import (
  393. pad,
  394. )
  395. from numpy.lib._arraysetops_impl import (
  396. ediff1d,
  397. intersect1d,
  398. isin,
  399. setdiff1d,
  400. setxor1d,
  401. union1d,
  402. unique,
  403. unique_all,
  404. unique_counts,
  405. unique_inverse,
  406. unique_values,
  407. )
  408. from numpy.lib._function_base_impl import ( # type: ignore[deprecated]
  409. select,
  410. piecewise,
  411. trim_zeros,
  412. copy,
  413. iterable,
  414. percentile,
  415. diff,
  416. gradient,
  417. angle,
  418. unwrap,
  419. sort_complex,
  420. flip,
  421. rot90,
  422. extract,
  423. place,
  424. asarray_chkfinite,
  425. average,
  426. digitize,
  427. cov,
  428. corrcoef,
  429. median,
  430. sinc,
  431. hamming,
  432. hanning,
  433. bartlett,
  434. blackman,
  435. kaiser,
  436. trapezoid,
  437. i0,
  438. meshgrid,
  439. delete,
  440. insert,
  441. append,
  442. interp,
  443. quantile,
  444. vectorize,
  445. )
  446. from numpy.lib._histograms_impl import (
  447. histogram_bin_edges,
  448. histogram,
  449. histogramdd,
  450. )
  451. from numpy.lib._index_tricks_impl import (
  452. ndenumerate,
  453. ndindex,
  454. ravel_multi_index,
  455. unravel_index,
  456. mgrid,
  457. ogrid,
  458. r_,
  459. c_,
  460. s_,
  461. index_exp,
  462. ix_,
  463. fill_diagonal,
  464. diag_indices,
  465. diag_indices_from,
  466. )
  467. from numpy.lib._nanfunctions_impl import (
  468. nansum,
  469. nanmax,
  470. nanmin,
  471. nanargmax,
  472. nanargmin,
  473. nanmean,
  474. nanmedian,
  475. nanpercentile,
  476. nanvar,
  477. nanstd,
  478. nanprod,
  479. nancumsum,
  480. nancumprod,
  481. nanquantile,
  482. )
  483. from numpy.lib._npyio_impl import (
  484. savetxt,
  485. loadtxt,
  486. genfromtxt,
  487. load,
  488. save,
  489. savez,
  490. savez_compressed,
  491. fromregex,
  492. )
  493. from numpy.lib._polynomial_impl import (
  494. poly,
  495. roots,
  496. polyint,
  497. polyder,
  498. polyadd,
  499. polysub,
  500. polymul,
  501. polydiv,
  502. polyval,
  503. polyfit,
  504. )
  505. from numpy.lib._shape_base_impl import ( # type: ignore[deprecated]
  506. column_stack,
  507. row_stack,
  508. dstack,
  509. array_split,
  510. split,
  511. hsplit,
  512. vsplit,
  513. dsplit,
  514. apply_over_axes,
  515. expand_dims,
  516. apply_along_axis,
  517. kron,
  518. tile,
  519. take_along_axis,
  520. put_along_axis,
  521. )
  522. from numpy.lib._stride_tricks_impl import (
  523. broadcast_to,
  524. broadcast_arrays,
  525. broadcast_shapes,
  526. )
  527. from numpy.lib._twodim_base_impl import (
  528. diag,
  529. diagflat,
  530. eye,
  531. fliplr,
  532. flipud,
  533. tri,
  534. triu,
  535. tril,
  536. vander,
  537. histogram2d,
  538. mask_indices,
  539. tril_indices,
  540. tril_indices_from,
  541. triu_indices,
  542. triu_indices_from,
  543. )
  544. from numpy.lib._type_check_impl import (
  545. mintypecode,
  546. real,
  547. imag,
  548. iscomplex,
  549. isreal,
  550. iscomplexobj,
  551. isrealobj,
  552. nan_to_num,
  553. real_if_close,
  554. typename,
  555. common_type,
  556. )
  557. from numpy.lib._ufunclike_impl import (
  558. fix,
  559. isposinf,
  560. isneginf,
  561. )
  562. from numpy.lib._utils_impl import (
  563. get_include,
  564. info,
  565. show_runtime,
  566. )
  567. from numpy.matrixlib import (
  568. asmatrix,
  569. bmat,
  570. matrix,
  571. )
  572. __all__ = [ # noqa: RUF022
  573. # __numpy_submodules__
  574. "char", "core", "ctypeslib", "dtypes", "exceptions", "f2py", "fft", "lib", "linalg",
  575. "ma", "polynomial", "random", "rec", "strings", "test", "testing", "typing",
  576. # _core.__all__
  577. "abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2", "bitwise_invert",
  578. "bitwise_left_shift", "bitwise_right_shift", "concat", "pow", "permute_dims",
  579. "memmap", "sctypeDict", "record", "recarray",
  580. # _core.numeric.__all__
  581. "newaxis", "ndarray", "flatiter", "nditer", "nested_iters", "ufunc", "arange",
  582. "array", "asarray", "asanyarray", "ascontiguousarray", "asfortranarray", "zeros",
  583. "count_nonzero", "empty", "broadcast", "dtype", "fromstring", "fromfile",
  584. "frombuffer", "from_dlpack", "where", "argwhere", "copyto", "concatenate",
  585. "lexsort", "astype", "can_cast", "promote_types", "min_scalar_type", "result_type",
  586. "isfortran", "empty_like", "zeros_like", "ones_like", "correlate", "convolve",
  587. "inner", "dot", "outer", "vdot", "roll", "rollaxis", "moveaxis", "cross",
  588. "tensordot", "little_endian", "fromiter", "array_equal", "array_equiv", "indices",
  589. "fromfunction", "isclose", "isscalar", "binary_repr", "base_repr", "ones",
  590. "identity", "allclose", "putmask", "flatnonzero", "inf", "nan", "False_", "True_",
  591. "bitwise_not", "full", "full_like", "matmul", "vecdot", "vecmat",
  592. "shares_memory", "may_share_memory",
  593. "all", "amax", "amin", "any", "argmax", "argmin", "argpartition", "argsort",
  594. "around", "choose", "clip", "compress", "cumprod", "cumsum", "cumulative_prod",
  595. "cumulative_sum", "diagonal", "mean", "max", "min", "matrix_transpose", "ndim",
  596. "nonzero", "partition", "prod", "ptp", "put", "ravel", "repeat", "reshape",
  597. "resize", "round", "searchsorted", "shape", "size", "sort", "squeeze", "std", "sum",
  598. "swapaxes", "take", "trace", "transpose", "var",
  599. "absolute", "add", "arccos", "arccosh", "arcsin", "arcsinh", "arctan", "arctan2",
  600. "arctanh", "bitwise_and", "bitwise_or", "bitwise_xor", "cbrt", "ceil", "conj",
  601. "conjugate", "copysign", "cos", "cosh", "bitwise_count", "deg2rad", "degrees",
  602. "divide", "divmod", "e", "equal", "euler_gamma", "exp", "exp2", "expm1", "fabs",
  603. "floor", "floor_divide", "float_power", "fmax", "fmin", "fmod", "frexp",
  604. "frompyfunc", "gcd", "greater", "greater_equal", "heaviside", "hypot", "invert",
  605. "isfinite", "isinf", "isnan", "isnat", "lcm", "ldexp", "left_shift", "less",
  606. "less_equal", "log", "log10", "log1p", "log2", "logaddexp", "logaddexp2",
  607. "logical_and", "logical_not", "logical_or", "logical_xor", "matvec", "maximum", "minimum",
  608. "mod", "modf", "multiply", "negative", "nextafter", "not_equal", "pi", "positive",
  609. "power", "rad2deg", "radians", "reciprocal", "remainder", "right_shift", "rint",
  610. "sign", "signbit", "sin", "sinh", "spacing", "sqrt", "square", "subtract", "tan",
  611. "tanh", "true_divide", "trunc", "ScalarType", "typecodes", "issubdtype",
  612. "datetime_data", "datetime_as_string", "busday_offset", "busday_count", "is_busday",
  613. "busdaycalendar", "isdtype",
  614. "complexfloating", "character", "unsignedinteger", "inexact", "generic", "floating",
  615. "integer", "signedinteger", "number", "flexible", "bool", "float16", "float32",
  616. "float64", "longdouble", "complex64", "complex128", "clongdouble",
  617. "bytes_", "str_", "void", "object_", "datetime64", "timedelta64", "int8", "byte",
  618. "uint8", "ubyte", "int16", "short", "uint16", "ushort", "int32", "intc", "uint32",
  619. "uintc", "int64", "long", "uint64", "ulong", "longlong", "ulonglong", "intp",
  620. "uintp", "double", "cdouble", "single", "csingle", "half", "bool_", "int_", "uint",
  621. "float96", "float128", "complex192", "complex256",
  622. "array2string", "array_str", "array_repr", "set_printoptions", "get_printoptions",
  623. "printoptions", "format_float_positional", "format_float_scientific", "require",
  624. "seterr", "geterr", "setbufsize", "getbufsize", "seterrcall", "geterrcall",
  625. "errstate",
  626. # _core.function_base.__all__
  627. "logspace", "linspace", "geomspace",
  628. # _core.getlimits.__all__
  629. "finfo", "iinfo",
  630. # _core.shape_base.__all__
  631. "atleast_1d", "atleast_2d", "atleast_3d", "block", "hstack", "stack", "unstack",
  632. "vstack",
  633. # _core.einsumfunc.__all__
  634. "einsum", "einsum_path",
  635. # matrixlib.__all__
  636. "matrix", "bmat", "asmatrix",
  637. # lib._histograms_impl.__all__
  638. "histogram", "histogramdd", "histogram_bin_edges",
  639. # lib._nanfunctions_impl.__all__
  640. "nansum", "nanmax", "nanmin", "nanargmax", "nanargmin", "nanmean", "nanmedian",
  641. "nanpercentile", "nanvar", "nanstd", "nanprod", "nancumsum", "nancumprod",
  642. "nanquantile",
  643. # lib._function_base_impl.__all__
  644. "select", "piecewise", "trim_zeros", "copy", "iterable", "percentile", "diff",
  645. "gradient", "angle", "unwrap", "sort_complex", "flip", "rot90", "extract", "place",
  646. "vectorize", "asarray_chkfinite", "average", "bincount", "digitize", "cov",
  647. "corrcoef", "median", "sinc", "hamming", "hanning", "bartlett", "blackman",
  648. "kaiser", "trapezoid", "i0", "meshgrid", "delete", "insert", "append",
  649. "interp", "quantile",
  650. # lib._twodim_base_impl.__all__
  651. "diag", "diagflat", "eye", "fliplr", "flipud", "tri", "triu", "tril", "vander",
  652. "histogram2d", "mask_indices", "tril_indices", "tril_indices_from", "triu_indices",
  653. "triu_indices_from",
  654. # lib._shape_base_impl.__all__
  655. "column_stack", "dstack", "array_split", "split", "hsplit", "vsplit", "dsplit",
  656. "apply_over_axes", "expand_dims", "apply_along_axis", "kron", "tile",
  657. "take_along_axis", "put_along_axis", "row_stack",
  658. # lib._type_check_impl.__all__
  659. "iscomplexobj", "isrealobj", "imag", "iscomplex", "isreal", "nan_to_num", "real",
  660. "real_if_close", "typename", "mintypecode", "common_type",
  661. # lib._arraysetops_impl.__all__
  662. "ediff1d", "intersect1d", "isin", "setdiff1d", "setxor1d", "union1d",
  663. "unique", "unique_all", "unique_counts", "unique_inverse", "unique_values",
  664. # lib._ufunclike_impl.__all__
  665. "fix", "isneginf", "isposinf",
  666. # lib._arraypad_impl.__all__
  667. "pad",
  668. # lib._utils_impl.__all__
  669. "get_include", "info", "show_runtime",
  670. # lib._stride_tricks_impl.__all__
  671. "broadcast_to", "broadcast_arrays", "broadcast_shapes",
  672. # lib._polynomial_impl.__all__
  673. "poly", "roots", "polyint", "polyder", "polyadd", "polysub", "polymul", "polydiv",
  674. "polyval", "poly1d", "polyfit",
  675. # lib._npyio_impl.__all__
  676. "savetxt", "loadtxt", "genfromtxt", "load", "save", "savez", "savez_compressed",
  677. "packbits", "unpackbits", "fromregex",
  678. # lib._index_tricks_impl.__all__
  679. "ravel_multi_index", "unravel_index", "mgrid", "ogrid", "r_", "c_", "s_",
  680. "index_exp", "ix_", "ndenumerate", "ndindex", "fill_diagonal", "diag_indices",
  681. "diag_indices_from",
  682. # __init__.__all__
  683. "emath", "show_config", "__version__", "__array_namespace_info__",
  684. ] # fmt: skip
  685. ### Constrained types (for internal use only)
  686. # Only use these for functions; never as generic type parameter.
  687. _AnyStr = TypeVar("_AnyStr", LiteralString, str, bytes)
  688. _AnyShapeT = TypeVar(
  689. "_AnyShapeT",
  690. tuple[()], # 0-d
  691. tuple[int], # 1-d
  692. tuple[int, int], # 2-d
  693. tuple[int, int, int], # 3-d
  694. tuple[int, int, int, int], # 4-d
  695. tuple[int, int, int, int, int], # 5-d
  696. tuple[int, int, int, int, int, int], # 6-d
  697. tuple[int, int, int, int, int, int, int], # 7-d
  698. tuple[int, int, int, int, int, int, int, int], # 8-d
  699. tuple[int, ...], # N-d
  700. )
  701. _AnyTD64Item = TypeVar("_AnyTD64Item", dt.timedelta, int, None, dt.timedelta | int | None)
  702. _AnyDT64Arg = TypeVar("_AnyDT64Arg", dt.datetime, dt.date, None)
  703. _AnyDT64Item = TypeVar("_AnyDT64Item", dt.datetime, dt.date, int, None, dt.date, int | None)
  704. _AnyDate = TypeVar("_AnyDate", dt.date, dt.datetime)
  705. _AnyDateOrTime = TypeVar("_AnyDateOrTime", dt.date, dt.datetime, dt.timedelta)
  706. ### Type parameters (for internal use only)
  707. _T = TypeVar("_T")
  708. _T_co = TypeVar("_T_co", covariant=True)
  709. _T_contra = TypeVar("_T_contra", contravariant=True)
  710. _RealT_co = TypeVar("_RealT_co", covariant=True)
  711. _ImagT_co = TypeVar("_ImagT_co", covariant=True)
  712. _DTypeT = TypeVar("_DTypeT", bound=dtype)
  713. _DTypeT_co = TypeVar("_DTypeT_co", bound=dtype, default=dtype, covariant=True)
  714. _FlexDTypeT = TypeVar("_FlexDTypeT", bound=dtype[flexible])
  715. _ArrayT = TypeVar("_ArrayT", bound=ndarray)
  716. _ArrayT_co = TypeVar("_ArrayT_co", bound=ndarray, default=ndarray, covariant=True)
  717. _BoolArrayT = TypeVar("_BoolArrayT", bound=NDArray[np.bool])
  718. _IntegerArrayT = TypeVar("_IntegerArrayT", bound=NDArray[integer])
  719. _IntegralArrayT = TypeVar("_IntegralArrayT", bound=NDArray[np.bool | integer | object_])
  720. _FloatingArrayT = TypeVar("_FloatingArrayT", bound=NDArray[floating])
  721. _FloatingTimedeltaArrayT = TypeVar("_FloatingTimedeltaArrayT", bound=NDArray[floating | timedelta64])
  722. _ComplexFloatingArrayT = TypeVar("_ComplexFloatingArrayT", bound=NDArray[complexfloating])
  723. _InexactArrayT = TypeVar("_InexactArrayT", bound=NDArray[inexact])
  724. _InexactTimedeltaArrayT = TypeVar("_InexactTimedeltaArrayT", bound=NDArray[inexact | timedelta64])
  725. _NumberArrayT = TypeVar("_NumberArrayT", bound=NDArray[number])
  726. _NumberCharacterArrayT = TypeVar("_NumberCharacterArrayT", bound=ndarray[Any, dtype[number | character] | dtypes.StringDType])
  727. _TimedeltaArrayT = TypeVar("_TimedeltaArrayT", bound=NDArray[timedelta64])
  728. _TimeArrayT = TypeVar("_TimeArrayT", bound=NDArray[datetime64 | timedelta64])
  729. _ObjectArrayT = TypeVar("_ObjectArrayT", bound=NDArray[object_])
  730. _BytesArrayT = TypeVar("_BytesArrayT", bound=NDArray[bytes_])
  731. _StringArrayT = TypeVar("_StringArrayT", bound=ndarray[Any, dtype[str_] | dtypes.StringDType])
  732. _RealArrayT = TypeVar("_RealArrayT", bound=NDArray[floating | integer | timedelta64 | np.bool | object_])
  733. _NumericArrayT = TypeVar("_NumericArrayT", bound=NDArray[number | timedelta64 | object_])
  734. _ShapeT = TypeVar("_ShapeT", bound=_Shape)
  735. _Shape1T = TypeVar("_Shape1T", bound=tuple[int, *tuple[int, ...]])
  736. _ShapeT_co = TypeVar("_ShapeT_co", bound=_Shape, default=_AnyShape, covariant=True)
  737. _2DShapeT_co = TypeVar("_2DShapeT_co", bound=_2D, default=_2D, covariant=True)
  738. _1NShapeT = TypeVar("_1NShapeT", bound=tuple[L[1], *tuple[L[1], ...]]) # (1,) | (1, 1) | (1, 1, 1) | ...
  739. _ScalarT = TypeVar("_ScalarT", bound=generic)
  740. _ScalarT_co = TypeVar("_ScalarT_co", bound=generic, default=Any, covariant=True)
  741. _NumberT = TypeVar("_NumberT", bound=number)
  742. _InexactT = TypeVar("_InexactT", bound=inexact)
  743. _RealNumberT = TypeVar("_RealNumberT", bound=floating | integer)
  744. _IntegerT = TypeVar("_IntegerT", bound=integer)
  745. _NonObjectScalarT = TypeVar("_NonObjectScalarT", bound=np.bool | number | flexible | datetime64 | timedelta64)
  746. _NBit = TypeVar("_NBit", bound=NBitBase, default=Any) # pyright: ignore[reportDeprecated]
  747. _NBit1 = TypeVar("_NBit1", bound=NBitBase, default=Any) # pyright: ignore[reportDeprecated]
  748. _NBit2 = TypeVar("_NBit2", bound=NBitBase, default=_NBit1) # pyright: ignore[reportDeprecated]
  749. _ItemT_co = TypeVar("_ItemT_co", default=Any, covariant=True)
  750. _BoolItemT = TypeVar("_BoolItemT", bound=builtins.bool)
  751. _BoolItemT_co = TypeVar("_BoolItemT_co", bound=builtins.bool, default=builtins.bool, covariant=True)
  752. _NumberItemT_co = TypeVar("_NumberItemT_co", bound=complex, default=int | float | complex, covariant=True)
  753. _InexactItemT_co = TypeVar("_InexactItemT_co", bound=complex, default=float | complex, covariant=True)
  754. _FlexibleItemT_co = TypeVar(
  755. "_FlexibleItemT_co",
  756. bound=_CharLike_co | tuple[Any, ...],
  757. default=_CharLike_co | tuple[Any, ...],
  758. covariant=True,
  759. )
  760. _CharacterItemT_co = TypeVar("_CharacterItemT_co", bound=_CharLike_co, default=_CharLike_co, covariant=True)
  761. _TD64ItemT_co = TypeVar("_TD64ItemT_co", bound=dt.timedelta | int | None, default=dt.timedelta | int | None, covariant=True)
  762. _DT64ItemT_co = TypeVar("_DT64ItemT_co", bound=dt.date | int | None, default=dt.date | int | None, covariant=True)
  763. _TD64UnitT = TypeVar("_TD64UnitT", bound=_TD64Unit, default=_TD64Unit)
  764. _BoolOrIntArrayT = TypeVar("_BoolOrIntArrayT", bound=NDArray[integer | np.bool])
  765. ### Type Aliases (for internal use only)
  766. _Falsy: TypeAlias = L[False, 0] | np.bool[L[False]]
  767. _Truthy: TypeAlias = L[True, 1] | np.bool[L[True]]
  768. _1D: TypeAlias = tuple[int]
  769. _2D: TypeAlias = tuple[int, int]
  770. _2Tuple: TypeAlias = tuple[_T, _T]
  771. _ArrayUInt_co: TypeAlias = NDArray[unsignedinteger | np.bool]
  772. _ArrayInt_co: TypeAlias = NDArray[integer | np.bool]
  773. _ArrayFloat64_co: TypeAlias = NDArray[floating[_64Bit] | float32 | float16 | integer | np.bool]
  774. _ArrayFloat_co: TypeAlias = NDArray[floating | integer | np.bool]
  775. _ArrayComplex128_co: TypeAlias = NDArray[number[_64Bit] | number[_32Bit] | float16 | integer | np.bool]
  776. _ArrayComplex_co: TypeAlias = NDArray[inexact | integer | np.bool]
  777. _ArrayNumber_co: TypeAlias = NDArray[number | np.bool]
  778. _ArrayTD64_co: TypeAlias = NDArray[timedelta64 | integer | np.bool]
  779. _Float64_co: TypeAlias = float | floating[_64Bit] | float32 | float16 | integer | np.bool
  780. _Complex64_co: TypeAlias = number[_32Bit] | number[_16Bit] | number[_8Bit] | builtins.bool | np.bool
  781. _Complex128_co: TypeAlias = complex | number[_64Bit] | _Complex64_co
  782. _ToIndex: TypeAlias = SupportsIndex | slice | EllipsisType | _ArrayLikeInt_co | None
  783. _ToIndices: TypeAlias = _ToIndex | tuple[_ToIndex, ...]
  784. _UnsignedIntegerCType: TypeAlias = type[
  785. ct.c_uint8 | ct.c_uint16 | ct.c_uint32 | ct.c_uint64
  786. | ct.c_ushort | ct.c_uint | ct.c_ulong | ct.c_ulonglong
  787. | ct.c_size_t | ct.c_void_p
  788. ] # fmt: skip
  789. _SignedIntegerCType: TypeAlias = type[
  790. ct.c_int8 | ct.c_int16 | ct.c_int32 | ct.c_int64
  791. | ct.c_short | ct.c_int | ct.c_long | ct.c_longlong
  792. | ct.c_ssize_t
  793. ] # fmt: skip
  794. _FloatingCType: TypeAlias = type[ct.c_float | ct.c_double | ct.c_longdouble]
  795. _IntegerCType: TypeAlias = _UnsignedIntegerCType | _SignedIntegerCType
  796. # some commonly used builtin types that are known to result in a
  797. # `dtype[object_]`, when their *type* is passed to the `dtype` constructor
  798. # NOTE: `builtins.object` should not be included here
  799. _BuiltinObjectLike: TypeAlias = (
  800. slice | Decimal | Fraction | UUID
  801. | dt.date | dt.time | dt.timedelta | dt.tzinfo
  802. | tuple[Any, ...] | list[Any] | set[Any] | frozenset[Any] | dict[Any, Any]
  803. ) # fmt: skip
  804. # Introduce an alias for `dtype` to avoid naming conflicts.
  805. _dtype: TypeAlias = dtype[_ScalarT]
  806. _ByteOrderChar: TypeAlias = L["<", ">", "=", "|"]
  807. # can be anything, is case-insensitive, and only the first character matters
  808. _ByteOrder: TypeAlias = L[
  809. "S", # swap the current order (default)
  810. "<", "L", "little", # little-endian
  811. ">", "B", "big", # big endian
  812. "=", "N", "native", # native order
  813. "|", "I", # ignore
  814. ] # fmt: skip
  815. _DTypeKind: TypeAlias = L[
  816. "b", # boolean
  817. "i", # signed integer
  818. "u", # unsigned integer
  819. "f", # floating-point
  820. "c", # complex floating-point
  821. "m", # timedelta64
  822. "M", # datetime64
  823. "O", # python object
  824. "S", # byte-string (fixed-width)
  825. "U", # unicode-string (fixed-width)
  826. "V", # void
  827. "T", # unicode-string (variable-width)
  828. ]
  829. _DTypeChar: TypeAlias = L[
  830. "?", # bool
  831. "b", # byte
  832. "B", # ubyte
  833. "h", # short
  834. "H", # ushort
  835. "i", # intc
  836. "I", # uintc
  837. "l", # long
  838. "L", # ulong
  839. "q", # longlong
  840. "Q", # ulonglong
  841. "e", # half
  842. "f", # single
  843. "d", # double
  844. "g", # longdouble
  845. "F", # csingle
  846. "D", # cdouble
  847. "G", # clongdouble
  848. "O", # object
  849. "S", # bytes_ (S0)
  850. "a", # bytes_ (deprecated)
  851. "U", # str_
  852. "V", # void
  853. "M", # datetime64
  854. "m", # timedelta64
  855. "c", # bytes_ (S1)
  856. "T", # StringDType
  857. ]
  858. _DTypeNum: TypeAlias = L[
  859. 0, # bool
  860. 1, # byte
  861. 2, # ubyte
  862. 3, # short
  863. 4, # ushort
  864. 5, # intc
  865. 6, # uintc
  866. 7, # long
  867. 8, # ulong
  868. 9, # longlong
  869. 10, # ulonglong
  870. 23, # half
  871. 11, # single
  872. 12, # double
  873. 13, # longdouble
  874. 14, # csingle
  875. 15, # cdouble
  876. 16, # clongdouble
  877. 17, # object
  878. 18, # bytes_
  879. 19, # str_
  880. 20, # void
  881. 21, # datetime64
  882. 22, # timedelta64
  883. 25, # no type
  884. 256, # user-defined
  885. 2056, # StringDType
  886. ]
  887. _DTypeBuiltinKind: TypeAlias = L[0, 1, 2]
  888. _ArrayAPIVersion: TypeAlias = L["2021.12", "2022.12", "2023.12", "2024.12"]
  889. _CastingKind: TypeAlias = L["no", "equiv", "safe", "same_kind", "same_value", "unsafe"]
  890. _OrderKACF: TypeAlias = L["K", "A", "C", "F"] | None
  891. _OrderACF: TypeAlias = L["A", "C", "F"] | None
  892. _OrderCF: TypeAlias = L["C", "F"] | None # noqa: PYI047
  893. _ModeKind: TypeAlias = L["raise", "wrap", "clip"]
  894. _PartitionKind: TypeAlias = L["introselect"]
  895. # in practice, only the first case-insensitive character is considered (so e.g.
  896. # "QuantumSort3000" will be interpreted as quicksort).
  897. _SortKind: TypeAlias = L[
  898. "Q", "quick", "quicksort",
  899. "M", "merge", "mergesort",
  900. "H", "heap", "heapsort",
  901. "S", "stable", "stablesort",
  902. ]
  903. _SortSide: TypeAlias = L["left", "right"]
  904. _ConvertibleToInt: TypeAlias = SupportsInt | SupportsIndex | _CharLike_co
  905. _ConvertibleToFloat: TypeAlias = SupportsFloat | SupportsIndex | _CharLike_co
  906. _ConvertibleToComplex: TypeAlias = SupportsComplex | SupportsFloat | SupportsIndex | _CharLike_co
  907. _ConvertibleToTD64: TypeAlias = dt.timedelta | int | _CharLike_co | character | number | timedelta64 | np.bool | None
  908. _ConvertibleToDT64: TypeAlias = dt.date | int | _CharLike_co | character | number | datetime64 | np.bool | None
  909. _NDIterFlagsKind: TypeAlias = L[
  910. "buffered",
  911. "c_index",
  912. "copy_if_overlap",
  913. "common_dtype",
  914. "delay_bufalloc",
  915. "external_loop",
  916. "f_index",
  917. "grow_inner", "growinner",
  918. "multi_index",
  919. "ranged",
  920. "refs_ok",
  921. "reduce_ok",
  922. "zerosize_ok",
  923. ]
  924. _NDIterFlagsOp: TypeAlias = L[
  925. "aligned",
  926. "allocate",
  927. "arraymask",
  928. "copy",
  929. "config",
  930. "nbo",
  931. "no_subtype",
  932. "no_broadcast",
  933. "overlap_assume_elementwise",
  934. "readonly",
  935. "readwrite",
  936. "updateifcopy",
  937. "virtual",
  938. "writeonly",
  939. "writemasked",
  940. ]
  941. _MemMapModeKind: TypeAlias = L[
  942. "readonly", "r",
  943. "copyonwrite", "c",
  944. "readwrite", "r+",
  945. "write", "w+",
  946. ]
  947. _DT64Date: TypeAlias = _HasDateAttributes | L["TODAY", "today", b"TODAY", b"today"]
  948. _DT64Now: TypeAlias = L["NOW", "now", b"NOW", b"now"]
  949. _NaTValue: TypeAlias = L["NAT", "NaT", "nat", b"NAT", b"NaT", b"nat"]
  950. _MonthUnit: TypeAlias = L["Y", "M", b"Y", b"M"]
  951. _DayUnit: TypeAlias = L["W", "D", b"W", b"D"]
  952. _DateUnit: TypeAlias = L[_MonthUnit, _DayUnit]
  953. _NativeTimeUnit: TypeAlias = L["h", "m", "s", "ms", "us", "μs", b"h", b"m", b"s", b"ms", b"us"]
  954. _IntTimeUnit: TypeAlias = L["ns", "ps", "fs", "as", b"ns", b"ps", b"fs", b"as"]
  955. _TimeUnit: TypeAlias = L[_NativeTimeUnit, _IntTimeUnit]
  956. _NativeTD64Unit: TypeAlias = L[_DayUnit, _NativeTimeUnit]
  957. _IntTD64Unit: TypeAlias = L[_MonthUnit, _IntTimeUnit]
  958. _TD64Unit: TypeAlias = L[_DateUnit, _TimeUnit]
  959. _TimeUnitSpec: TypeAlias = _TD64UnitT | tuple[_TD64UnitT, SupportsIndex]
  960. ### TypedDict's (for internal use only)
  961. @type_check_only
  962. class _FormerAttrsDict(TypedDict):
  963. object: LiteralString
  964. float: LiteralString
  965. complex: LiteralString
  966. str: LiteralString
  967. int: LiteralString
  968. ### Protocols (for internal use only)
  969. @final
  970. @type_check_only
  971. class _SupportsLT(Protocol):
  972. def __lt__(self, other: Any, /) -> Any: ...
  973. @final
  974. @type_check_only
  975. class _SupportsLE(Protocol):
  976. def __le__(self, other: Any, /) -> Any: ...
  977. @final
  978. @type_check_only
  979. class _SupportsGT(Protocol):
  980. def __gt__(self, other: Any, /) -> Any: ...
  981. @final
  982. @type_check_only
  983. class _SupportsGE(Protocol):
  984. def __ge__(self, other: Any, /) -> Any: ...
  985. @type_check_only
  986. class _SupportsFileMethods(SupportsFlush, Protocol):
  987. # Protocol for representing file-like-objects accepted by `ndarray.tofile` and `fromfile`
  988. def fileno(self) -> SupportsIndex: ...
  989. def tell(self) -> SupportsIndex: ...
  990. def seek(self, offset: int, whence: int, /) -> object: ...
  991. @type_check_only
  992. class _SupportsFileMethodsRW(SupportsWrite[bytes], _SupportsFileMethods, Protocol): ...
  993. @type_check_only
  994. class _SupportsDLPack(Protocol[_T_contra]):
  995. def __dlpack__(self, /, *, stream: _T_contra | None = None) -> CapsuleType: ...
  996. @type_check_only
  997. class _HasDType(Protocol[_T_co]):
  998. @property
  999. def dtype(self, /) -> _T_co: ...
  1000. @type_check_only
  1001. class _HasRealAndImag(Protocol[_RealT_co, _ImagT_co]):
  1002. @property
  1003. def real(self, /) -> _RealT_co: ...
  1004. @property
  1005. def imag(self, /) -> _ImagT_co: ...
  1006. @type_check_only
  1007. class _HasTypeWithRealAndImag(Protocol[_RealT_co, _ImagT_co]):
  1008. @property
  1009. def type(self, /) -> type[_HasRealAndImag[_RealT_co, _ImagT_co]]: ...
  1010. @type_check_only
  1011. class _HasDTypeWithRealAndImag(Protocol[_RealT_co, _ImagT_co]):
  1012. @property
  1013. def dtype(self, /) -> _HasTypeWithRealAndImag[_RealT_co, _ImagT_co]: ...
  1014. @type_check_only
  1015. class _HasDateAttributes(Protocol):
  1016. # The `datetime64` constructors requires an object with the three attributes below,
  1017. # and thus supports datetime duck typing
  1018. @property
  1019. def day(self) -> int: ...
  1020. @property
  1021. def month(self) -> int: ...
  1022. @property
  1023. def year(self) -> int: ...
  1024. ### Mixins (for internal use only)
  1025. @type_check_only
  1026. class _RealMixin:
  1027. @property
  1028. def real(self) -> Self: ...
  1029. @property
  1030. def imag(self) -> Self: ...
  1031. @type_check_only
  1032. class _RoundMixin:
  1033. @overload
  1034. def __round__(self, /, ndigits: None = None) -> int: ...
  1035. @overload
  1036. def __round__(self, /, ndigits: SupportsIndex) -> Self: ...
  1037. @type_check_only
  1038. class _IntegralMixin(_RealMixin):
  1039. @property
  1040. def numerator(self) -> Self: ...
  1041. @property
  1042. def denominator(self) -> L[1]: ...
  1043. def is_integer(self, /) -> L[True]: ...
  1044. ### Public API
  1045. __version__: Final[LiteralString] = ...
  1046. e: Final[float] = ...
  1047. euler_gamma: Final[float] = ...
  1048. pi: Final[float] = ...
  1049. inf: Final[float] = ...
  1050. nan: Final[float] = ...
  1051. little_endian: Final[builtins.bool] = ...
  1052. False_: Final[np.bool[L[False]]] = ...
  1053. True_: Final[np.bool[L[True]]] = ...
  1054. newaxis: Final[None] = None
  1055. # not in __all__
  1056. __NUMPY_SETUP__: Final[L[False]] = False
  1057. __numpy_submodules__: Final[set[LiteralString]] = ...
  1058. __former_attrs__: Final[_FormerAttrsDict] = ...
  1059. __future_scalars__: Final[set[L["bytes", "str", "object"]]] = ...
  1060. __array_api_version__: Final[L["2024.12"]] = "2024.12"
  1061. test: Final[PytestTester] = ...
  1062. @type_check_only
  1063. class _DTypeMeta(type):
  1064. @property
  1065. def type(cls, /) -> type[generic] | None: ...
  1066. @property
  1067. def _abstract(cls, /) -> bool: ...
  1068. @property
  1069. def _is_numeric(cls, /) -> bool: ...
  1070. @property
  1071. def _parametric(cls, /) -> bool: ...
  1072. @property
  1073. def _legacy(cls, /) -> bool: ...
  1074. @final
  1075. class dtype(Generic[_ScalarT_co], metaclass=_DTypeMeta):
  1076. names: tuple[builtins.str, ...] | None
  1077. def __hash__(self) -> int: ...
  1078. # `None` results in the default dtype
  1079. @overload
  1080. def __new__(
  1081. cls,
  1082. dtype: type[float64 | ct.c_double] | _Float64Codes | _DoubleCodes | None,
  1083. align: builtins.bool = False,
  1084. copy: builtins.bool = False,
  1085. *,
  1086. metadata: dict[builtins.str, Any] = ...
  1087. ) -> dtype[float64]: ...
  1088. # Overload for `dtype` instances, scalar types, and instances that have a
  1089. # `dtype: dtype[_ScalarT]` attribute
  1090. @overload
  1091. def __new__(
  1092. cls,
  1093. dtype: _DTypeLike[_ScalarT],
  1094. align: builtins.bool = False,
  1095. copy: builtins.bool = False,
  1096. *,
  1097. metadata: dict[builtins.str, Any] = ...,
  1098. ) -> dtype[_ScalarT]: ...
  1099. # Builtin types
  1100. #
  1101. # NOTE: Typecheckers act as if `bool <: int <: float <: complex <: object`,
  1102. # even though at runtime `int`, `float`, and `complex` aren't subtypes..
  1103. # This makes it impossible to express e.g. "a float that isn't an int",
  1104. # since type checkers treat `_: float` like `_: float | int`.
  1105. #
  1106. # For more details, see:
  1107. # - https://github.com/numpy/numpy/issues/27032#issuecomment-2278958251
  1108. # - https://typing.readthedocs.io/en/latest/spec/special-types.html#special-cases-for-float-and-complex
  1109. @overload
  1110. def __new__(
  1111. cls,
  1112. dtype: type[builtins.bool | np.bool | ct.c_bool] | _BoolCodes,
  1113. align: builtins.bool = False,
  1114. copy: builtins.bool = False,
  1115. *,
  1116. metadata: dict[str, Any] = ...,
  1117. ) -> dtype[np.bool]: ...
  1118. @overload
  1119. def __new__(
  1120. cls,
  1121. dtype: type[int], # also accepts `type[builtins.bool]`
  1122. align: builtins.bool = False,
  1123. copy: builtins.bool = False,
  1124. *,
  1125. metadata: dict[str, Any] = ...,
  1126. ) -> dtype[int_ | np.bool]: ...
  1127. @overload
  1128. def __new__(
  1129. cls,
  1130. dtype: type[float], # also accepts `type[int | bool]`
  1131. align: builtins.bool = False,
  1132. copy: builtins.bool = False,
  1133. *,
  1134. metadata: dict[str, Any] = ...,
  1135. ) -> dtype[float64 | int_ | np.bool]: ...
  1136. @overload
  1137. def __new__(
  1138. cls,
  1139. dtype: type[complex], # also accepts `type[float | int | bool]`
  1140. align: builtins.bool = False,
  1141. copy: builtins.bool = False,
  1142. *,
  1143. metadata: dict[str, Any] = ...,
  1144. ) -> dtype[complex128 | float64 | int_ | np.bool]: ...
  1145. @overload
  1146. def __new__(
  1147. cls,
  1148. dtype: type[bytes | ct.c_char] | _BytesCodes,
  1149. align: builtins.bool = False,
  1150. copy: builtins.bool = False,
  1151. *,
  1152. metadata: dict[str, Any] = ...,
  1153. ) -> dtype[bytes_]: ...
  1154. @overload
  1155. def __new__(
  1156. cls,
  1157. dtype: type[str] | _StrCodes,
  1158. align: builtins.bool = False,
  1159. copy: builtins.bool = False,
  1160. *,
  1161. metadata: dict[str, Any] = ...,
  1162. ) -> dtype[str_]: ...
  1163. # NOTE: These `memoryview` overloads assume PEP 688, which requires mypy to
  1164. # be run with the (undocumented) `--disable-memoryview-promotion` flag,
  1165. # This will be the default in a future mypy release, see:
  1166. # https://github.com/python/mypy/issues/15313
  1167. # Pyright / Pylance requires setting `disableBytesTypePromotions=true`,
  1168. # which is the default in strict mode
  1169. @overload
  1170. def __new__(
  1171. cls,
  1172. dtype: type[void | memoryview] | _VoidDTypeLike | _VoidCodes,
  1173. align: builtins.bool = False,
  1174. copy: builtins.bool = False,
  1175. *,
  1176. metadata: dict[str, Any] = ...,
  1177. ) -> dtype[void]: ...
  1178. # NOTE: `_: type[object]` would also accept e.g. `type[object | complex]`,
  1179. # and is therefore not included here
  1180. @overload
  1181. def __new__(
  1182. cls,
  1183. dtype: type[object_ | _BuiltinObjectLike | ct.py_object[Any]] | _ObjectCodes,
  1184. align: builtins.bool = False,
  1185. copy: builtins.bool = False,
  1186. *,
  1187. metadata: dict[str, Any] = ...,
  1188. ) -> dtype[object_]: ...
  1189. # `unsignedinteger` string-based representations and ctypes
  1190. @overload
  1191. def __new__(
  1192. cls,
  1193. dtype: _UInt8Codes | _UByteCodes | type[ct.c_uint8 | ct.c_ubyte],
  1194. align: builtins.bool = False,
  1195. copy: builtins.bool = False,
  1196. *,
  1197. metadata: dict[builtins.str, Any] = ...,
  1198. ) -> dtype[uint8]: ...
  1199. @overload
  1200. def __new__(
  1201. cls,
  1202. dtype: _UInt16Codes | _UShortCodes | type[ct.c_uint16 | ct.c_ushort],
  1203. align: builtins.bool = False,
  1204. copy: builtins.bool = False,
  1205. *,
  1206. metadata: dict[builtins.str, Any] = ...,
  1207. ) -> dtype[uint16]: ...
  1208. @overload
  1209. def __new__(
  1210. cls,
  1211. dtype: _UInt32Codes | _UIntCCodes | type[ct.c_uint32 | ct.c_uint],
  1212. align: builtins.bool = False,
  1213. copy: builtins.bool = False,
  1214. *,
  1215. metadata: dict[builtins.str, Any] = ...,
  1216. ) -> dtype[uint32]: ...
  1217. @overload
  1218. def __new__(
  1219. cls,
  1220. dtype: _UInt64Codes | _ULongLongCodes | type[ct.c_uint64 | ct.c_ulonglong],
  1221. align: builtins.bool = False,
  1222. copy: builtins.bool = False,
  1223. *,
  1224. metadata: dict[builtins.str, Any] = ...,
  1225. ) -> dtype[uint64]: ...
  1226. @overload
  1227. def __new__(
  1228. cls,
  1229. dtype: _UIntPCodes | type[ct.c_void_p | ct.c_size_t],
  1230. align: builtins.bool = False,
  1231. copy: builtins.bool = False,
  1232. *,
  1233. metadata: dict[builtins.str, Any] = ...,
  1234. ) -> dtype[uintp]: ...
  1235. @overload
  1236. def __new__(
  1237. cls,
  1238. dtype: _ULongCodes | type[ct.c_ulong],
  1239. align: builtins.bool = False,
  1240. copy: builtins.bool = False,
  1241. *,
  1242. metadata: dict[builtins.str, Any] = ...,
  1243. ) -> dtype[ulong]: ...
  1244. # `signedinteger` string-based representations and ctypes
  1245. @overload
  1246. def __new__(
  1247. cls,
  1248. dtype: _Int8Codes | _ByteCodes | type[ct.c_int8 | ct.c_byte],
  1249. align: builtins.bool = False,
  1250. copy: builtins.bool = False,
  1251. *,
  1252. metadata: dict[builtins.str, Any] = ...,
  1253. ) -> dtype[int8]: ...
  1254. @overload
  1255. def __new__(
  1256. cls,
  1257. dtype: _Int16Codes | _ShortCodes | type[ct.c_int16 | ct.c_short],
  1258. align: builtins.bool = False,
  1259. copy: builtins.bool = False,
  1260. *,
  1261. metadata: dict[builtins.str, Any] = ...,
  1262. ) -> dtype[int16]: ...
  1263. @overload
  1264. def __new__(
  1265. cls,
  1266. dtype: _Int32Codes | _IntCCodes | type[ct.c_int32 | ct.c_int],
  1267. align: builtins.bool = False,
  1268. copy: builtins.bool = False,
  1269. *,
  1270. metadata: dict[builtins.str, Any] = ...,
  1271. ) -> dtype[int32]: ...
  1272. @overload
  1273. def __new__(
  1274. cls,
  1275. dtype: _Int64Codes | _LongLongCodes | type[ct.c_int64 | ct.c_longlong],
  1276. align: builtins.bool = False,
  1277. copy: builtins.bool = False,
  1278. *,
  1279. metadata: dict[builtins.str, Any] = ...,
  1280. ) -> dtype[int64]: ...
  1281. @overload
  1282. def __new__(
  1283. cls,
  1284. dtype: _IntPCodes | type[intp | ct.c_ssize_t],
  1285. align: builtins.bool = False,
  1286. copy: builtins.bool = False,
  1287. *,
  1288. metadata: dict[builtins.str, Any] = ...,
  1289. ) -> dtype[intp]: ...
  1290. @overload
  1291. def __new__(
  1292. cls,
  1293. dtype: _LongCodes | type[ct.c_long],
  1294. align: builtins.bool = False,
  1295. copy: builtins.bool = False,
  1296. *,
  1297. metadata: dict[builtins.str, Any] = ...,
  1298. ) -> dtype[long]: ...
  1299. # `floating` string-based representations and ctypes
  1300. @overload
  1301. def __new__(
  1302. cls,
  1303. dtype: _Float16Codes | _HalfCodes,
  1304. align: builtins.bool = False,
  1305. copy: builtins.bool = False,
  1306. *,
  1307. metadata: dict[builtins.str, Any] = ...,
  1308. ) -> dtype[float16]: ...
  1309. @overload
  1310. def __new__(
  1311. cls,
  1312. dtype: _Float32Codes | _SingleCodes,
  1313. align: builtins.bool = False,
  1314. copy: builtins.bool = False,
  1315. *,
  1316. metadata: dict[builtins.str, Any] = ...,
  1317. ) -> dtype[float32]: ...
  1318. # float64 codes are covered by overload 1
  1319. @overload
  1320. def __new__(
  1321. cls,
  1322. dtype: _LongDoubleCodes | type[ct.c_longdouble],
  1323. align: builtins.bool = False,
  1324. copy: builtins.bool = False,
  1325. *,
  1326. metadata: dict[builtins.str, Any] = ...,
  1327. ) -> dtype[longdouble]: ...
  1328. # `complexfloating` string-based representations
  1329. @overload
  1330. def __new__(
  1331. cls,
  1332. dtype: _Complex64Codes | _CSingleCodes,
  1333. align: builtins.bool = False,
  1334. copy: builtins.bool = False,
  1335. *,
  1336. metadata: dict[builtins.str, Any] = ...,
  1337. ) -> dtype[complex64]: ...
  1338. @overload
  1339. def __new__(
  1340. cls,
  1341. dtype: _Complex128Codes | _CDoubleCodes,
  1342. align: builtins.bool = False,
  1343. copy: builtins.bool = False,
  1344. *,
  1345. metadata: dict[builtins.str, Any] = ...,
  1346. ) -> dtype[complex128]: ...
  1347. @overload
  1348. def __new__(
  1349. cls,
  1350. dtype: _CLongDoubleCodes,
  1351. align: builtins.bool = False,
  1352. copy: builtins.bool = False,
  1353. *,
  1354. metadata: dict[builtins.str, Any] = ...,
  1355. ) -> dtype[clongdouble]: ...
  1356. # Miscellaneous string-based representations and ctypes
  1357. @overload
  1358. def __new__(
  1359. cls,
  1360. dtype: _TD64Codes,
  1361. align: builtins.bool = False,
  1362. copy: builtins.bool = False,
  1363. *,
  1364. metadata: dict[builtins.str, Any] = ...,
  1365. ) -> dtype[timedelta64]: ...
  1366. @overload
  1367. def __new__(
  1368. cls,
  1369. dtype: _DT64Codes,
  1370. align: builtins.bool = False,
  1371. copy: builtins.bool = False,
  1372. *,
  1373. metadata: dict[builtins.str, Any] = ...,
  1374. ) -> dtype[datetime64]: ...
  1375. # `StringDType` requires special treatment because it has no scalar type
  1376. @overload
  1377. def __new__(
  1378. cls,
  1379. dtype: dtypes.StringDType | _StringCodes,
  1380. align: builtins.bool = False,
  1381. copy: builtins.bool = False,
  1382. *,
  1383. metadata: dict[builtins.str, Any] = ...,
  1384. ) -> dtypes.StringDType: ...
  1385. # Combined char-codes and ctypes, analogous to the scalar-type hierarchy
  1386. @overload
  1387. def __new__(
  1388. cls,
  1389. dtype: _UnsignedIntegerCodes | _UnsignedIntegerCType,
  1390. align: builtins.bool = False,
  1391. copy: builtins.bool = False,
  1392. *,
  1393. metadata: dict[builtins.str, Any] = ...,
  1394. ) -> dtype[unsignedinteger]: ...
  1395. @overload
  1396. def __new__(
  1397. cls,
  1398. dtype: _SignedIntegerCodes | _SignedIntegerCType,
  1399. align: builtins.bool = False,
  1400. copy: builtins.bool = False,
  1401. *,
  1402. metadata: dict[builtins.str, Any] = ...,
  1403. ) -> dtype[signedinteger]: ...
  1404. @overload
  1405. def __new__(
  1406. cls,
  1407. dtype: _IntegerCodes | _IntegerCType,
  1408. align: builtins.bool = False,
  1409. copy: builtins.bool = False,
  1410. *,
  1411. metadata: dict[builtins.str, Any] = ...,
  1412. ) -> dtype[integer]: ...
  1413. @overload
  1414. def __new__(
  1415. cls,
  1416. dtype: _FloatingCodes | _FloatingCType,
  1417. align: builtins.bool = False,
  1418. copy: builtins.bool = False,
  1419. *,
  1420. metadata: dict[builtins.str, Any] = ...,
  1421. ) -> dtype[floating]: ...
  1422. @overload
  1423. def __new__(
  1424. cls,
  1425. dtype: _ComplexFloatingCodes,
  1426. align: builtins.bool = False,
  1427. copy: builtins.bool = False,
  1428. *,
  1429. metadata: dict[builtins.str, Any] = ...,
  1430. ) -> dtype[complexfloating]: ...
  1431. @overload
  1432. def __new__(
  1433. cls,
  1434. dtype: _InexactCodes | _FloatingCType,
  1435. align: builtins.bool = False,
  1436. copy: builtins.bool = False,
  1437. *,
  1438. metadata: dict[builtins.str, Any] = ...,
  1439. ) -> dtype[inexact]: ...
  1440. @overload
  1441. def __new__(
  1442. cls,
  1443. dtype: _CharacterCodes | type[bytes | builtins.str | ct.c_char],
  1444. align: builtins.bool = False,
  1445. copy: builtins.bool = False,
  1446. *,
  1447. metadata: dict[str, Any] = ...,
  1448. ) -> dtype[character]: ...
  1449. # Handle strings that can't be expressed as literals; i.e. "S1", "S2", ...
  1450. @overload
  1451. def __new__(
  1452. cls,
  1453. dtype: builtins.str,
  1454. align: builtins.bool = False,
  1455. copy: builtins.bool = False,
  1456. *,
  1457. metadata: dict[builtins.str, Any] = ...,
  1458. ) -> dtype: ...
  1459. # Catch-all overload for object-likes
  1460. # NOTE: `object_ | Any` is NOT equivalent to `Any`. It is specified to behave
  1461. # like a "sum type" (a.k.a. variant type, discriminated union, or tagged union).
  1462. # So the union of a type and `Any` is not the same "union type" that all other
  1463. # unions are (by definition).
  1464. # https://typing.python.org/en/latest/spec/concepts.html#union-types
  1465. @overload
  1466. def __new__(
  1467. cls,
  1468. dtype: type[object],
  1469. align: builtins.bool = False,
  1470. copy: builtins.bool = False,
  1471. *,
  1472. metadata: dict[builtins.str, Any] = ...,
  1473. ) -> dtype[object_ | Any]: ...
  1474. def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
  1475. @overload
  1476. def __getitem__(self: dtype[void], key: list[builtins.str], /) -> dtype[void]: ...
  1477. @overload
  1478. def __getitem__(self: dtype[void], key: builtins.str | SupportsIndex, /) -> dtype: ...
  1479. # NOTE: In the future 1-based multiplications will also yield `flexible` dtypes
  1480. @overload
  1481. def __mul__(self: _DTypeT, value: L[1], /) -> _DTypeT: ...
  1482. @overload
  1483. def __mul__(self: _FlexDTypeT, value: SupportsIndex, /) -> _FlexDTypeT: ...
  1484. @overload
  1485. def __mul__(self, value: SupportsIndex, /) -> dtype[void]: ...
  1486. # NOTE: `__rmul__` seems to be broken when used in combination with
  1487. # literals as of mypy 0.902. Set the return-type to `dtype` for
  1488. # now for non-flexible dtypes.
  1489. @overload
  1490. def __rmul__(self: _FlexDTypeT, value: SupportsIndex, /) -> _FlexDTypeT: ...
  1491. @overload
  1492. def __rmul__(self, value: SupportsIndex, /) -> dtype: ...
  1493. def __gt__(self, other: DTypeLike | None, /) -> builtins.bool: ...
  1494. def __ge__(self, other: DTypeLike | None, /) -> builtins.bool: ...
  1495. def __lt__(self, other: DTypeLike | None, /) -> builtins.bool: ...
  1496. def __le__(self, other: DTypeLike | None, /) -> builtins.bool: ...
  1497. # Explicitly defined `__eq__` and `__ne__` to get around mypy's
  1498. # `strict_equality` option; even though their signatures are
  1499. # identical to their `object`-based counterpart
  1500. def __eq__(self, other: Any, /) -> builtins.bool: ...
  1501. def __ne__(self, other: Any, /) -> builtins.bool: ...
  1502. @property
  1503. def alignment(self) -> int: ...
  1504. @property
  1505. def base(self) -> dtype: ...
  1506. @property
  1507. def byteorder(self) -> _ByteOrderChar: ...
  1508. @property
  1509. def char(self) -> _DTypeChar: ...
  1510. @property
  1511. def descr(self) -> list[tuple[LiteralString, LiteralString] | tuple[LiteralString, LiteralString, _Shape]]: ...
  1512. @property
  1513. def fields(self,) -> MappingProxyType[LiteralString, tuple[dtype, int] | tuple[dtype, int, Any]] | None: ...
  1514. @property
  1515. def flags(self) -> int: ...
  1516. @property
  1517. def hasobject(self) -> builtins.bool: ...
  1518. @property
  1519. def isbuiltin(self) -> _DTypeBuiltinKind: ...
  1520. @property
  1521. def isnative(self) -> builtins.bool: ...
  1522. @property
  1523. def isalignedstruct(self) -> builtins.bool: ...
  1524. @property
  1525. def itemsize(self) -> int: ...
  1526. @property
  1527. def kind(self) -> _DTypeKind: ...
  1528. @property
  1529. def metadata(self) -> MappingProxyType[builtins.str, Any] | None: ...
  1530. @property
  1531. def name(self) -> LiteralString: ...
  1532. @property
  1533. def num(self) -> _DTypeNum: ...
  1534. @property
  1535. def shape(self) -> _AnyShape: ...
  1536. @property
  1537. def ndim(self) -> int: ...
  1538. @property
  1539. def subdtype(self) -> tuple[dtype, _AnyShape] | None: ...
  1540. def newbyteorder(self, new_order: _ByteOrder = ..., /) -> Self: ...
  1541. @property
  1542. def str(self) -> LiteralString: ...
  1543. @property
  1544. def type(self) -> type[_ScalarT_co]: ...
  1545. @final
  1546. class flatiter(Generic[_ArrayT_co]):
  1547. __hash__: ClassVar[None] = None # type: ignore[assignment] # pyright: ignore[reportIncompatibleMethodOverride]
  1548. @property
  1549. def base(self, /) -> _ArrayT_co: ...
  1550. @property
  1551. def coords(self: flatiter[ndarray[_ShapeT]], /) -> _ShapeT: ...
  1552. @property
  1553. def index(self, /) -> int: ...
  1554. # iteration
  1555. def __len__(self, /) -> int: ...
  1556. def __iter__(self, /) -> Self: ...
  1557. def __next__(self: flatiter[NDArray[_ScalarT]], /) -> _ScalarT: ...
  1558. # indexing
  1559. @overload # nd: _[()]
  1560. def __getitem__(self, key: tuple[()], /) -> _ArrayT_co: ...
  1561. @overload # 0d; _[<integer>]
  1562. def __getitem__(self: flatiter[NDArray[_ScalarT]], key: int | integer, /) -> _ScalarT: ...
  1563. @overload # 1d; _[[*<int>]], _[:], _[...]
  1564. def __getitem__(
  1565. self: flatiter[ndarray[Any, _DTypeT]],
  1566. key: list[int] | slice | EllipsisType | flatiter[NDArray[integer]],
  1567. /,
  1568. ) -> ndarray[tuple[int], _DTypeT]: ...
  1569. @overload # 2d; _[[*[*<int>]]]
  1570. def __getitem__(
  1571. self: flatiter[ndarray[Any, _DTypeT]],
  1572. key: list[list[int]],
  1573. /,
  1574. ) -> ndarray[tuple[int, int], _DTypeT]: ...
  1575. @overload # ?d
  1576. def __getitem__(
  1577. self: flatiter[ndarray[Any, _DTypeT]],
  1578. key: NDArray[integer] | _NestedSequence[int],
  1579. /,
  1580. ) -> ndarray[_AnyShape, _DTypeT]: ...
  1581. # NOTE: `__setitem__` operates via `unsafe` casting rules, and can thus accept any
  1582. # type accepted by the relevant underlying `np.generic` constructor, which isn't
  1583. # known statically. So we cannot meaningfully annotate the value parameter.
  1584. def __setitem__(self, key: slice | EllipsisType | _ArrayLikeInt, val: object, /) -> None: ...
  1585. # NOTE: `dtype` and `copy` are no-ops at runtime, so we don't support them here to
  1586. # avoid confusion
  1587. def __array__(
  1588. self: flatiter[ndarray[Any, _DTypeT]],
  1589. dtype: None = None,
  1590. /,
  1591. *,
  1592. copy: None = None,
  1593. ) -> ndarray[tuple[int], _DTypeT]: ...
  1594. # This returns a flat copy of the underlying array, not of the iterator itself
  1595. def copy(self: flatiter[ndarray[Any, _DTypeT]], /) -> ndarray[tuple[int], _DTypeT]: ...
  1596. @type_check_only
  1597. class _ArrayOrScalarCommon:
  1598. @property
  1599. def real(self, /) -> Any: ...
  1600. @property
  1601. def imag(self, /) -> Any: ...
  1602. @property
  1603. def T(self) -> Self: ...
  1604. @property
  1605. def mT(self) -> Self: ...
  1606. @property
  1607. def data(self) -> memoryview: ...
  1608. @property
  1609. def flags(self) -> flagsobj: ...
  1610. @property
  1611. def itemsize(self) -> int: ...
  1612. @property
  1613. def nbytes(self) -> int: ...
  1614. @property
  1615. def device(self) -> L["cpu"]: ...
  1616. def __bool__(self, /) -> builtins.bool: ...
  1617. def __int__(self, /) -> int: ...
  1618. def __float__(self, /) -> float: ...
  1619. def __copy__(self) -> Self: ...
  1620. def __deepcopy__(self, memo: dict[int, Any] | None, /) -> Self: ...
  1621. # TODO: How to deal with the non-commutative nature of `==` and `!=`?
  1622. # xref numpy/numpy#17368
  1623. def __eq__(self, other: Any, /) -> Any: ...
  1624. def __ne__(self, other: Any, /) -> Any: ...
  1625. def copy(self, order: _OrderKACF = ...) -> Self: ...
  1626. def dump(self, file: StrOrBytesPath | SupportsWrite[bytes]) -> None: ...
  1627. def dumps(self) -> bytes: ...
  1628. def tobytes(self, order: _OrderKACF = ...) -> bytes: ...
  1629. def tofile(self, fid: StrOrBytesPath | _SupportsFileMethods, /, sep: str = "", format: str = "%s") -> None: ...
  1630. # generics and 0d arrays return builtin scalars
  1631. def tolist(self) -> Any: ...
  1632. def to_device(self, device: L["cpu"], /, *, stream: int | Any | None = ...) -> Self: ...
  1633. # NOTE: for `generic`, these two methods don't do anything
  1634. def fill(self, /, value: Incomplete) -> None: ...
  1635. def put(self, indices: _ArrayLikeInt_co, values: ArrayLike, /, mode: _ModeKind = "raise") -> None: ...
  1636. # NOTE: even on `generic` this seems to work
  1637. def setflags(
  1638. self,
  1639. /,
  1640. *,
  1641. write: builtins.bool | None = None,
  1642. align: builtins.bool | None = None,
  1643. uic: builtins.bool | None = None,
  1644. ) -> None: ...
  1645. @property
  1646. def __array_interface__(self) -> dict[str, Any]: ...
  1647. @property
  1648. def __array_priority__(self) -> float: ...
  1649. @property
  1650. def __array_struct__(self) -> CapsuleType: ... # builtins.PyCapsule
  1651. def __array_namespace__(self, /, *, api_version: _ArrayAPIVersion | None = None) -> ModuleType: ...
  1652. def __setstate__(self, state: tuple[
  1653. SupportsIndex, # version
  1654. _ShapeLike, # Shape
  1655. _DTypeT_co, # DType
  1656. np.bool, # F-continuous
  1657. bytes | list[Any], # Data
  1658. ], /) -> None: ...
  1659. def conj(self) -> Self: ...
  1660. def conjugate(self) -> Self: ...
  1661. def argsort(
  1662. self,
  1663. axis: SupportsIndex | None = ...,
  1664. kind: _SortKind | None = ...,
  1665. order: str | Sequence[str] | None = ...,
  1666. *,
  1667. stable: builtins.bool | None = ...,
  1668. ) -> NDArray[intp]: ...
  1669. @overload # axis=None (default), out=None (default), keepdims=False (default)
  1670. def argmax(self, /, axis: None = None, out: None = None, *, keepdims: L[False] = False) -> intp: ...
  1671. @overload # axis=index, out=None (default)
  1672. def argmax(self, /, axis: SupportsIndex, out: None = None, *, keepdims: builtins.bool = False) -> Any: ...
  1673. @overload # axis=index, out=ndarray
  1674. def argmax(self, /, axis: SupportsIndex | None, out: _BoolOrIntArrayT, *, keepdims: builtins.bool = False) -> _BoolOrIntArrayT: ...
  1675. @overload
  1676. def argmax(self, /, axis: SupportsIndex | None = None, *, out: _BoolOrIntArrayT, keepdims: builtins.bool = False) -> _BoolOrIntArrayT: ...
  1677. @overload # axis=None (default), out=None (default), keepdims=False (default)
  1678. def argmin(self, /, axis: None = None, out: None = None, *, keepdims: L[False] = False) -> intp: ...
  1679. @overload # axis=index, out=None (default)
  1680. def argmin(self, /, axis: SupportsIndex, out: None = None, *, keepdims: builtins.bool = False) -> Any: ...
  1681. @overload # axis=index, out=ndarray
  1682. def argmin(self, /, axis: SupportsIndex | None, out: _BoolOrIntArrayT, *, keepdims: builtins.bool = False) -> _BoolOrIntArrayT: ...
  1683. @overload
  1684. def argmin(self, /, axis: SupportsIndex | None = None, *, out: _BoolOrIntArrayT, keepdims: builtins.bool = False) -> _BoolOrIntArrayT: ...
  1685. # Keep in sync with `MaskedArray.round`
  1686. @overload # out=None (default)
  1687. def round(self, /, decimals: SupportsIndex = 0, out: None = None) -> Self: ...
  1688. @overload # out=ndarray
  1689. def round(self, /, decimals: SupportsIndex, out: _ArrayT) -> _ArrayT: ...
  1690. @overload
  1691. def round(self, /, decimals: SupportsIndex = 0, *, out: _ArrayT) -> _ArrayT: ...
  1692. @overload # out=None (default)
  1693. def choose(self, /, choices: ArrayLike, out: None = None, mode: _ModeKind = "raise") -> NDArray[Any]: ...
  1694. @overload # out=ndarray
  1695. def choose(self, /, choices: ArrayLike, out: _ArrayT, mode: _ModeKind = "raise") -> _ArrayT: ...
  1696. # TODO: Annotate kwargs with an unpacked `TypedDict`
  1697. @overload # out: None (default)
  1698. def clip(self, /, min: ArrayLike, max: ArrayLike | None = None, out: None = None, **kwargs: Any) -> NDArray[Any]: ...
  1699. @overload
  1700. def clip(self, /, min: None, max: ArrayLike, out: None = None, **kwargs: Any) -> NDArray[Any]: ...
  1701. @overload
  1702. def clip(self, /, min: None = None, *, max: ArrayLike, out: None = None, **kwargs: Any) -> NDArray[Any]: ...
  1703. @overload # out: ndarray
  1704. def clip(self, /, min: ArrayLike, max: ArrayLike | None, out: _ArrayT, **kwargs: Any) -> _ArrayT: ...
  1705. @overload
  1706. def clip(self, /, min: ArrayLike, max: ArrayLike | None = None, *, out: _ArrayT, **kwargs: Any) -> _ArrayT: ...
  1707. @overload
  1708. def clip(self, /, min: None, max: ArrayLike, out: _ArrayT, **kwargs: Any) -> _ArrayT: ...
  1709. @overload
  1710. def clip(self, /, min: None = None, *, max: ArrayLike, out: _ArrayT, **kwargs: Any) -> _ArrayT: ...
  1711. @overload
  1712. def compress(self, /, condition: _ArrayLikeInt_co, axis: SupportsIndex | None = None, out: None = None) -> NDArray[Any]: ...
  1713. @overload
  1714. def compress(self, /, condition: _ArrayLikeInt_co, axis: SupportsIndex | None, out: _ArrayT) -> _ArrayT: ...
  1715. @overload
  1716. def compress(self, /, condition: _ArrayLikeInt_co, axis: SupportsIndex | None = None, *, out: _ArrayT) -> _ArrayT: ...
  1717. # Keep in sync with `MaskedArray.cumprod`
  1718. @overload # out: None (default)
  1719. def cumprod(self, /, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, out: None = None) -> NDArray[Any]: ...
  1720. @overload # out: ndarray
  1721. def cumprod(self, /, axis: SupportsIndex | None, dtype: DTypeLike | None, out: _ArrayT) -> _ArrayT: ...
  1722. @overload
  1723. def cumprod(self, /, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, *, out: _ArrayT) -> _ArrayT: ...
  1724. # Keep in sync with `MaskedArray.cumsum`
  1725. @overload # out: None (default)
  1726. def cumsum(self, /, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, out: None = None) -> NDArray[Any]: ...
  1727. @overload # out: ndarray
  1728. def cumsum(self, /, axis: SupportsIndex | None, dtype: DTypeLike | None, out: _ArrayT) -> _ArrayT: ...
  1729. @overload
  1730. def cumsum(self, /, axis: SupportsIndex | None = None, dtype: DTypeLike | None = None, *, out: _ArrayT) -> _ArrayT: ...
  1731. @overload
  1732. def max(
  1733. self,
  1734. /,
  1735. axis: _ShapeLike | None = None,
  1736. out: None = None,
  1737. *,
  1738. keepdims: builtins.bool | _NoValueType = ...,
  1739. initial: _NumberLike_co | _NoValueType = ...,
  1740. where: _ArrayLikeBool_co | _NoValueType = ...,
  1741. ) -> Any: ...
  1742. @overload
  1743. def max(
  1744. self,
  1745. /,
  1746. axis: _ShapeLike | None,
  1747. out: _ArrayT,
  1748. *,
  1749. keepdims: builtins.bool | _NoValueType = ...,
  1750. initial: _NumberLike_co | _NoValueType = ...,
  1751. where: _ArrayLikeBool_co | _NoValueType = ...,
  1752. ) -> _ArrayT: ...
  1753. @overload
  1754. def max(
  1755. self,
  1756. /,
  1757. axis: _ShapeLike | None = None,
  1758. *,
  1759. out: _ArrayT,
  1760. keepdims: builtins.bool | _NoValueType = ...,
  1761. initial: _NumberLike_co | _NoValueType = ...,
  1762. where: _ArrayLikeBool_co | _NoValueType = ...,
  1763. ) -> _ArrayT: ...
  1764. @overload
  1765. def min(
  1766. self,
  1767. /,
  1768. axis: _ShapeLike | None = None,
  1769. out: None = None,
  1770. *,
  1771. keepdims: builtins.bool | _NoValueType = ...,
  1772. initial: _NumberLike_co | _NoValueType = ...,
  1773. where: _ArrayLikeBool_co | _NoValueType = ...,
  1774. ) -> Any: ...
  1775. @overload
  1776. def min(
  1777. self,
  1778. /,
  1779. axis: _ShapeLike | None,
  1780. out: _ArrayT,
  1781. *,
  1782. keepdims: builtins.bool | _NoValueType = ...,
  1783. initial: _NumberLike_co | _NoValueType = ...,
  1784. where: _ArrayLikeBool_co | _NoValueType = ...,
  1785. ) -> _ArrayT: ...
  1786. @overload
  1787. def min(
  1788. self,
  1789. /,
  1790. axis: _ShapeLike | None = None,
  1791. *,
  1792. out: _ArrayT,
  1793. keepdims: builtins.bool | _NoValueType = ...,
  1794. initial: _NumberLike_co | _NoValueType = ...,
  1795. where: _ArrayLikeBool_co | _NoValueType = ...,
  1796. ) -> _ArrayT: ...
  1797. @overload
  1798. def sum(
  1799. self,
  1800. /,
  1801. axis: _ShapeLike | None = None,
  1802. dtype: DTypeLike | None = None,
  1803. out: None = None,
  1804. *,
  1805. keepdims: builtins.bool | _NoValueType = ...,
  1806. initial: _NumberLike_co | _NoValueType = ...,
  1807. where: _ArrayLikeBool_co | _NoValueType = ...,
  1808. ) -> Any: ...
  1809. @overload
  1810. def sum(
  1811. self,
  1812. /,
  1813. axis: _ShapeLike | None,
  1814. dtype: DTypeLike | None,
  1815. out: _ArrayT,
  1816. *,
  1817. keepdims: builtins.bool | _NoValueType = ...,
  1818. initial: _NumberLike_co | _NoValueType = ...,
  1819. where: _ArrayLikeBool_co | _NoValueType = ...,
  1820. ) -> _ArrayT: ...
  1821. @overload
  1822. def sum(
  1823. self,
  1824. /,
  1825. axis: _ShapeLike | None = None,
  1826. dtype: DTypeLike | None = None,
  1827. *,
  1828. out: _ArrayT,
  1829. keepdims: builtins.bool | _NoValueType = ...,
  1830. initial: _NumberLike_co | _NoValueType = ...,
  1831. where: _ArrayLikeBool_co | _NoValueType = ...,
  1832. ) -> _ArrayT: ...
  1833. @overload
  1834. def prod(
  1835. self,
  1836. /,
  1837. axis: _ShapeLike | None = None,
  1838. dtype: DTypeLike | None = None,
  1839. out: None = None,
  1840. *,
  1841. keepdims: builtins.bool | _NoValueType = ...,
  1842. initial: _NumberLike_co | _NoValueType = ...,
  1843. where: _ArrayLikeBool_co | _NoValueType = ...,
  1844. ) -> Any: ...
  1845. @overload
  1846. def prod(
  1847. self,
  1848. /,
  1849. axis: _ShapeLike | None,
  1850. dtype: DTypeLike | None,
  1851. out: _ArrayT,
  1852. *,
  1853. keepdims: builtins.bool | _NoValueType = ...,
  1854. initial: _NumberLike_co | _NoValueType = ...,
  1855. where: _ArrayLikeBool_co | _NoValueType = ...,
  1856. ) -> _ArrayT: ...
  1857. @overload
  1858. def prod(
  1859. self,
  1860. /,
  1861. axis: _ShapeLike | None = None,
  1862. dtype: DTypeLike | None = None,
  1863. *,
  1864. out: _ArrayT,
  1865. keepdims: builtins.bool | _NoValueType = ...,
  1866. initial: _NumberLike_co | _NoValueType = ...,
  1867. where: _ArrayLikeBool_co | _NoValueType = ...,
  1868. ) -> _ArrayT: ...
  1869. @overload
  1870. def mean(
  1871. self,
  1872. axis: _ShapeLike | None = None,
  1873. dtype: DTypeLike | None = None,
  1874. out: None = None,
  1875. *,
  1876. keepdims: builtins.bool | _NoValueType = ...,
  1877. where: _ArrayLikeBool_co | _NoValueType = ...,
  1878. ) -> Any: ...
  1879. @overload
  1880. def mean(
  1881. self,
  1882. /,
  1883. axis: _ShapeLike | None,
  1884. dtype: DTypeLike | None,
  1885. out: _ArrayT,
  1886. *,
  1887. keepdims: builtins.bool | _NoValueType = ...,
  1888. where: _ArrayLikeBool_co | _NoValueType = ...,
  1889. ) -> _ArrayT: ...
  1890. @overload
  1891. def mean(
  1892. self,
  1893. /,
  1894. axis: _ShapeLike | None = None,
  1895. dtype: DTypeLike | None = None,
  1896. *,
  1897. out: _ArrayT,
  1898. keepdims: builtins.bool | _NoValueType = ...,
  1899. where: _ArrayLikeBool_co | _NoValueType = ...,
  1900. ) -> _ArrayT: ...
  1901. @overload
  1902. def std(
  1903. self,
  1904. axis: _ShapeLike | None = None,
  1905. dtype: DTypeLike | None = None,
  1906. out: None = None,
  1907. ddof: float = 0,
  1908. *,
  1909. keepdims: builtins.bool | _NoValueType = ...,
  1910. where: _ArrayLikeBool_co | _NoValueType = ...,
  1911. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1912. correction: float | _NoValueType = ...,
  1913. ) -> Any: ...
  1914. @overload
  1915. def std(
  1916. self,
  1917. axis: _ShapeLike | None,
  1918. dtype: DTypeLike | None,
  1919. out: _ArrayT,
  1920. ddof: float = 0,
  1921. *,
  1922. keepdims: builtins.bool | _NoValueType = ...,
  1923. where: _ArrayLikeBool_co | _NoValueType = ...,
  1924. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1925. correction: float | _NoValueType = ...,
  1926. ) -> _ArrayT: ...
  1927. @overload
  1928. def std(
  1929. self,
  1930. axis: _ShapeLike | None = None,
  1931. dtype: DTypeLike | None = None,
  1932. *,
  1933. out: _ArrayT,
  1934. ddof: float = 0,
  1935. keepdims: builtins.bool | _NoValueType = ...,
  1936. where: _ArrayLikeBool_co | _NoValueType = ...,
  1937. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1938. correction: float | _NoValueType = ...,
  1939. ) -> _ArrayT: ...
  1940. @overload
  1941. def var(
  1942. self,
  1943. axis: _ShapeLike | None = None,
  1944. dtype: DTypeLike | None = None,
  1945. out: None = None,
  1946. ddof: float = 0,
  1947. *,
  1948. keepdims: builtins.bool | _NoValueType = ...,
  1949. where: _ArrayLikeBool_co | _NoValueType = ...,
  1950. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1951. correction: float | _NoValueType = ...,
  1952. ) -> Any: ...
  1953. @overload
  1954. def var(
  1955. self,
  1956. axis: _ShapeLike | None,
  1957. dtype: DTypeLike | None,
  1958. out: _ArrayT,
  1959. ddof: float = 0,
  1960. *,
  1961. keepdims: builtins.bool | _NoValueType = ...,
  1962. where: _ArrayLikeBool_co | _NoValueType = ...,
  1963. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1964. correction: float | _NoValueType = ...,
  1965. ) -> _ArrayT: ...
  1966. @overload
  1967. def var(
  1968. self,
  1969. axis: _ShapeLike | None = None,
  1970. dtype: DTypeLike | None = None,
  1971. *,
  1972. out: _ArrayT,
  1973. ddof: float = 0,
  1974. keepdims: builtins.bool | _NoValueType = ...,
  1975. where: _ArrayLikeBool_co | _NoValueType = ...,
  1976. mean: _ArrayLikeNumber_co | _NoValueType = ...,
  1977. correction: float | _NoValueType = ...,
  1978. ) -> _ArrayT: ...
  1979. class ndarray(_ArrayOrScalarCommon, Generic[_ShapeT_co, _DTypeT_co]):
  1980. __hash__: ClassVar[None] # type: ignore[assignment] # pyright: ignore[reportIncompatibleMethodOverride]
  1981. @property
  1982. def base(self) -> NDArray[Any] | None: ...
  1983. @property
  1984. def ndim(self) -> int: ...
  1985. @property
  1986. def size(self) -> int: ...
  1987. @property
  1988. def real(self: _HasDTypeWithRealAndImag[_ScalarT, object], /) -> ndarray[_ShapeT_co, dtype[_ScalarT]]: ...
  1989. @real.setter
  1990. def real(self, value: ArrayLike, /) -> None: ...
  1991. @property
  1992. def imag(self: _HasDTypeWithRealAndImag[object, _ScalarT], /) -> ndarray[_ShapeT_co, dtype[_ScalarT]]: ...
  1993. @imag.setter
  1994. def imag(self, value: ArrayLike, /) -> None: ...
  1995. def __new__(
  1996. cls,
  1997. shape: _ShapeLike,
  1998. dtype: DTypeLike | None = ...,
  1999. buffer: _SupportsBuffer | None = ...,
  2000. offset: SupportsIndex = ...,
  2001. strides: _ShapeLike | None = ...,
  2002. order: _OrderKACF = ...,
  2003. ) -> Self: ...
  2004. if sys.version_info >= (3, 12):
  2005. def __buffer__(self, flags: int, /) -> memoryview: ...
  2006. def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
  2007. @overload
  2008. def __array__(self, dtype: None = None, /, *, copy: builtins.bool | None = None) -> ndarray[_ShapeT_co, _DTypeT_co]: ...
  2009. @overload
  2010. def __array__(self, dtype: _DTypeT, /, *, copy: builtins.bool | None = None) -> ndarray[_ShapeT_co, _DTypeT]: ...
  2011. def __array_ufunc__(
  2012. self,
  2013. ufunc: ufunc,
  2014. method: L["__call__", "reduce", "reduceat", "accumulate", "outer", "at"],
  2015. *inputs: Any,
  2016. **kwargs: Any,
  2017. ) -> Any: ...
  2018. def __array_function__(
  2019. self,
  2020. func: Callable[..., Any],
  2021. types: Iterable[type],
  2022. args: Iterable[Any],
  2023. kwargs: Mapping[str, Any],
  2024. ) -> Any: ...
  2025. # NOTE: In practice any object is accepted by `obj`, but as `__array_finalize__`
  2026. # is a pseudo-abstract method the type has been narrowed down in order to
  2027. # grant subclasses a bit more flexibility
  2028. def __array_finalize__(self, obj: NDArray[Any] | None, /) -> None: ...
  2029. def __array_wrap__(
  2030. self,
  2031. array: ndarray[_ShapeT, _DTypeT],
  2032. context: tuple[ufunc, tuple[Any, ...], int] | None = ...,
  2033. return_scalar: builtins.bool = ...,
  2034. /,
  2035. ) -> ndarray[_ShapeT, _DTypeT]: ...
  2036. # Keep in sync with `MaskedArray.__getitem__`
  2037. @overload
  2038. def __getitem__(self, key: _ArrayInt_co | tuple[_ArrayInt_co, ...], /) -> ndarray[_AnyShape, _DTypeT_co]: ...
  2039. @overload
  2040. def __getitem__(self, key: SupportsIndex | tuple[SupportsIndex, ...], /) -> Any: ...
  2041. @overload
  2042. def __getitem__(self, key: _ToIndices, /) -> ndarray[_AnyShape, _DTypeT_co]: ...
  2043. @overload # can be of any shape
  2044. def __getitem__(self: NDArray[void], key: str, /) -> ndarray[_ShapeT_co | _AnyShape]: ...
  2045. @overload
  2046. def __getitem__(self: NDArray[void], key: list[str], /) -> ndarray[_ShapeT_co | _AnyShape, dtype[void]]: ...
  2047. @overload # flexible | object_ | bool
  2048. def __setitem__(
  2049. self: ndarray[Any, dtype[flexible | object_ | np.bool] | dtypes.StringDType],
  2050. key: _ToIndices,
  2051. value: object,
  2052. /,
  2053. ) -> None: ...
  2054. @overload # integer
  2055. def __setitem__(
  2056. self: NDArray[integer],
  2057. key: _ToIndices,
  2058. value: _ConvertibleToInt | _NestedSequence[_ConvertibleToInt] | _ArrayLikeInt_co,
  2059. /,
  2060. ) -> None: ...
  2061. @overload # floating
  2062. def __setitem__(
  2063. self: NDArray[floating],
  2064. key: _ToIndices,
  2065. value: _ConvertibleToFloat | _NestedSequence[_ConvertibleToFloat | None] | _ArrayLikeFloat_co | None,
  2066. /,
  2067. ) -> None: ...
  2068. @overload # complexfloating
  2069. def __setitem__(
  2070. self: NDArray[complexfloating],
  2071. key: _ToIndices,
  2072. value: _ConvertibleToComplex | _NestedSequence[_ConvertibleToComplex | None] | _ArrayLikeNumber_co | None,
  2073. /,
  2074. ) -> None: ...
  2075. @overload # timedelta64
  2076. def __setitem__(
  2077. self: NDArray[timedelta64],
  2078. key: _ToIndices,
  2079. value: _ConvertibleToTD64 | _NestedSequence[_ConvertibleToTD64],
  2080. /,
  2081. ) -> None: ...
  2082. @overload # datetime64
  2083. def __setitem__(
  2084. self: NDArray[datetime64],
  2085. key: _ToIndices,
  2086. value: _ConvertibleToDT64 | _NestedSequence[_ConvertibleToDT64],
  2087. /,
  2088. ) -> None: ...
  2089. @overload # void
  2090. def __setitem__(self: NDArray[void], key: str | list[str], value: object, /) -> None: ...
  2091. @overload # catch-all
  2092. def __setitem__(self, key: _ToIndices, value: ArrayLike, /) -> None: ...
  2093. @property
  2094. def ctypes(self) -> _ctypes[int]: ...
  2095. #
  2096. @property
  2097. def shape(self) -> _ShapeT_co: ...
  2098. @shape.setter
  2099. @deprecated("In-place shape modification will be deprecated in NumPy 2.5.", category=PendingDeprecationWarning)
  2100. def shape(self, value: _ShapeLike) -> None: ...
  2101. #
  2102. @property
  2103. def strides(self) -> _Shape: ...
  2104. @strides.setter
  2105. @deprecated("Setting the strides on a NumPy array has been deprecated in NumPy 2.4")
  2106. def strides(self, value: _ShapeLike) -> None: ...
  2107. #
  2108. def byteswap(self, inplace: builtins.bool = ...) -> Self: ...
  2109. @property
  2110. def flat(self) -> flatiter[Self]: ...
  2111. @overload # use the same output type as that of the underlying `generic`
  2112. def item(self: NDArray[generic[_T]], i0: SupportsIndex | tuple[SupportsIndex, ...] = ..., /, *args: SupportsIndex) -> _T: ...
  2113. @overload # special casing for `StringDType`, which has no scalar type
  2114. def item(
  2115. self: ndarray[Any, dtypes.StringDType],
  2116. arg0: SupportsIndex | tuple[SupportsIndex, ...] = ...,
  2117. /,
  2118. *args: SupportsIndex,
  2119. ) -> str: ...
  2120. # keep in sync with `ma.MaskedArray.tolist`
  2121. @overload # this first overload prevents mypy from over-eagerly selecting `tuple[()]` in case of `_AnyShape`
  2122. def tolist(self: ndarray[tuple[Never], dtype[generic[_T]]], /) -> Any: ...
  2123. @overload
  2124. def tolist(self: ndarray[tuple[()], dtype[generic[_T]]], /) -> _T: ...
  2125. @overload
  2126. def tolist(self: ndarray[tuple[int], dtype[generic[_T]]], /) -> list[_T]: ...
  2127. @overload
  2128. def tolist(self: ndarray[tuple[int, int], dtype[generic[_T]]], /) -> list[list[_T]]: ...
  2129. @overload
  2130. def tolist(self: ndarray[tuple[int, int, int], dtype[generic[_T]]], /) -> list[list[list[_T]]]: ...
  2131. @overload
  2132. def tolist(self, /) -> Any: ...
  2133. @overload
  2134. def resize(self, new_shape: _ShapeLike, /, *, refcheck: builtins.bool = True) -> None: ...
  2135. @overload
  2136. def resize(self, /, *new_shape: SupportsIndex, refcheck: builtins.bool = True) -> None: ...
  2137. # keep in sync with `ma.MaskedArray.squeeze`
  2138. def squeeze(
  2139. self,
  2140. /,
  2141. axis: SupportsIndex | tuple[SupportsIndex, ...] | None = ...,
  2142. ) -> ndarray[_AnyShape, _DTypeT_co]: ...
  2143. def swapaxes(self, axis1: SupportsIndex, axis2: SupportsIndex, /) -> Self: ...
  2144. @overload
  2145. def transpose(self, axes: _ShapeLike | None, /) -> Self: ...
  2146. @overload
  2147. def transpose(self, /, *axes: SupportsIndex) -> Self: ...
  2148. @overload
  2149. def all(
  2150. self,
  2151. axis: None = None,
  2152. out: None = None,
  2153. keepdims: L[False, 0] = False,
  2154. *,
  2155. where: _ArrayLikeBool_co = True
  2156. ) -> np.bool: ...
  2157. @overload
  2158. def all(
  2159. self,
  2160. axis: int | tuple[int, ...] | None = None,
  2161. out: None = None,
  2162. keepdims: SupportsIndex = False,
  2163. *,
  2164. where: _ArrayLikeBool_co = True,
  2165. ) -> np.bool | NDArray[np.bool]: ...
  2166. @overload
  2167. def all(
  2168. self,
  2169. axis: int | tuple[int, ...] | None,
  2170. out: _ArrayT,
  2171. keepdims: SupportsIndex = False,
  2172. *,
  2173. where: _ArrayLikeBool_co = True,
  2174. ) -> _ArrayT: ...
  2175. @overload
  2176. def all(
  2177. self,
  2178. axis: int | tuple[int, ...] | None = None,
  2179. *,
  2180. out: _ArrayT,
  2181. keepdims: SupportsIndex = False,
  2182. where: _ArrayLikeBool_co = True,
  2183. ) -> _ArrayT: ...
  2184. @overload
  2185. def any(
  2186. self,
  2187. axis: None = None,
  2188. out: None = None,
  2189. keepdims: L[False, 0] = False,
  2190. *,
  2191. where: _ArrayLikeBool_co = True
  2192. ) -> np.bool: ...
  2193. @overload
  2194. def any(
  2195. self,
  2196. axis: int | tuple[int, ...] | None = None,
  2197. out: None = None,
  2198. keepdims: SupportsIndex = False,
  2199. *,
  2200. where: _ArrayLikeBool_co = True,
  2201. ) -> np.bool | NDArray[np.bool]: ...
  2202. @overload
  2203. def any(
  2204. self,
  2205. axis: int | tuple[int, ...] | None,
  2206. out: _ArrayT,
  2207. keepdims: SupportsIndex = False,
  2208. *,
  2209. where: _ArrayLikeBool_co = True,
  2210. ) -> _ArrayT: ...
  2211. @overload
  2212. def any(
  2213. self,
  2214. axis: int | tuple[int, ...] | None = None,
  2215. *,
  2216. out: _ArrayT,
  2217. keepdims: SupportsIndex = False,
  2218. where: _ArrayLikeBool_co = True,
  2219. ) -> _ArrayT: ...
  2220. #
  2221. @overload
  2222. def partition(
  2223. self,
  2224. kth: _ArrayLikeInt,
  2225. /,
  2226. axis: SupportsIndex = -1,
  2227. kind: _PartitionKind = "introselect",
  2228. order: None = None,
  2229. ) -> None: ...
  2230. @overload
  2231. def partition(
  2232. self: NDArray[void],
  2233. kth: _ArrayLikeInt,
  2234. /,
  2235. axis: SupportsIndex = -1,
  2236. kind: _PartitionKind = "introselect",
  2237. order: str | Sequence[str] | None = None,
  2238. ) -> None: ...
  2239. #
  2240. @overload
  2241. def argpartition(
  2242. self,
  2243. kth: _ArrayLikeInt,
  2244. /,
  2245. axis: SupportsIndex | None = -1,
  2246. kind: _PartitionKind = "introselect",
  2247. order: None = None,
  2248. ) -> NDArray[intp]: ...
  2249. @overload
  2250. def argpartition(
  2251. self: NDArray[void],
  2252. kth: _ArrayLikeInt,
  2253. /,
  2254. axis: SupportsIndex | None = -1,
  2255. kind: _PartitionKind = "introselect",
  2256. order: str | Sequence[str] | None = None,
  2257. ) -> NDArray[intp]: ...
  2258. # keep in sync with `ma.MaskedArray.diagonal`
  2259. def diagonal(
  2260. self,
  2261. offset: SupportsIndex = 0,
  2262. axis1: SupportsIndex = 0,
  2263. axis2: SupportsIndex = 1,
  2264. ) -> ndarray[_AnyShape, _DTypeT_co]: ...
  2265. # 1D + 1D returns a scalar;
  2266. # all other with at least 1 non-0D array return an ndarray.
  2267. @overload
  2268. def dot(self, b: _ScalarLike_co, /, out: None = None) -> NDArray[Any]: ...
  2269. @overload
  2270. def dot(self, b: ArrayLike, /, out: None = None) -> Any: ...
  2271. @overload
  2272. def dot(self, b: ArrayLike, /, out: _ArrayT) -> _ArrayT: ...
  2273. # `nonzero()` raises for 0d arrays/generics
  2274. def nonzero(self) -> tuple[ndarray[tuple[int], np.dtype[intp]], ...]: ...
  2275. @overload
  2276. def searchsorted(
  2277. self, # >= 1D array
  2278. v: _ScalarLike_co, # 0D array-like
  2279. /,
  2280. side: _SortSide = "left",
  2281. sorter: _ArrayLikeInt_co | None = None,
  2282. ) -> intp: ...
  2283. @overload
  2284. def searchsorted(
  2285. self, # >= 1D array
  2286. v: ArrayLike,
  2287. /,
  2288. side: _SortSide = "left",
  2289. sorter: _ArrayLikeInt_co | None = None,
  2290. ) -> NDArray[intp]: ...
  2291. def sort(
  2292. self,
  2293. /,
  2294. axis: SupportsIndex = -1,
  2295. kind: _SortKind | None = None,
  2296. order: str | Sequence[str] | None = None,
  2297. *,
  2298. stable: builtins.bool | None = None,
  2299. ) -> None: ...
  2300. # Keep in sync with `MaskedArray.trace`
  2301. @overload
  2302. def trace(
  2303. self, # >= 2D array
  2304. /,
  2305. offset: SupportsIndex = 0,
  2306. axis1: SupportsIndex = 0,
  2307. axis2: SupportsIndex = 1,
  2308. dtype: DTypeLike | None = None,
  2309. out: None = None,
  2310. ) -> Any: ...
  2311. @overload
  2312. def trace(
  2313. self, # >= 2D array
  2314. /,
  2315. offset: SupportsIndex = 0,
  2316. axis1: SupportsIndex = 0,
  2317. axis2: SupportsIndex = 1,
  2318. dtype: DTypeLike | None = None,
  2319. *,
  2320. out: _ArrayT,
  2321. ) -> _ArrayT: ...
  2322. @overload
  2323. def trace(
  2324. self, # >= 2D array
  2325. /,
  2326. offset: SupportsIndex,
  2327. axis1: SupportsIndex,
  2328. axis2: SupportsIndex,
  2329. dtype: DTypeLike | None,
  2330. out: _ArrayT,
  2331. ) -> _ArrayT: ...
  2332. @overload
  2333. def take(
  2334. self: NDArray[_ScalarT],
  2335. indices: _IntLike_co,
  2336. /,
  2337. axis: SupportsIndex | None = ...,
  2338. out: None = None,
  2339. mode: _ModeKind = ...,
  2340. ) -> _ScalarT: ...
  2341. @overload
  2342. def take(
  2343. self,
  2344. indices: _ArrayLikeInt_co,
  2345. /,
  2346. axis: SupportsIndex | None = ...,
  2347. out: None = None,
  2348. mode: _ModeKind = ...,
  2349. ) -> ndarray[_AnyShape, _DTypeT_co]: ...
  2350. @overload
  2351. def take(
  2352. self,
  2353. indices: _ArrayLikeInt_co,
  2354. /,
  2355. axis: SupportsIndex | None = ...,
  2356. *,
  2357. out: _ArrayT,
  2358. mode: _ModeKind = ...,
  2359. ) -> _ArrayT: ...
  2360. @overload
  2361. def take(
  2362. self,
  2363. indices: _ArrayLikeInt_co,
  2364. /,
  2365. axis: SupportsIndex | None,
  2366. out: _ArrayT,
  2367. mode: _ModeKind = ...,
  2368. ) -> _ArrayT: ...
  2369. # keep in sync with `ma.MaskedArray.repeat`
  2370. @overload
  2371. def repeat(self, repeats: _ArrayLikeInt_co, /, axis: None = None) -> ndarray[tuple[int], _DTypeT_co]: ...
  2372. @overload
  2373. def repeat(self, repeats: _ArrayLikeInt_co, /, axis: SupportsIndex) -> ndarray[_AnyShape, _DTypeT_co]: ...
  2374. # keep in sync with `ma.MaskedArray.flatten` and `ma.MaskedArray.ravel`
  2375. def flatten(self, /, order: _OrderKACF = "C") -> ndarray[tuple[int], _DTypeT_co]: ...
  2376. def ravel(self, /, order: _OrderKACF = "C") -> ndarray[tuple[int], _DTypeT_co]: ...
  2377. # Keep in sync with `MaskedArray.reshape`
  2378. # NOTE: reshape also accepts negative integers, so we can't use integer literals
  2379. @overload # (None)
  2380. def reshape(self, shape: None, /, *, order: _OrderACF = "C", copy: builtins.bool | None = None) -> Self: ...
  2381. @overload # (empty_sequence)
  2382. def reshape( # type: ignore[overload-overlap] # mypy false positive
  2383. self,
  2384. shape: Sequence[Never],
  2385. /,
  2386. *,
  2387. order: _OrderACF = "C",
  2388. copy: builtins.bool | None = None,
  2389. ) -> ndarray[tuple[()], _DTypeT_co]: ...
  2390. @overload # (() | (int) | (int, int) | ....) # up to 8-d
  2391. def reshape(
  2392. self,
  2393. shape: _AnyShapeT,
  2394. /,
  2395. *,
  2396. order: _OrderACF = "C",
  2397. copy: builtins.bool | None = None,
  2398. ) -> ndarray[_AnyShapeT, _DTypeT_co]: ...
  2399. @overload # (index)
  2400. def reshape(
  2401. self,
  2402. size1: SupportsIndex,
  2403. /,
  2404. *,
  2405. order: _OrderACF = "C",
  2406. copy: builtins.bool | None = None,
  2407. ) -> ndarray[tuple[int], _DTypeT_co]: ...
  2408. @overload # (index, index)
  2409. def reshape(
  2410. self,
  2411. size1: SupportsIndex,
  2412. size2: SupportsIndex,
  2413. /,
  2414. *,
  2415. order: _OrderACF = "C",
  2416. copy: builtins.bool | None = None,
  2417. ) -> ndarray[tuple[int, int], _DTypeT_co]: ...
  2418. @overload # (index, index, index)
  2419. def reshape(
  2420. self,
  2421. size1: SupportsIndex,
  2422. size2: SupportsIndex,
  2423. size3: SupportsIndex,
  2424. /,
  2425. *,
  2426. order: _OrderACF = "C",
  2427. copy: builtins.bool | None = None,
  2428. ) -> ndarray[tuple[int, int, int], _DTypeT_co]: ...
  2429. @overload # (index, index, index, index)
  2430. def reshape(
  2431. self,
  2432. size1: SupportsIndex,
  2433. size2: SupportsIndex,
  2434. size3: SupportsIndex,
  2435. size4: SupportsIndex,
  2436. /,
  2437. *,
  2438. order: _OrderACF = "C",
  2439. copy: builtins.bool | None = None,
  2440. ) -> ndarray[tuple[int, int, int, int], _DTypeT_co]: ...
  2441. @overload # (int, *(index, ...))
  2442. def reshape(
  2443. self,
  2444. size0: SupportsIndex,
  2445. /,
  2446. *shape: SupportsIndex,
  2447. order: _OrderACF = "C",
  2448. copy: builtins.bool | None = None,
  2449. ) -> ndarray[_AnyShape, _DTypeT_co]: ...
  2450. @overload # (sequence[index])
  2451. def reshape(
  2452. self,
  2453. shape: Sequence[SupportsIndex],
  2454. /,
  2455. *,
  2456. order: _OrderACF = "C",
  2457. copy: builtins.bool | None = None,
  2458. ) -> ndarray[_AnyShape, _DTypeT_co]: ...
  2459. @overload
  2460. def astype(
  2461. self,
  2462. dtype: _DTypeLike[_ScalarT],
  2463. order: _OrderKACF = ...,
  2464. casting: _CastingKind = ...,
  2465. subok: builtins.bool = ...,
  2466. copy: builtins.bool | _CopyMode = ...,
  2467. ) -> ndarray[_ShapeT_co, dtype[_ScalarT]]: ...
  2468. @overload
  2469. def astype(
  2470. self,
  2471. dtype: DTypeLike | None,
  2472. order: _OrderKACF = ...,
  2473. casting: _CastingKind = ...,
  2474. subok: builtins.bool = ...,
  2475. copy: builtins.bool | _CopyMode = ...,
  2476. ) -> ndarray[_ShapeT_co, dtype]: ...
  2477. #
  2478. @overload # ()
  2479. def view(self, /) -> Self: ...
  2480. @overload # (dtype: T)
  2481. def view(self, /, dtype: _DTypeT | _HasDType[_DTypeT]) -> ndarray[_ShapeT_co, _DTypeT]: ...
  2482. @overload # (dtype: dtype[T])
  2483. def view(self, /, dtype: _DTypeLike[_ScalarT]) -> ndarray[_ShapeT_co, dtype[_ScalarT]]: ...
  2484. @overload # (type: T)
  2485. def view(self, /, *, type: type[_ArrayT]) -> _ArrayT: ...
  2486. @overload # (_: T)
  2487. def view(self, /, dtype: type[_ArrayT]) -> _ArrayT: ...
  2488. @overload # (dtype: ?)
  2489. def view(self, /, dtype: DTypeLike) -> ndarray[_ShapeT_co, dtype]: ...
  2490. @overload # (dtype: ?, type: T)
  2491. def view(self, /, dtype: DTypeLike, type: type[_ArrayT]) -> _ArrayT: ...
  2492. def setfield(self, val: ArrayLike, /, dtype: DTypeLike, offset: SupportsIndex = 0) -> None: ...
  2493. @overload
  2494. def getfield(self, /, dtype: _DTypeLike[_ScalarT], offset: SupportsIndex = 0) -> NDArray[_ScalarT]: ...
  2495. @overload
  2496. def getfield(self, /, dtype: DTypeLike, offset: SupportsIndex = 0) -> NDArray[Any]: ...
  2497. def __index__(self: NDArray[integer], /) -> int: ...
  2498. def __complex__(self: NDArray[number | np.bool | object_], /) -> complex: ...
  2499. def __len__(self) -> int: ...
  2500. def __contains__(self, value: object, /) -> builtins.bool: ...
  2501. # NOTE: This weird `Never` tuple works around a strange mypy issue where it assigns
  2502. # `tuple[int]` to `tuple[Never]` or `tuple[int, int]` to `tuple[Never, Never]`.
  2503. # This way the bug only occurs for 9-D arrays, which are probably not very common.
  2504. @overload
  2505. def __iter__(
  2506. self: ndarray[tuple[Never, Never, Never, Never, Never, Never, Never, Never, Never], Any], /
  2507. ) -> Iterator[Any]: ...
  2508. @overload # == 1-d & dtype[T \ object_]
  2509. def __iter__(self: ndarray[tuple[int], dtype[_NonObjectScalarT]], /) -> Iterator[_NonObjectScalarT]: ...
  2510. @overload # == 1-d & StringDType
  2511. def __iter__(self: ndarray[tuple[int], dtypes.StringDType], /) -> Iterator[str]: ...
  2512. @overload # >= 2-d
  2513. def __iter__(self: ndarray[tuple[int, int, *tuple[int, ...]], _DTypeT], /) -> Iterator[ndarray[_AnyShape, _DTypeT]]: ...
  2514. @overload # ?-d
  2515. def __iter__(self, /) -> Iterator[Any]: ...
  2516. #
  2517. @overload
  2518. def __lt__(self: _ArrayNumber_co, other: _ArrayLikeNumber_co, /) -> NDArray[np.bool]: ...
  2519. @overload
  2520. def __lt__(self: _ArrayTD64_co, other: _ArrayLikeTD64_co, /) -> NDArray[np.bool]: ...
  2521. @overload
  2522. def __lt__(self: NDArray[datetime64], other: _ArrayLikeDT64_co, /) -> NDArray[np.bool]: ...
  2523. @overload
  2524. def __lt__(self: NDArray[bytes_], other: _ArrayLikeBytes_co, /) -> NDArray[np.bool]: ...
  2525. @overload
  2526. def __lt__(
  2527. self: ndarray[Any, dtype[str_] | dtypes.StringDType], other: _ArrayLikeStr_co | _ArrayLikeString_co, /
  2528. ) -> NDArray[np.bool]: ...
  2529. @overload
  2530. def __lt__(self: NDArray[object_], other: object, /) -> NDArray[np.bool]: ...
  2531. @overload
  2532. def __lt__(self, other: _ArrayLikeObject_co, /) -> NDArray[np.bool]: ...
  2533. #
  2534. @overload
  2535. def __le__(self: _ArrayNumber_co, other: _ArrayLikeNumber_co, /) -> NDArray[np.bool]: ...
  2536. @overload
  2537. def __le__(self: _ArrayTD64_co, other: _ArrayLikeTD64_co, /) -> NDArray[np.bool]: ...
  2538. @overload
  2539. def __le__(self: NDArray[datetime64], other: _ArrayLikeDT64_co, /) -> NDArray[np.bool]: ...
  2540. @overload
  2541. def __le__(self: NDArray[bytes_], other: _ArrayLikeBytes_co, /) -> NDArray[np.bool]: ...
  2542. @overload
  2543. def __le__(
  2544. self: ndarray[Any, dtype[str_] | dtypes.StringDType], other: _ArrayLikeStr_co | _ArrayLikeString_co, /
  2545. ) -> NDArray[np.bool]: ...
  2546. @overload
  2547. def __le__(self: NDArray[object_], other: object, /) -> NDArray[np.bool]: ...
  2548. @overload
  2549. def __le__(self, other: _ArrayLikeObject_co, /) -> NDArray[np.bool]: ...
  2550. #
  2551. @overload
  2552. def __gt__(self: _ArrayNumber_co, other: _ArrayLikeNumber_co, /) -> NDArray[np.bool]: ...
  2553. @overload
  2554. def __gt__(self: _ArrayTD64_co, other: _ArrayLikeTD64_co, /) -> NDArray[np.bool]: ...
  2555. @overload
  2556. def __gt__(self: NDArray[datetime64], other: _ArrayLikeDT64_co, /) -> NDArray[np.bool]: ...
  2557. @overload
  2558. def __gt__(self: NDArray[bytes_], other: _ArrayLikeBytes_co, /) -> NDArray[np.bool]: ...
  2559. @overload
  2560. def __gt__(
  2561. self: ndarray[Any, dtype[str_] | dtypes.StringDType], other: _ArrayLikeStr_co | _ArrayLikeString_co, /
  2562. ) -> NDArray[np.bool]: ...
  2563. @overload
  2564. def __gt__(self: NDArray[object_], other: object, /) -> NDArray[np.bool]: ...
  2565. @overload
  2566. def __gt__(self, other: _ArrayLikeObject_co, /) -> NDArray[np.bool]: ...
  2567. #
  2568. @overload
  2569. def __ge__(self: _ArrayNumber_co, other: _ArrayLikeNumber_co, /) -> NDArray[np.bool]: ...
  2570. @overload
  2571. def __ge__(self: _ArrayTD64_co, other: _ArrayLikeTD64_co, /) -> NDArray[np.bool]: ...
  2572. @overload
  2573. def __ge__(self: NDArray[datetime64], other: _ArrayLikeDT64_co, /) -> NDArray[np.bool]: ...
  2574. @overload
  2575. def __ge__(self: NDArray[bytes_], other: _ArrayLikeBytes_co, /) -> NDArray[np.bool]: ...
  2576. @overload
  2577. def __ge__(
  2578. self: ndarray[Any, dtype[str_] | dtypes.StringDType], other: _ArrayLikeStr_co | _ArrayLikeString_co, /
  2579. ) -> NDArray[np.bool]: ...
  2580. @overload
  2581. def __ge__(self: NDArray[object_], other: object, /) -> NDArray[np.bool]: ...
  2582. @overload
  2583. def __ge__(self, other: _ArrayLikeObject_co, /) -> NDArray[np.bool]: ...
  2584. # Unary ops
  2585. # TODO: Uncomment once https://github.com/python/mypy/issues/14070 is fixed
  2586. # @overload
  2587. # def __abs__(self: ndarray[_ShapeT, dtypes.Complex64DType], /) -> ndarray[_ShapeT, dtypes.Float32DType]: ...
  2588. # @overload
  2589. # def __abs__(self: ndarray[_ShapeT, dtypes.Complex128DType], /) -> ndarray[_ShapeT, dtypes.Float64DType]: ...
  2590. # @overload
  2591. # def __abs__(self: ndarray[_ShapeT, dtypes.CLongDoubleDType], /) -> ndarray[_ShapeT, dtypes.LongDoubleDType]: ...
  2592. # @overload
  2593. # def __abs__(self: ndarray[_ShapeT, dtype[complex128]], /) -> ndarray[_ShapeT, dtype[float64]]: ...
  2594. @overload
  2595. def __abs__(self: ndarray[_ShapeT, dtype[complexfloating[_NBit]]], /) -> ndarray[_ShapeT, dtype[floating[_NBit]]]: ...
  2596. @overload
  2597. def __abs__(self: _RealArrayT, /) -> _RealArrayT: ...
  2598. def __invert__(self: _IntegralArrayT, /) -> _IntegralArrayT: ... # noqa: PYI019
  2599. def __neg__(self: _NumericArrayT, /) -> _NumericArrayT: ... # noqa: PYI019
  2600. def __pos__(self: _NumericArrayT, /) -> _NumericArrayT: ... # noqa: PYI019
  2601. # Binary ops
  2602. # TODO: Support the "1d @ 1d -> scalar" case
  2603. @overload
  2604. def __matmul__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ...
  2605. @overload
  2606. def __matmul__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ... # type: ignore[overload-overlap]
  2607. @overload
  2608. def __matmul__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2609. @overload
  2610. def __matmul__(self: NDArray[floating[_64Bit]], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2611. @overload
  2612. def __matmul__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2613. @overload
  2614. def __matmul__(self: NDArray[complexfloating[_64Bit]], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  2615. @overload
  2616. def __matmul__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  2617. @overload
  2618. def __matmul__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2619. @overload
  2620. def __matmul__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2621. @overload
  2622. def __matmul__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  2623. @overload
  2624. def __matmul__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, /) -> NDArray[complexfloating]: ...
  2625. @overload
  2626. def __matmul__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ...
  2627. @overload
  2628. def __matmul__(self: NDArray[object_], other: Any, /) -> Any: ...
  2629. @overload
  2630. def __matmul__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2631. @overload # signature equivalent to __matmul__
  2632. def __rmatmul__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ...
  2633. @overload
  2634. def __rmatmul__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ... # type: ignore[overload-overlap]
  2635. @overload
  2636. def __rmatmul__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2637. @overload
  2638. def __rmatmul__(self: NDArray[floating[_64Bit]], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2639. @overload
  2640. def __rmatmul__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2641. @overload
  2642. def __rmatmul__(self: NDArray[complexfloating[_64Bit]], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  2643. @overload
  2644. def __rmatmul__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  2645. @overload
  2646. def __rmatmul__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2647. @overload
  2648. def __rmatmul__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2649. @overload
  2650. def __rmatmul__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  2651. @overload
  2652. def __rmatmul__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, /) -> NDArray[complexfloating]: ...
  2653. @overload
  2654. def __rmatmul__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ...
  2655. @overload
  2656. def __rmatmul__(self: NDArray[object_], other: Any, /) -> Any: ...
  2657. @overload
  2658. def __rmatmul__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2659. @overload
  2660. def __mod__(self: NDArray[_RealNumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_RealNumberT]]: ...
  2661. @overload
  2662. def __mod__(self: NDArray[_RealNumberT], other: _ArrayLikeBool_co, /) -> NDArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  2663. @overload
  2664. def __mod__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[int8]: ... # type: ignore[overload-overlap]
  2665. @overload
  2666. def __mod__(self: NDArray[np.bool], other: _ArrayLike[_RealNumberT], /) -> NDArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  2667. @overload
  2668. def __mod__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2669. @overload
  2670. def __mod__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2671. @overload
  2672. def __mod__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2673. @overload
  2674. def __mod__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2675. @overload
  2676. def __mod__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ...
  2677. @overload
  2678. def __mod__(self: NDArray[timedelta64], other: _ArrayLike[timedelta64], /) -> NDArray[timedelta64]: ...
  2679. @overload
  2680. def __mod__(self: NDArray[object_], other: Any, /) -> Any: ...
  2681. @overload
  2682. def __mod__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2683. @overload # signature equivalent to __mod__
  2684. def __rmod__(self: NDArray[_RealNumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_RealNumberT]]: ...
  2685. @overload
  2686. def __rmod__(self: NDArray[_RealNumberT], other: _ArrayLikeBool_co, /) -> NDArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  2687. @overload
  2688. def __rmod__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[int8]: ... # type: ignore[overload-overlap]
  2689. @overload
  2690. def __rmod__(self: NDArray[np.bool], other: _ArrayLike[_RealNumberT], /) -> NDArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  2691. @overload
  2692. def __rmod__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2693. @overload
  2694. def __rmod__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2695. @overload
  2696. def __rmod__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2697. @overload
  2698. def __rmod__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2699. @overload
  2700. def __rmod__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ...
  2701. @overload
  2702. def __rmod__(self: NDArray[timedelta64], other: _ArrayLike[timedelta64], /) -> NDArray[timedelta64]: ...
  2703. @overload
  2704. def __rmod__(self: NDArray[object_], other: Any, /) -> Any: ...
  2705. @overload
  2706. def __rmod__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2707. @overload
  2708. def __divmod__(self: NDArray[_RealNumberT], rhs: int | np.bool, /) -> _2Tuple[ndarray[_ShapeT_co, dtype[_RealNumberT]]]: ...
  2709. @overload
  2710. def __divmod__(self: NDArray[_RealNumberT], rhs: _ArrayLikeBool_co, /) -> _2Tuple[NDArray[_RealNumberT]]: ... # type: ignore[overload-overlap]
  2711. @overload
  2712. def __divmod__(self: NDArray[np.bool], rhs: _ArrayLikeBool_co, /) -> _2Tuple[NDArray[int8]]: ... # type: ignore[overload-overlap]
  2713. @overload
  2714. def __divmod__(self: NDArray[np.bool], rhs: _ArrayLike[_RealNumberT], /) -> _2Tuple[NDArray[_RealNumberT]]: ... # type: ignore[overload-overlap]
  2715. @overload
  2716. def __divmod__(self: NDArray[float64], rhs: _ArrayLikeFloat64_co, /) -> _2Tuple[NDArray[float64]]: ...
  2717. @overload
  2718. def __divmod__(self: _ArrayFloat64_co, rhs: _ArrayLike[floating[_64Bit]], /) -> _2Tuple[NDArray[float64]]: ...
  2719. @overload
  2720. def __divmod__(self: _ArrayUInt_co, rhs: _ArrayLikeUInt_co, /) -> _2Tuple[NDArray[unsignedinteger]]: ... # type: ignore[overload-overlap]
  2721. @overload
  2722. def __divmod__(self: _ArrayInt_co, rhs: _ArrayLikeInt_co, /) -> _2Tuple[NDArray[signedinteger]]: ... # type: ignore[overload-overlap]
  2723. @overload
  2724. def __divmod__(self: _ArrayFloat_co, rhs: _ArrayLikeFloat_co, /) -> _2Tuple[NDArray[floating]]: ...
  2725. @overload
  2726. def __divmod__(self: NDArray[timedelta64], rhs: _ArrayLike[timedelta64], /) -> tuple[NDArray[int64], NDArray[timedelta64]]: ...
  2727. @overload # signature equivalent to __divmod__
  2728. def __rdivmod__(self: NDArray[_RealNumberT], lhs: int | np.bool, /) -> _2Tuple[ndarray[_ShapeT_co, dtype[_RealNumberT]]]: ...
  2729. @overload
  2730. def __rdivmod__(self: NDArray[_RealNumberT], lhs: _ArrayLikeBool_co, /) -> _2Tuple[NDArray[_RealNumberT]]: ... # type: ignore[overload-overlap]
  2731. @overload
  2732. def __rdivmod__(self: NDArray[np.bool], lhs: _ArrayLikeBool_co, /) -> _2Tuple[NDArray[int8]]: ... # type: ignore[overload-overlap]
  2733. @overload
  2734. def __rdivmod__(self: NDArray[np.bool], lhs: _ArrayLike[_RealNumberT], /) -> _2Tuple[NDArray[_RealNumberT]]: ... # type: ignore[overload-overlap]
  2735. @overload
  2736. def __rdivmod__(self: NDArray[float64], lhs: _ArrayLikeFloat64_co, /) -> _2Tuple[NDArray[float64]]: ...
  2737. @overload
  2738. def __rdivmod__(self: _ArrayFloat64_co, lhs: _ArrayLike[floating[_64Bit]], /) -> _2Tuple[NDArray[float64]]: ...
  2739. @overload
  2740. def __rdivmod__(self: _ArrayUInt_co, lhs: _ArrayLikeUInt_co, /) -> _2Tuple[NDArray[unsignedinteger]]: ... # type: ignore[overload-overlap]
  2741. @overload
  2742. def __rdivmod__(self: _ArrayInt_co, lhs: _ArrayLikeInt_co, /) -> _2Tuple[NDArray[signedinteger]]: ... # type: ignore[overload-overlap]
  2743. @overload
  2744. def __rdivmod__(self: _ArrayFloat_co, lhs: _ArrayLikeFloat_co, /) -> _2Tuple[NDArray[floating]]: ...
  2745. @overload
  2746. def __rdivmod__(self: NDArray[timedelta64], lhs: _ArrayLike[timedelta64], /) -> tuple[NDArray[int64], NDArray[timedelta64]]: ...
  2747. # Keep in sync with `MaskedArray.__add__`
  2748. @overload
  2749. def __add__(self: NDArray[_NumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_NumberT]]: ...
  2750. @overload
  2751. def __add__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2752. @overload
  2753. def __add__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ... # type: ignore[overload-overlap]
  2754. @overload
  2755. def __add__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2756. @overload
  2757. def __add__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2758. @overload
  2759. def __add__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2760. @overload
  2761. def __add__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  2762. @overload
  2763. def __add__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  2764. @overload
  2765. def __add__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2766. @overload
  2767. def __add__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2768. @overload
  2769. def __add__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  2770. @overload
  2771. def __add__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, /) -> NDArray[complexfloating]: ... # type: ignore[overload-overlap]
  2772. @overload
  2773. def __add__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ... # type: ignore[overload-overlap]
  2774. @overload
  2775. def __add__(self: _ArrayTD64_co, other: _ArrayLikeTD64_co, /) -> NDArray[timedelta64]: ...
  2776. @overload
  2777. def __add__(self: _ArrayTD64_co, other: _ArrayLikeDT64_co, /) -> NDArray[datetime64]: ...
  2778. @overload
  2779. def __add__(self: NDArray[datetime64], other: _ArrayLikeTD64_co, /) -> NDArray[datetime64]: ...
  2780. @overload
  2781. def __add__(self: NDArray[bytes_], other: _ArrayLikeBytes_co, /) -> NDArray[bytes_]: ...
  2782. @overload
  2783. def __add__(self: NDArray[str_], other: _ArrayLikeStr_co, /) -> NDArray[str_]: ...
  2784. @overload
  2785. def __add__(
  2786. self: ndarray[Any, dtypes.StringDType],
  2787. other: _ArrayLikeStr_co | _ArrayLikeString_co,
  2788. /,
  2789. ) -> ndarray[tuple[Any, ...], dtypes.StringDType]: ...
  2790. @overload
  2791. def __add__(self: NDArray[object_], other: Any, /) -> Any: ...
  2792. @overload
  2793. def __add__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2794. # Keep in sync with `MaskedArray.__radd__`
  2795. @overload # signature equivalent to __add__
  2796. def __radd__(self: NDArray[_NumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_NumberT]]: ...
  2797. @overload
  2798. def __radd__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2799. @overload
  2800. def __radd__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ... # type: ignore[overload-overlap]
  2801. @overload
  2802. def __radd__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2803. @overload
  2804. def __radd__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2805. @overload
  2806. def __radd__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2807. @overload
  2808. def __radd__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  2809. @overload
  2810. def __radd__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  2811. @overload
  2812. def __radd__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2813. @overload
  2814. def __radd__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2815. @overload
  2816. def __radd__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  2817. @overload
  2818. def __radd__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, /) -> NDArray[complexfloating]: ... # type: ignore[overload-overlap]
  2819. @overload
  2820. def __radd__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ... # type: ignore[overload-overlap]
  2821. @overload
  2822. def __radd__(self: _ArrayTD64_co, other: _ArrayLikeTD64_co, /) -> NDArray[timedelta64]: ...
  2823. @overload
  2824. def __radd__(self: _ArrayTD64_co, other: _ArrayLikeDT64_co, /) -> NDArray[datetime64]: ...
  2825. @overload
  2826. def __radd__(self: NDArray[datetime64], other: _ArrayLikeTD64_co, /) -> NDArray[datetime64]: ...
  2827. @overload
  2828. def __radd__(self: NDArray[bytes_], other: _ArrayLikeBytes_co, /) -> NDArray[bytes_]: ...
  2829. @overload
  2830. def __radd__(self: NDArray[str_], other: _ArrayLikeStr_co, /) -> NDArray[str_]: ...
  2831. @overload
  2832. def __radd__(
  2833. self: ndarray[Any, dtypes.StringDType],
  2834. other: _ArrayLikeStr_co | _ArrayLikeString_co,
  2835. /,
  2836. ) -> ndarray[tuple[Any, ...], dtypes.StringDType]: ...
  2837. @overload
  2838. def __radd__(self: NDArray[object_], other: Any, /) -> Any: ...
  2839. @overload
  2840. def __radd__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2841. # Keep in sync with `MaskedArray.__sub__`
  2842. @overload
  2843. def __sub__(self: NDArray[_NumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_NumberT]]: ...
  2844. @overload
  2845. def __sub__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2846. @overload
  2847. def __sub__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NoReturn: ...
  2848. @overload
  2849. def __sub__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2850. @overload
  2851. def __sub__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2852. @overload
  2853. def __sub__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2854. @overload
  2855. def __sub__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  2856. @overload
  2857. def __sub__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  2858. @overload
  2859. def __sub__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2860. @overload
  2861. def __sub__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2862. @overload
  2863. def __sub__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  2864. @overload
  2865. def __sub__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, /) -> NDArray[complexfloating]: ... # type: ignore[overload-overlap]
  2866. @overload
  2867. def __sub__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ... # type: ignore[overload-overlap]
  2868. @overload
  2869. def __sub__(self: _ArrayTD64_co, other: _ArrayLikeTD64_co, /) -> NDArray[timedelta64]: ...
  2870. @overload
  2871. def __sub__(self: NDArray[datetime64], other: _ArrayLikeTD64_co, /) -> NDArray[datetime64]: ...
  2872. @overload
  2873. def __sub__(self: NDArray[datetime64], other: _ArrayLikeDT64_co, /) -> NDArray[timedelta64]: ...
  2874. @overload
  2875. def __sub__(self: NDArray[object_], other: Any, /) -> Any: ...
  2876. @overload
  2877. def __sub__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2878. # Keep in sync with `MaskedArray.__rsub__`
  2879. @overload
  2880. def __rsub__(self: NDArray[_NumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_NumberT]]: ...
  2881. @overload
  2882. def __rsub__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2883. @overload
  2884. def __rsub__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NoReturn: ...
  2885. @overload
  2886. def __rsub__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2887. @overload
  2888. def __rsub__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2889. @overload
  2890. def __rsub__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2891. @overload
  2892. def __rsub__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  2893. @overload
  2894. def __rsub__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  2895. @overload
  2896. def __rsub__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2897. @overload
  2898. def __rsub__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2899. @overload
  2900. def __rsub__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  2901. @overload
  2902. def __rsub__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, /) -> NDArray[complexfloating]: ... # type: ignore[overload-overlap]
  2903. @overload
  2904. def __rsub__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ... # type: ignore[overload-overlap]
  2905. @overload
  2906. def __rsub__(self: _ArrayTD64_co, other: _ArrayLikeTD64_co, /) -> NDArray[timedelta64]: ...
  2907. @overload
  2908. def __rsub__(self: _ArrayTD64_co, other: _ArrayLikeDT64_co, /) -> NDArray[datetime64]: ...
  2909. @overload
  2910. def __rsub__(self: NDArray[datetime64], other: _ArrayLikeDT64_co, /) -> NDArray[timedelta64]: ...
  2911. @overload
  2912. def __rsub__(self: NDArray[object_], other: Any, /) -> Any: ...
  2913. @overload
  2914. def __rsub__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2915. # Keep in sync with `MaskedArray.__mul__`
  2916. @overload
  2917. def __mul__(self: NDArray[_NumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_NumberT]]: ...
  2918. @overload
  2919. def __mul__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2920. @overload
  2921. def __mul__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ... # type: ignore[overload-overlap]
  2922. @overload
  2923. def __mul__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2924. @overload
  2925. def __mul__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2926. @overload
  2927. def __mul__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2928. @overload
  2929. def __mul__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  2930. @overload
  2931. def __mul__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  2932. @overload
  2933. def __mul__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2934. @overload
  2935. def __mul__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2936. @overload
  2937. def __mul__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  2938. @overload
  2939. def __mul__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, /) -> NDArray[complexfloating]: ...
  2940. @overload
  2941. def __mul__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ...
  2942. @overload
  2943. def __mul__(self: NDArray[timedelta64], other: _ArrayLikeFloat_co, /) -> NDArray[timedelta64]: ...
  2944. @overload
  2945. def __mul__(self: _ArrayFloat_co, other: _ArrayLike[timedelta64], /) -> NDArray[timedelta64]: ...
  2946. @overload
  2947. def __mul__(
  2948. self: ndarray[Any, dtype[character] | dtypes.StringDType],
  2949. other: _ArrayLikeInt,
  2950. /,
  2951. ) -> ndarray[tuple[Any, ...], _DTypeT_co]: ...
  2952. @overload
  2953. def __mul__(self: NDArray[object_], other: Any, /) -> Any: ...
  2954. @overload
  2955. def __mul__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2956. # Keep in sync with `MaskedArray.__rmul__`
  2957. @overload # signature equivalent to __mul__
  2958. def __rmul__(self: NDArray[_NumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_NumberT]]: ...
  2959. @overload
  2960. def __rmul__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2961. @overload
  2962. def __rmul__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ... # type: ignore[overload-overlap]
  2963. @overload
  2964. def __rmul__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  2965. @overload
  2966. def __rmul__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  2967. @overload
  2968. def __rmul__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  2969. @overload
  2970. def __rmul__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  2971. @overload
  2972. def __rmul__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  2973. @overload
  2974. def __rmul__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  2975. @overload
  2976. def __rmul__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  2977. @overload
  2978. def __rmul__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  2979. @overload
  2980. def __rmul__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, /) -> NDArray[complexfloating]: ...
  2981. @overload
  2982. def __rmul__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ...
  2983. @overload
  2984. def __rmul__(self: NDArray[timedelta64], other: _ArrayLikeFloat_co, /) -> NDArray[timedelta64]: ...
  2985. @overload
  2986. def __rmul__(self: _ArrayFloat_co, other: _ArrayLike[timedelta64], /) -> NDArray[timedelta64]: ...
  2987. @overload
  2988. def __rmul__(
  2989. self: ndarray[Any, dtype[character] | dtypes.StringDType],
  2990. other: _ArrayLikeInt,
  2991. /,
  2992. ) -> ndarray[tuple[Any, ...], _DTypeT_co]: ...
  2993. @overload
  2994. def __rmul__(self: NDArray[object_], other: Any, /) -> Any: ...
  2995. @overload
  2996. def __rmul__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  2997. # Keep in sync with `MaskedArray.__truediv__`
  2998. @overload
  2999. def __truediv__(self: _ArrayInt_co | NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  3000. @overload
  3001. def __truediv__(self: _ArrayFloat64_co, other: _ArrayLikeInt_co | _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  3002. @overload
  3003. def __truediv__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  3004. @overload
  3005. def __truediv__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  3006. @overload
  3007. def __truediv__(self: NDArray[floating], other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ...
  3008. @overload
  3009. def __truediv__(self: _ArrayFloat_co, other: _ArrayLike[floating], /) -> NDArray[floating]: ...
  3010. @overload
  3011. def __truediv__(self: NDArray[complexfloating], other: _ArrayLikeNumber_co, /) -> NDArray[complexfloating]: ...
  3012. @overload
  3013. def __truediv__(self: _ArrayNumber_co, other: _ArrayLike[complexfloating], /) -> NDArray[complexfloating]: ...
  3014. @overload
  3015. def __truediv__(self: NDArray[inexact], other: _ArrayLikeNumber_co, /) -> NDArray[inexact]: ...
  3016. @overload
  3017. def __truediv__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ...
  3018. @overload
  3019. def __truediv__(self: NDArray[timedelta64], other: _ArrayLike[timedelta64], /) -> NDArray[float64]: ...
  3020. @overload
  3021. def __truediv__(self: NDArray[timedelta64], other: _ArrayLikeBool_co, /) -> NoReturn: ...
  3022. @overload
  3023. def __truediv__(self: NDArray[timedelta64], other: _ArrayLikeFloat_co, /) -> NDArray[timedelta64]: ...
  3024. @overload
  3025. def __truediv__(self: NDArray[object_], other: Any, /) -> Any: ...
  3026. @overload
  3027. def __truediv__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3028. # Keep in sync with `MaskedArray.__rtruediv__`
  3029. @overload
  3030. def __rtruediv__(self: _ArrayInt_co | NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  3031. @overload
  3032. def __rtruediv__(self: _ArrayFloat64_co, other: _ArrayLikeInt_co | _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  3033. @overload
  3034. def __rtruediv__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, /) -> NDArray[complex128]: ...
  3035. @overload
  3036. def __rtruediv__(self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], /) -> NDArray[complex128]: ...
  3037. @overload
  3038. def __rtruediv__(self: NDArray[floating], other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ...
  3039. @overload
  3040. def __rtruediv__(self: _ArrayFloat_co, other: _ArrayLike[floating], /) -> NDArray[floating]: ...
  3041. @overload
  3042. def __rtruediv__(self: NDArray[complexfloating], other: _ArrayLikeNumber_co, /) -> NDArray[complexfloating]: ...
  3043. @overload
  3044. def __rtruediv__(self: _ArrayNumber_co, other: _ArrayLike[complexfloating], /) -> NDArray[complexfloating]: ...
  3045. @overload
  3046. def __rtruediv__(self: NDArray[inexact], other: _ArrayLikeNumber_co, /) -> NDArray[inexact]: ...
  3047. @overload
  3048. def __rtruediv__(self: NDArray[number], other: _ArrayLikeNumber_co, /) -> NDArray[number]: ...
  3049. @overload
  3050. def __rtruediv__(self: NDArray[timedelta64], other: _ArrayLike[timedelta64], /) -> NDArray[float64]: ...
  3051. @overload
  3052. def __rtruediv__(self: NDArray[integer | floating], other: _ArrayLike[timedelta64], /) -> NDArray[timedelta64]: ...
  3053. @overload
  3054. def __rtruediv__(self: NDArray[object_], other: Any, /) -> Any: ...
  3055. @overload
  3056. def __rtruediv__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3057. # Keep in sync with `MaskedArray.__floordiv__`
  3058. @overload
  3059. def __floordiv__(self: NDArray[_RealNumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_RealNumberT]]: ...
  3060. @overload
  3061. def __floordiv__(self: NDArray[_RealNumberT], other: _ArrayLikeBool_co, /) -> NDArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  3062. @overload
  3063. def __floordiv__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[int8]: ... # type: ignore[overload-overlap]
  3064. @overload
  3065. def __floordiv__(self: NDArray[np.bool], other: _ArrayLike[_RealNumberT], /) -> NDArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  3066. @overload
  3067. def __floordiv__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  3068. @overload
  3069. def __floordiv__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  3070. @overload
  3071. def __floordiv__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3072. @overload
  3073. def __floordiv__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  3074. @overload
  3075. def __floordiv__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ...
  3076. @overload
  3077. def __floordiv__(self: NDArray[timedelta64], other: _ArrayLike[timedelta64], /) -> NDArray[int64]: ...
  3078. @overload
  3079. def __floordiv__(self: NDArray[timedelta64], other: _ArrayLikeBool_co, /) -> NoReturn: ...
  3080. @overload
  3081. def __floordiv__(self: NDArray[timedelta64], other: _ArrayLikeFloat_co, /) -> NDArray[timedelta64]: ...
  3082. @overload
  3083. def __floordiv__(self: NDArray[object_], other: Any, /) -> Any: ...
  3084. @overload
  3085. def __floordiv__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3086. # Keep in sync with `MaskedArray.__rfloordiv__`
  3087. @overload
  3088. def __rfloordiv__(self: NDArray[_RealNumberT], other: int | np.bool, /) -> ndarray[_ShapeT_co, dtype[_RealNumberT]]: ...
  3089. @overload
  3090. def __rfloordiv__(self: NDArray[_RealNumberT], other: _ArrayLikeBool_co, /) -> NDArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  3091. @overload
  3092. def __rfloordiv__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[int8]: ... # type: ignore[overload-overlap]
  3093. @overload
  3094. def __rfloordiv__(self: NDArray[np.bool], other: _ArrayLike[_RealNumberT], /) -> NDArray[_RealNumberT]: ... # type: ignore[overload-overlap]
  3095. @overload
  3096. def __rfloordiv__(self: NDArray[float64], other: _ArrayLikeFloat64_co, /) -> NDArray[float64]: ...
  3097. @overload
  3098. def __rfloordiv__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], /) -> NDArray[float64]: ...
  3099. @overload
  3100. def __rfloordiv__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3101. @overload
  3102. def __rfloordiv__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  3103. @overload
  3104. def __rfloordiv__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, /) -> NDArray[floating]: ...
  3105. @overload
  3106. def __rfloordiv__(self: NDArray[timedelta64], other: _ArrayLike[timedelta64], /) -> NDArray[int64]: ...
  3107. @overload
  3108. def __rfloordiv__(self: NDArray[floating | integer], other: _ArrayLike[timedelta64], /) -> NDArray[timedelta64]: ...
  3109. @overload
  3110. def __rfloordiv__(self: NDArray[object_], other: Any, /) -> Any: ...
  3111. @overload
  3112. def __rfloordiv__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3113. # Keep in sync with `MaskedArray.__pow__`
  3114. @overload
  3115. def __pow__(self: NDArray[_NumberT], other: int | np.bool, mod: None = None, /) -> ndarray[_ShapeT_co, dtype[_NumberT]]: ...
  3116. @overload
  3117. def __pow__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, mod: None = None, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  3118. @overload
  3119. def __pow__(self: NDArray[np.bool], other: _ArrayLikeBool_co, mod: None = None, /) -> NDArray[int8]: ... # type: ignore[overload-overlap]
  3120. @overload
  3121. def __pow__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], mod: None = None, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  3122. @overload
  3123. def __pow__(self: NDArray[float64], other: _ArrayLikeFloat64_co, mod: None = None, /) -> NDArray[float64]: ...
  3124. @overload
  3125. def __pow__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], mod: None = None, /) -> NDArray[float64]: ...
  3126. @overload
  3127. def __pow__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, mod: None = None, /) -> NDArray[complex128]: ...
  3128. @overload
  3129. def __pow__(
  3130. self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], mod: None = None, /
  3131. ) -> NDArray[complex128]: ...
  3132. @overload
  3133. def __pow__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, mod: None = None, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3134. @overload
  3135. def __pow__(self: _ArrayInt_co, other: _ArrayLikeInt_co, mod: None = None, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  3136. @overload
  3137. def __pow__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, mod: None = None, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  3138. @overload
  3139. def __pow__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, mod: None = None, /) -> NDArray[complexfloating]: ...
  3140. @overload
  3141. def __pow__(self: NDArray[number], other: _ArrayLikeNumber_co, mod: None = None, /) -> NDArray[number]: ...
  3142. @overload
  3143. def __pow__(self: NDArray[object_], other: Any, mod: None = None, /) -> Any: ...
  3144. @overload
  3145. def __pow__(self: NDArray[Any], other: _ArrayLikeObject_co, mod: None = None, /) -> Any: ...
  3146. # Keep in sync with `MaskedArray.__rpow__`
  3147. @overload
  3148. def __rpow__(self: NDArray[_NumberT], other: int | np.bool, mod: None = None, /) -> ndarray[_ShapeT_co, dtype[_NumberT]]: ...
  3149. @overload
  3150. def __rpow__(self: NDArray[_NumberT], other: _ArrayLikeBool_co, mod: None = None, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  3151. @overload
  3152. def __rpow__(self: NDArray[np.bool], other: _ArrayLikeBool_co, mod: None = None, /) -> NDArray[int8]: ... # type: ignore[overload-overlap]
  3153. @overload
  3154. def __rpow__(self: NDArray[np.bool], other: _ArrayLike[_NumberT], mod: None = None, /) -> NDArray[_NumberT]: ... # type: ignore[overload-overlap]
  3155. @overload
  3156. def __rpow__(self: NDArray[float64], other: _ArrayLikeFloat64_co, mod: None = None, /) -> NDArray[float64]: ...
  3157. @overload
  3158. def __rpow__(self: _ArrayFloat64_co, other: _ArrayLike[floating[_64Bit]], mod: None = None, /) -> NDArray[float64]: ...
  3159. @overload
  3160. def __rpow__(self: NDArray[complex128], other: _ArrayLikeComplex128_co, mod: None = None, /) -> NDArray[complex128]: ...
  3161. @overload
  3162. def __rpow__(
  3163. self: _ArrayComplex128_co, other: _ArrayLike[complexfloating[_64Bit]], mod: None = None, /
  3164. ) -> NDArray[complex128]: ...
  3165. @overload
  3166. def __rpow__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, mod: None = None, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3167. @overload
  3168. def __rpow__(self: _ArrayInt_co, other: _ArrayLikeInt_co, mod: None = None, /) -> NDArray[signedinteger]: ... # type: ignore[overload-overlap]
  3169. @overload
  3170. def __rpow__(self: _ArrayFloat_co, other: _ArrayLikeFloat_co, mod: None = None, /) -> NDArray[floating]: ... # type: ignore[overload-overlap]
  3171. @overload
  3172. def __rpow__(self: _ArrayComplex_co, other: _ArrayLikeComplex_co, mod: None = None, /) -> NDArray[complexfloating]: ...
  3173. @overload
  3174. def __rpow__(self: NDArray[number], other: _ArrayLikeNumber_co, mod: None = None, /) -> NDArray[number]: ...
  3175. @overload
  3176. def __rpow__(self: NDArray[object_], other: Any, mod: None = None, /) -> Any: ...
  3177. @overload
  3178. def __rpow__(self: NDArray[Any], other: _ArrayLikeObject_co, mod: None = None, /) -> Any: ...
  3179. @overload
  3180. def __lshift__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[int8]: ...
  3181. @overload
  3182. def __lshift__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3183. @overload
  3184. def __lshift__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3185. @overload
  3186. def __lshift__(self: NDArray[object_], other: Any, /) -> Any: ...
  3187. @overload
  3188. def __lshift__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3189. @overload
  3190. def __rlshift__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[int8]: ...
  3191. @overload
  3192. def __rlshift__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3193. @overload
  3194. def __rlshift__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3195. @overload
  3196. def __rlshift__(self: NDArray[object_], other: Any, /) -> Any: ...
  3197. @overload
  3198. def __rlshift__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3199. @overload
  3200. def __rshift__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[int8]: ...
  3201. @overload
  3202. def __rshift__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3203. @overload
  3204. def __rshift__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3205. @overload
  3206. def __rshift__(self: NDArray[object_], other: Any, /) -> Any: ...
  3207. @overload
  3208. def __rshift__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3209. @overload
  3210. def __rrshift__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[int8]: ...
  3211. @overload
  3212. def __rrshift__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3213. @overload
  3214. def __rrshift__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3215. @overload
  3216. def __rrshift__(self: NDArray[object_], other: Any, /) -> Any: ...
  3217. @overload
  3218. def __rrshift__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3219. @overload
  3220. def __and__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ...
  3221. @overload
  3222. def __and__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3223. @overload
  3224. def __and__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3225. @overload
  3226. def __and__(self: NDArray[object_], other: Any, /) -> Any: ...
  3227. @overload
  3228. def __and__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3229. @overload
  3230. def __rand__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ...
  3231. @overload
  3232. def __rand__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3233. @overload
  3234. def __rand__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3235. @overload
  3236. def __rand__(self: NDArray[object_], other: Any, /) -> Any: ...
  3237. @overload
  3238. def __rand__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3239. @overload
  3240. def __xor__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ...
  3241. @overload
  3242. def __xor__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3243. @overload
  3244. def __xor__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3245. @overload
  3246. def __xor__(self: NDArray[object_], other: Any, /) -> Any: ...
  3247. @overload
  3248. def __xor__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3249. @overload
  3250. def __rxor__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ...
  3251. @overload
  3252. def __rxor__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3253. @overload
  3254. def __rxor__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3255. @overload
  3256. def __rxor__(self: NDArray[object_], other: Any, /) -> Any: ...
  3257. @overload
  3258. def __rxor__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3259. @overload
  3260. def __or__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ...
  3261. @overload
  3262. def __or__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3263. @overload
  3264. def __or__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3265. @overload
  3266. def __or__(self: NDArray[object_], other: Any, /) -> Any: ...
  3267. @overload
  3268. def __or__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3269. @overload
  3270. def __ror__(self: NDArray[np.bool], other: _ArrayLikeBool_co, /) -> NDArray[np.bool]: ...
  3271. @overload
  3272. def __ror__(self: _ArrayUInt_co, other: _ArrayLikeUInt_co, /) -> NDArray[unsignedinteger]: ... # type: ignore[overload-overlap]
  3273. @overload
  3274. def __ror__(self: _ArrayInt_co, other: _ArrayLikeInt_co, /) -> NDArray[signedinteger]: ...
  3275. @overload
  3276. def __ror__(self: NDArray[object_], other: Any, /) -> Any: ...
  3277. @overload
  3278. def __ror__(self: NDArray[Any], other: _ArrayLikeObject_co, /) -> Any: ...
  3279. # `np.generic` does not support inplace operations
  3280. # NOTE: Inplace ops generally use "same_kind" casting w.r.t. to the left
  3281. # operand. An exception to this rule are unsigned integers though, which
  3282. # also accepts a signed integer for the right operand as long it is a 0D
  3283. # object and its value is >= 0
  3284. # NOTE: Due to a mypy bug, overloading on e.g. `self: NDArray[SCT_floating]` won't
  3285. # work, as this will lead to `false negatives` when using these inplace ops.
  3286. # +=
  3287. @overload # type: ignore[misc]
  3288. def __iadd__(self: _BoolArrayT, other: _ArrayLikeBool_co, /) -> _BoolArrayT: ...
  3289. @overload
  3290. def __iadd__(self: _ComplexFloatingArrayT, other: _ArrayLikeComplex_co, /) -> _ComplexFloatingArrayT: ...
  3291. @overload
  3292. def __iadd__(self: _InexactArrayT, other: _ArrayLikeFloat_co, /) -> _InexactArrayT: ...
  3293. @overload
  3294. def __iadd__(self: _NumberArrayT, other: _ArrayLikeInt_co, /) -> _NumberArrayT: ...
  3295. @overload
  3296. def __iadd__(self: _TimeArrayT, other: _ArrayLikeTD64_co, /) -> _TimeArrayT: ...
  3297. @overload
  3298. def __iadd__(self: _BytesArrayT, other: _ArrayLikeBytes_co, /) -> _BytesArrayT: ...
  3299. @overload
  3300. def __iadd__(self: _StringArrayT, other: _ArrayLikeStr_co | _ArrayLikeString_co, /) -> _StringArrayT: ...
  3301. @overload
  3302. def __iadd__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3303. # -=
  3304. @overload # type: ignore[misc]
  3305. def __isub__(self: _ComplexFloatingArrayT, other: _ArrayLikeComplex_co, /) -> _ComplexFloatingArrayT: ...
  3306. @overload
  3307. def __isub__(self: _InexactArrayT, other: _ArrayLikeFloat_co, /) -> _InexactArrayT: ...
  3308. @overload
  3309. def __isub__(self: _NumberArrayT, other: _ArrayLikeInt_co, /) -> _NumberArrayT: ...
  3310. @overload
  3311. def __isub__(self: _TimeArrayT, other: _ArrayLikeTD64_co, /) -> _TimeArrayT: ...
  3312. @overload
  3313. def __isub__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3314. # *=
  3315. @overload # type: ignore[misc]
  3316. def __imul__(self: _BoolArrayT, other: _ArrayLikeBool_co, /) -> _BoolArrayT: ...
  3317. @overload
  3318. def __imul__(self: _ComplexFloatingArrayT, other: _ArrayLikeComplex_co, /) -> _ComplexFloatingArrayT: ...
  3319. @overload
  3320. def __imul__(self: _InexactTimedeltaArrayT, other: _ArrayLikeFloat_co, /) -> _InexactTimedeltaArrayT: ...
  3321. @overload
  3322. def __imul__(self: _NumberCharacterArrayT, other: _ArrayLikeInt_co, /) -> _NumberCharacterArrayT: ...
  3323. @overload
  3324. def __imul__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3325. # @=
  3326. @overload # type: ignore[misc]
  3327. def __imatmul__(self: _BoolArrayT, other: _ArrayLikeBool_co, /) -> _BoolArrayT: ...
  3328. @overload
  3329. def __imatmul__(self: _ComplexFloatingArrayT, other: _ArrayLikeComplex_co, /) -> _ComplexFloatingArrayT: ...
  3330. @overload
  3331. def __imatmul__(self: _InexactArrayT, other: _ArrayLikeFloat_co, /) -> _InexactArrayT: ...
  3332. @overload
  3333. def __imatmul__(self: _NumberArrayT, other: _ArrayLikeInt_co, /) -> _NumberArrayT: ...
  3334. @overload
  3335. def __imatmul__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3336. # **=
  3337. @overload # type: ignore[misc]
  3338. def __ipow__(self: _ComplexFloatingArrayT, other: _ArrayLikeComplex_co, /) -> _ComplexFloatingArrayT: ...
  3339. @overload
  3340. def __ipow__(self: _InexactArrayT, other: _ArrayLikeFloat_co, /) -> _InexactArrayT: ...
  3341. @overload
  3342. def __ipow__(self: _NumberArrayT, other: _ArrayLikeInt_co, /) -> _NumberArrayT: ...
  3343. @overload
  3344. def __ipow__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3345. # /=
  3346. @overload # type: ignore[misc]
  3347. def __itruediv__(self: _ComplexFloatingArrayT, other: _ArrayLikeComplex_co, /) -> _ComplexFloatingArrayT: ...
  3348. @overload
  3349. def __itruediv__(self: _InexactTimedeltaArrayT, other: _ArrayLikeFloat_co, /) -> _InexactTimedeltaArrayT: ...
  3350. @overload
  3351. def __itruediv__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3352. # //=
  3353. # keep in sync with `__imod__`
  3354. @overload # type: ignore[misc]
  3355. def __ifloordiv__(self: _IntegerArrayT, other: _ArrayLikeInt_co, /) -> _IntegerArrayT: ...
  3356. @overload
  3357. def __ifloordiv__(self: _FloatingTimedeltaArrayT, other: _ArrayLikeFloat_co, /) -> _FloatingTimedeltaArrayT: ...
  3358. @overload
  3359. def __ifloordiv__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3360. # %=
  3361. # keep in sync with `__ifloordiv__`
  3362. @overload # type: ignore[misc]
  3363. def __imod__(self: _IntegerArrayT, other: _ArrayLikeInt_co, /) -> _IntegerArrayT: ...
  3364. @overload
  3365. def __imod__(self: _FloatingArrayT, other: _ArrayLikeFloat_co, /) -> _FloatingArrayT: ...
  3366. @overload
  3367. def __imod__(self: _TimedeltaArrayT, other: _ArrayLike[timedelta64], /) -> _TimedeltaArrayT: ...
  3368. @overload
  3369. def __imod__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3370. # <<=
  3371. # keep in sync with `__irshift__`
  3372. @overload # type: ignore[misc]
  3373. def __ilshift__(self: _IntegerArrayT, other: _ArrayLikeInt_co, /) -> _IntegerArrayT: ...
  3374. @overload
  3375. def __ilshift__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3376. # >>=
  3377. # keep in sync with `__ilshift__`
  3378. @overload # type: ignore[misc]
  3379. def __irshift__(self: _IntegerArrayT, other: _ArrayLikeInt_co, /) -> _IntegerArrayT: ...
  3380. @overload
  3381. def __irshift__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3382. # &=
  3383. # keep in sync with `__ixor__` and `__ior__`
  3384. @overload # type: ignore[misc]
  3385. def __iand__(self: _BoolArrayT, other: _ArrayLikeBool_co, /) -> _BoolArrayT: ...
  3386. @overload
  3387. def __iand__(self: _IntegerArrayT, other: _ArrayLikeInt_co, /) -> _IntegerArrayT: ...
  3388. @overload
  3389. def __iand__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3390. # ^=
  3391. # keep in sync with `__iand__` and `__ior__`
  3392. @overload # type: ignore[misc]
  3393. def __ixor__(self: _BoolArrayT, other: _ArrayLikeBool_co, /) -> _BoolArrayT: ...
  3394. @overload
  3395. def __ixor__(self: _IntegerArrayT, other: _ArrayLikeInt_co, /) -> _IntegerArrayT: ...
  3396. @overload
  3397. def __ixor__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3398. # |=
  3399. # keep in sync with `__iand__` and `__ixor__`
  3400. @overload # type: ignore[misc]
  3401. def __ior__(self: _BoolArrayT, other: _ArrayLikeBool_co, /) -> _BoolArrayT: ...
  3402. @overload
  3403. def __ior__(self: _IntegerArrayT, other: _ArrayLikeInt_co, /) -> _IntegerArrayT: ...
  3404. @overload
  3405. def __ior__(self: _ObjectArrayT, other: object, /) -> _ObjectArrayT: ...
  3406. #
  3407. def __dlpack__(
  3408. self: NDArray[number],
  3409. /,
  3410. *,
  3411. stream: int | Any | None = None,
  3412. max_version: tuple[int, int] | None = None,
  3413. dl_device: tuple[int, int] | None = None,
  3414. copy: builtins.bool | None = None,
  3415. ) -> CapsuleType: ...
  3416. def __dlpack_device__(self, /) -> tuple[L[1], L[0]]: ...
  3417. # Keep `dtype` at the bottom to avoid name conflicts with `np.dtype`
  3418. @property
  3419. def dtype(self) -> _DTypeT_co: ...
  3420. # NOTE: while `np.generic` is not technically an instance of `ABCMeta`,
  3421. # the `@abstractmethod` decorator is herein used to (forcefully) deny
  3422. # the creation of `np.generic` instances.
  3423. # The `# type: ignore` comments are necessary to silence mypy errors regarding
  3424. # the missing `ABCMeta` metaclass.
  3425. # See https://github.com/numpy/numpy-stubs/pull/80 for more details.
  3426. class generic(_ArrayOrScalarCommon, Generic[_ItemT_co]):
  3427. @abstractmethod
  3428. def __new__(cls, /, *args: Any, **kwargs: Any) -> Self: ...
  3429. # NOTE: Technically this doesn't exist at runtime, but it is unlikely to lead to
  3430. # type-unsafe situations (the abstract scalar types cannot be instantiated
  3431. # themselves) and is convenient to have, so we include it regardless. See
  3432. # https://github.com/numpy/numpy/issues/30445 for use-cases and discussion.
  3433. def __hash__(self, /) -> int: ...
  3434. if sys.version_info >= (3, 12):
  3435. def __buffer__(self, flags: int, /) -> memoryview: ...
  3436. @overload
  3437. def __array__(self, dtype: None = None, /) -> ndarray[tuple[()], dtype[Self]]: ...
  3438. @overload
  3439. def __array__(self, dtype: _DTypeT, /) -> ndarray[tuple[()], _DTypeT]: ...
  3440. @overload
  3441. def __array_wrap__(
  3442. self,
  3443. array: ndarray[_ShapeT, _DTypeT],
  3444. context: tuple[ufunc, tuple[object, ...], int] | None,
  3445. return_scalar: L[False],
  3446. /,
  3447. ) -> ndarray[_ShapeT, _DTypeT]: ...
  3448. @overload
  3449. def __array_wrap__(
  3450. self,
  3451. array: ndarray[tuple[()], dtype[_ScalarT]],
  3452. context: tuple[ufunc, tuple[object, ...], int] | None = None,
  3453. return_scalar: L[True] = True,
  3454. /,
  3455. ) -> _ScalarT: ...
  3456. @overload
  3457. def __array_wrap__(
  3458. self,
  3459. array: ndarray[_Shape1T, _DTypeT],
  3460. context: tuple[ufunc, tuple[object, ...], int] | None = None,
  3461. return_scalar: L[True] = True,
  3462. /,
  3463. ) -> ndarray[_Shape1T, _DTypeT]: ...
  3464. @overload
  3465. def __array_wrap__(
  3466. self,
  3467. array: ndarray[_ShapeT, dtype[_ScalarT]],
  3468. context: tuple[ufunc, tuple[object, ...], int] | None = None,
  3469. return_scalar: L[True] = True,
  3470. /,
  3471. ) -> _ScalarT | ndarray[_ShapeT, dtype[_ScalarT]]: ...
  3472. @property
  3473. def base(self) -> None: ...
  3474. @property
  3475. def ndim(self) -> L[0]: ...
  3476. @property
  3477. def size(self) -> L[1]: ...
  3478. @property
  3479. def shape(self) -> tuple[()]: ...
  3480. @property
  3481. def strides(self) -> tuple[()]: ...
  3482. @property
  3483. def flat(self) -> flatiter[ndarray[tuple[int], dtype[Self]]]: ...
  3484. @overload
  3485. def item(self, /) -> _ItemT_co: ...
  3486. @overload
  3487. def item(self, arg0: L[0, -1] | tuple[L[0, -1]] | tuple[()] = ..., /) -> _ItemT_co: ...
  3488. @override
  3489. def tolist(self, /) -> _ItemT_co: ...
  3490. # NOTE: these technically exist, but will always raise when called
  3491. def trace( # type: ignore[misc]
  3492. self: Never,
  3493. /,
  3494. offset: L[0] = 0,
  3495. axis1: L[0] = 0,
  3496. axis2: L[1] = 1,
  3497. dtype: None = None,
  3498. out: None = None,
  3499. ) -> Never: ...
  3500. def diagonal(self: Never, /, offset: L[0] = 0, axis1: L[0] = 0, axis2: L[1] = 1) -> Never: ... # type: ignore[misc]
  3501. def swapaxes(self: Never, axis1: Never, axis2: Never, /) -> Never: ... # type: ignore[misc]
  3502. def sort(self: Never, /, axis: L[-1] = -1, kind: None = None, order: None = None, *, stable: None = None) -> Never: ... # type: ignore[misc]
  3503. def nonzero(self: Never, /) -> Never: ... # type: ignore[misc]
  3504. def setfield(self: Never, val: Never, /, dtype: Never, offset: L[0] = 0) -> None: ... # type: ignore[misc]
  3505. def searchsorted(self: Never, v: Never, /, side: L["left"] = "left", sorter: None = None) -> Never: ... # type: ignore[misc]
  3506. # NOTE: this wont't raise, but won't do anything either
  3507. @overload
  3508. def resize(self, /, *, refcheck: builtins.bool = True) -> None: ...
  3509. @overload
  3510. def resize(self, new_shape: L[0, -1] | tuple[L[0, -1]] | tuple[()], /, *, refcheck: builtins.bool = True) -> None: ...
  3511. #
  3512. def byteswap(self, /, inplace: L[False] = False) -> Self: ...
  3513. #
  3514. @overload
  3515. def astype(
  3516. self,
  3517. /,
  3518. dtype: _DTypeLike[_ScalarT],
  3519. order: _OrderKACF = "K",
  3520. casting: _CastingKind = "unsafe",
  3521. subok: builtins.bool = True,
  3522. copy: builtins.bool | _CopyMode = True,
  3523. ) -> _ScalarT: ...
  3524. @overload
  3525. def astype(
  3526. self,
  3527. /,
  3528. dtype: DTypeLike | None,
  3529. order: _OrderKACF = "K",
  3530. casting: _CastingKind = "unsafe",
  3531. subok: builtins.bool = True,
  3532. copy: builtins.bool | _CopyMode = True,
  3533. ) -> Incomplete: ...
  3534. # NOTE: `view` will perform a 0D->scalar cast,
  3535. # thus the array `type` is irrelevant to the output type
  3536. @overload
  3537. def view(self, type: type[ndarray] = ...) -> Self: ...
  3538. @overload
  3539. def view(self, /, dtype: _DTypeLike[_ScalarT], type: type[ndarray] = ...) -> _ScalarT: ...
  3540. @overload
  3541. def view(self, /, dtype: DTypeLike, type: type[ndarray] = ...) -> Incomplete: ...
  3542. @overload
  3543. def getfield(self, /, dtype: _DTypeLike[_ScalarT], offset: SupportsIndex = 0) -> _ScalarT: ...
  3544. @overload
  3545. def getfield(self, /, dtype: DTypeLike, offset: SupportsIndex = 0) -> Incomplete: ...
  3546. @overload
  3547. def take(
  3548. self,
  3549. indices: _IntLike_co,
  3550. /,
  3551. axis: SupportsIndex | None = None,
  3552. out: None = None,
  3553. mode: _ModeKind = "raise",
  3554. ) -> Self: ...
  3555. @overload
  3556. def take(
  3557. self,
  3558. indices: _ArrayLikeInt_co,
  3559. /,
  3560. axis: SupportsIndex | None = None,
  3561. out: None = None,
  3562. mode: _ModeKind = "raise",
  3563. ) -> NDArray[Self]: ...
  3564. @overload
  3565. def take(
  3566. self,
  3567. indices: _ArrayLikeInt_co,
  3568. /,
  3569. axis: SupportsIndex | None = None,
  3570. *,
  3571. out: _ArrayT,
  3572. mode: _ModeKind = "raise",
  3573. ) -> _ArrayT: ...
  3574. @overload
  3575. def take(
  3576. self,
  3577. indices: _ArrayLikeInt_co,
  3578. /,
  3579. axis: SupportsIndex | None,
  3580. out: _ArrayT,
  3581. mode: _ModeKind = "raise",
  3582. ) -> _ArrayT: ...
  3583. def repeat(self, repeats: _ArrayLikeInt_co, /, axis: SupportsIndex | None = None) -> ndarray[tuple[int], dtype[Self]]: ...
  3584. def flatten(self, /, order: _OrderKACF = "C") -> ndarray[tuple[int], dtype[Self]]: ...
  3585. def ravel(self, /, order: _OrderKACF = "C") -> ndarray[tuple[int], dtype[Self]]: ...
  3586. @overload # (() | [])
  3587. def reshape(
  3588. self,
  3589. shape: tuple[()] | list[Never],
  3590. /,
  3591. *,
  3592. order: _OrderACF = "C",
  3593. copy: builtins.bool | None = None,
  3594. ) -> Self: ...
  3595. @overload # ((1, *(1, ...))@_ShapeT)
  3596. def reshape(
  3597. self,
  3598. shape: _1NShapeT,
  3599. /,
  3600. *,
  3601. order: _OrderACF = "C",
  3602. copy: builtins.bool | None = None,
  3603. ) -> ndarray[_1NShapeT, dtype[Self]]: ...
  3604. @overload # (Sequence[index, ...]) # not recommended
  3605. def reshape(
  3606. self,
  3607. shape: Sequence[SupportsIndex],
  3608. /,
  3609. *,
  3610. order: _OrderACF = "C",
  3611. copy: builtins.bool | None = None,
  3612. ) -> Self | ndarray[tuple[L[1], ...], dtype[Self]]: ...
  3613. @overload # _(index)
  3614. def reshape(
  3615. self,
  3616. size1: SupportsIndex,
  3617. /,
  3618. *,
  3619. order: _OrderACF = "C",
  3620. copy: builtins.bool | None = None,
  3621. ) -> ndarray[tuple[L[1]], dtype[Self]]: ...
  3622. @overload # _(index, index)
  3623. def reshape(
  3624. self,
  3625. size1: SupportsIndex,
  3626. size2: SupportsIndex,
  3627. /,
  3628. *,
  3629. order: _OrderACF = "C",
  3630. copy: builtins.bool | None = None,
  3631. ) -> ndarray[tuple[L[1], L[1]], dtype[Self]]: ...
  3632. @overload # _(index, index, index)
  3633. def reshape(
  3634. self,
  3635. size1: SupportsIndex,
  3636. size2: SupportsIndex,
  3637. size3: SupportsIndex,
  3638. /,
  3639. *,
  3640. order: _OrderACF = "C",
  3641. copy: builtins.bool | None = None,
  3642. ) -> ndarray[tuple[L[1], L[1], L[1]], dtype[Self]]: ...
  3643. @overload # _(index, index, index, index)
  3644. def reshape(
  3645. self,
  3646. size1: SupportsIndex,
  3647. size2: SupportsIndex,
  3648. size3: SupportsIndex,
  3649. size4: SupportsIndex,
  3650. /,
  3651. *,
  3652. order: _OrderACF = "C",
  3653. copy: builtins.bool | None = None,
  3654. ) -> ndarray[tuple[L[1], L[1], L[1], L[1]], dtype[Self]]: ...
  3655. @overload # _(index, index, index, index, index, *index) # ndim >= 5
  3656. def reshape(
  3657. self,
  3658. size1: SupportsIndex,
  3659. size2: SupportsIndex,
  3660. size3: SupportsIndex,
  3661. size4: SupportsIndex,
  3662. size5: SupportsIndex,
  3663. /,
  3664. *sizes6_: SupportsIndex,
  3665. order: _OrderACF = "C",
  3666. copy: builtins.bool | None = None,
  3667. ) -> ndarray[tuple[L[1], L[1], L[1], L[1], L[1], *tuple[L[1], ...]], dtype[Self]]: ...
  3668. def squeeze(self, axis: L[0] | tuple[()] | None = ...) -> Self: ...
  3669. def transpose(self, axes: tuple[()] | None = ..., /) -> Self: ...
  3670. @overload
  3671. def all(
  3672. self,
  3673. /,
  3674. axis: L[0, -1] | tuple[()] | None = None,
  3675. out: None = None,
  3676. keepdims: SupportsIndex = False,
  3677. *,
  3678. where: builtins.bool | np.bool | ndarray[tuple[()], dtype[np.bool]] = True
  3679. ) -> np.bool: ...
  3680. @overload
  3681. def all(
  3682. self,
  3683. /,
  3684. axis: L[0, -1] | tuple[()] | None,
  3685. out: ndarray[tuple[()], dtype[_ScalarT]],
  3686. keepdims: SupportsIndex = False,
  3687. *,
  3688. where: builtins.bool | np.bool | ndarray[tuple[()], dtype[np.bool]] = True,
  3689. ) -> _ScalarT: ...
  3690. @overload
  3691. def all(
  3692. self,
  3693. /,
  3694. axis: L[0, -1] | tuple[()] | None = None,
  3695. *,
  3696. out: ndarray[tuple[()], dtype[_ScalarT]],
  3697. keepdims: SupportsIndex = False,
  3698. where: builtins.bool | np.bool | ndarray[tuple[()], dtype[np.bool]] = True,
  3699. ) -> _ScalarT: ...
  3700. @overload
  3701. def any(
  3702. self,
  3703. /,
  3704. axis: L[0, -1] | tuple[()] | None = None,
  3705. out: None = None,
  3706. keepdims: SupportsIndex = False,
  3707. *,
  3708. where: builtins.bool | np.bool | ndarray[tuple[()], dtype[np.bool]] = True
  3709. ) -> np.bool: ...
  3710. @overload
  3711. def any(
  3712. self,
  3713. /,
  3714. axis: L[0, -1] | tuple[()] | None,
  3715. out: ndarray[tuple[()], dtype[_ScalarT]],
  3716. keepdims: SupportsIndex = False,
  3717. *,
  3718. where: builtins.bool | np.bool | ndarray[tuple[()], dtype[np.bool]] = True,
  3719. ) -> _ScalarT: ...
  3720. @overload
  3721. def any(
  3722. self,
  3723. /,
  3724. axis: L[0, -1] | tuple[()] | None = None,
  3725. *,
  3726. out: ndarray[tuple[()], dtype[_ScalarT]],
  3727. keepdims: SupportsIndex = False,
  3728. where: builtins.bool | np.bool | ndarray[tuple[()], dtype[np.bool]] = True,
  3729. ) -> _ScalarT: ...
  3730. # Keep `dtype` at the bottom to avoid name conflicts with `np.dtype`
  3731. @property
  3732. def dtype(self) -> _dtype[Self]: ...
  3733. class number(generic[_NumberItemT_co], Generic[_NBit, _NumberItemT_co]):
  3734. @abstractmethod # `SupportsIndex | str | bytes` equivs `_ConvertibleToInt & _ConvertibleToFloat`
  3735. def __new__(cls, value: SupportsIndex | str | bytes = 0, /) -> Self: ...
  3736. def __class_getitem__(cls, item: Any, /) -> GenericAlias: ...
  3737. def __neg__(self) -> Self: ...
  3738. def __pos__(self) -> Self: ...
  3739. def __abs__(self) -> Self: ...
  3740. def __add__(self, other: _NumberLike_co, /) -> Incomplete: ...
  3741. def __radd__(self, other: _NumberLike_co, /) -> Incomplete: ...
  3742. def __sub__(self, other: _NumberLike_co, /) -> Incomplete: ...
  3743. def __rsub__(self, other: _NumberLike_co, /) -> Incomplete: ...
  3744. def __mul__(self, other: _NumberLike_co, /) -> Incomplete: ...
  3745. def __rmul__(self, other: _NumberLike_co, /) -> Incomplete: ...
  3746. def __pow__(self, other: _NumberLike_co, mod: None = None, /) -> Incomplete: ...
  3747. def __rpow__(self, other: _NumberLike_co, mod: None = None, /) -> Incomplete: ...
  3748. def __truediv__(self, other: _NumberLike_co, /) -> Incomplete: ...
  3749. def __rtruediv__(self, other: _NumberLike_co, /) -> Incomplete: ...
  3750. @overload
  3751. def __lt__(self, other: _NumberLike_co, /) -> bool_: ...
  3752. @overload
  3753. def __lt__(self, other: _ArrayLikeNumber_co | _NestedSequence[_SupportsGT], /) -> NDArray[bool_]: ...
  3754. @overload
  3755. def __lt__(self, other: _SupportsGT, /) -> bool_: ...
  3756. @overload
  3757. def __le__(self, other: _NumberLike_co, /) -> bool_: ...
  3758. @overload
  3759. def __le__(self, other: _ArrayLikeNumber_co | _NestedSequence[_SupportsGE], /) -> NDArray[bool_]: ...
  3760. @overload
  3761. def __le__(self, other: _SupportsGE, /) -> bool_: ...
  3762. @overload
  3763. def __gt__(self, other: _NumberLike_co, /) -> bool_: ...
  3764. @overload
  3765. def __gt__(self, other: _ArrayLikeNumber_co | _NestedSequence[_SupportsLT], /) -> NDArray[bool_]: ...
  3766. @overload
  3767. def __gt__(self, other: _SupportsLT, /) -> bool_: ...
  3768. @overload
  3769. def __ge__(self, other: _NumberLike_co, /) -> bool_: ...
  3770. @overload
  3771. def __ge__(self, other: _ArrayLikeNumber_co | _NestedSequence[_SupportsLE], /) -> NDArray[bool_]: ...
  3772. @overload
  3773. def __ge__(self, other: _SupportsLE, /) -> bool_: ...
  3774. class bool(generic[_BoolItemT_co], Generic[_BoolItemT_co]):
  3775. @property
  3776. def itemsize(self) -> L[1]: ...
  3777. @property
  3778. def nbytes(self) -> L[1]: ...
  3779. @property
  3780. def real(self) -> Self: ...
  3781. @property
  3782. def imag(self) -> np.bool[L[False]]: ...
  3783. @overload # mypy bug workaround: https://github.com/numpy/numpy/issues/29245
  3784. def __new__(cls, value: Never, /) -> np.bool[builtins.bool]: ...
  3785. @overload
  3786. def __new__(cls, value: _Falsy = ..., /) -> np.bool[L[False]]: ...
  3787. @overload
  3788. def __new__(cls, value: _Truthy, /) -> np.bool[L[True]]: ...
  3789. @overload
  3790. def __new__(cls, value: object, /) -> np.bool[builtins.bool]: ...
  3791. def __class_getitem__(cls, type_arg: type | object, /) -> GenericAlias: ...
  3792. def __bool__(self, /) -> _BoolItemT_co: ...
  3793. @overload
  3794. def __int__(self: np.bool[L[False]], /) -> L[0]: ...
  3795. @overload
  3796. def __int__(self: np.bool[L[True]], /) -> L[1]: ...
  3797. @overload
  3798. def __int__(self, /) -> L[0, 1]: ...
  3799. def __abs__(self) -> Self: ...
  3800. @overload
  3801. def __invert__(self: np.bool[L[False]], /) -> np.bool[L[True]]: ...
  3802. @overload
  3803. def __invert__(self: np.bool[L[True]], /) -> np.bool[L[False]]: ...
  3804. @overload
  3805. def __invert__(self, /) -> np.bool: ...
  3806. @overload
  3807. def __add__(self, other: _NumberT, /) -> _NumberT: ...
  3808. @overload
  3809. def __add__(self, other: builtins.bool | bool_, /) -> bool_: ...
  3810. @overload
  3811. def __add__(self, other: int, /) -> int_: ...
  3812. @overload
  3813. def __add__(self, other: float, /) -> float64: ...
  3814. @overload
  3815. def __add__(self, other: complex, /) -> complex128: ...
  3816. @overload
  3817. def __radd__(self, other: _NumberT, /) -> _NumberT: ...
  3818. @overload
  3819. def __radd__(self, other: builtins.bool, /) -> bool_: ...
  3820. @overload
  3821. def __radd__(self, other: int, /) -> int_: ...
  3822. @overload
  3823. def __radd__(self, other: float, /) -> float64: ...
  3824. @overload
  3825. def __radd__(self, other: complex, /) -> complex128: ...
  3826. @overload
  3827. def __sub__(self, other: _NumberT, /) -> _NumberT: ...
  3828. @overload
  3829. def __sub__(self, other: int, /) -> int_: ...
  3830. @overload
  3831. def __sub__(self, other: float, /) -> float64: ...
  3832. @overload
  3833. def __sub__(self, other: complex, /) -> complex128: ...
  3834. @overload
  3835. def __rsub__(self, other: _NumberT, /) -> _NumberT: ...
  3836. @overload
  3837. def __rsub__(self, other: int, /) -> int_: ...
  3838. @overload
  3839. def __rsub__(self, other: float, /) -> float64: ...
  3840. @overload
  3841. def __rsub__(self, other: complex, /) -> complex128: ...
  3842. @overload
  3843. def __mul__(self, other: _NumberT, /) -> _NumberT: ...
  3844. @overload
  3845. def __mul__(self, other: builtins.bool | bool_, /) -> bool_: ...
  3846. @overload
  3847. def __mul__(self, other: int, /) -> int_: ...
  3848. @overload
  3849. def __mul__(self, other: float, /) -> float64: ...
  3850. @overload
  3851. def __mul__(self, other: complex, /) -> complex128: ...
  3852. @overload
  3853. def __rmul__(self, other: _NumberT, /) -> _NumberT: ...
  3854. @overload
  3855. def __rmul__(self, other: builtins.bool, /) -> bool_: ...
  3856. @overload
  3857. def __rmul__(self, other: int, /) -> int_: ...
  3858. @overload
  3859. def __rmul__(self, other: float, /) -> float64: ...
  3860. @overload
  3861. def __rmul__(self, other: complex, /) -> complex128: ...
  3862. @overload
  3863. def __pow__(self, other: _NumberT, mod: None = None, /) -> _NumberT: ...
  3864. @overload
  3865. def __pow__(self, other: builtins.bool | bool_, mod: None = None, /) -> int8: ...
  3866. @overload
  3867. def __pow__(self, other: int, mod: None = None, /) -> int_: ...
  3868. @overload
  3869. def __pow__(self, other: float, mod: None = None, /) -> float64: ...
  3870. @overload
  3871. def __pow__(self, other: complex, mod: None = None, /) -> complex128: ...
  3872. @overload
  3873. def __rpow__(self, other: _NumberT, mod: None = None, /) -> _NumberT: ...
  3874. @overload
  3875. def __rpow__(self, other: builtins.bool, mod: None = None, /) -> int8: ...
  3876. @overload
  3877. def __rpow__(self, other: int, mod: None = None, /) -> int_: ...
  3878. @overload
  3879. def __rpow__(self, other: float, mod: None = None, /) -> float64: ...
  3880. @overload
  3881. def __rpow__(self, other: complex, mod: None = None, /) -> complex128: ...
  3882. @overload
  3883. def __truediv__(self, other: _InexactT, /) -> _InexactT: ...
  3884. @overload
  3885. def __truediv__(self, other: float | integer | bool_, /) -> float64: ...
  3886. @overload
  3887. def __truediv__(self, other: complex, /) -> complex128: ...
  3888. @overload
  3889. def __rtruediv__(self, other: _InexactT, /) -> _InexactT: ...
  3890. @overload
  3891. def __rtruediv__(self, other: float | integer, /) -> float64: ...
  3892. @overload
  3893. def __rtruediv__(self, other: complex, /) -> complex128: ...
  3894. @overload
  3895. def __floordiv__(self, other: _RealNumberT, /) -> _RealNumberT: ...
  3896. @overload
  3897. def __floordiv__(self, other: builtins.bool | bool_, /) -> int8: ...
  3898. @overload
  3899. def __floordiv__(self, other: int, /) -> int_: ...
  3900. @overload
  3901. def __floordiv__(self, other: float, /) -> float64: ...
  3902. @overload
  3903. def __rfloordiv__(self, other: _RealNumberT, /) -> _RealNumberT: ...
  3904. @overload
  3905. def __rfloordiv__(self, other: builtins.bool, /) -> int8: ...
  3906. @overload
  3907. def __rfloordiv__(self, other: int, /) -> int_: ...
  3908. @overload
  3909. def __rfloordiv__(self, other: float, /) -> float64: ...
  3910. # keep in sync with __floordiv__
  3911. @overload
  3912. def __mod__(self, other: _RealNumberT, /) -> _RealNumberT: ...
  3913. @overload
  3914. def __mod__(self, other: builtins.bool | bool_, /) -> int8: ...
  3915. @overload
  3916. def __mod__(self, other: int, /) -> int_: ...
  3917. @overload
  3918. def __mod__(self, other: float, /) -> float64: ...
  3919. # keep in sync with __rfloordiv__
  3920. @overload
  3921. def __rmod__(self, other: _RealNumberT, /) -> _RealNumberT: ...
  3922. @overload
  3923. def __rmod__(self, other: builtins.bool, /) -> int8: ...
  3924. @overload
  3925. def __rmod__(self, other: int, /) -> int_: ...
  3926. @overload
  3927. def __rmod__(self, other: float, /) -> float64: ...
  3928. # keep in sync with __mod__
  3929. @overload
  3930. def __divmod__(self, other: _RealNumberT, /) -> _2Tuple[_RealNumberT]: ...
  3931. @overload
  3932. def __divmod__(self, other: builtins.bool | bool_, /) -> _2Tuple[int8]: ...
  3933. @overload
  3934. def __divmod__(self, other: int, /) -> _2Tuple[int_]: ...
  3935. @overload
  3936. def __divmod__(self, other: float, /) -> _2Tuple[float64]: ...
  3937. # keep in sync with __rmod__
  3938. @overload
  3939. def __rdivmod__(self, other: _RealNumberT, /) -> _2Tuple[_RealNumberT]: ...
  3940. @overload
  3941. def __rdivmod__(self, other: builtins.bool, /) -> _2Tuple[int8]: ...
  3942. @overload
  3943. def __rdivmod__(self, other: int, /) -> _2Tuple[int_]: ...
  3944. @overload
  3945. def __rdivmod__(self, other: float, /) -> _2Tuple[float64]: ...
  3946. @overload
  3947. def __lshift__(self, other: _IntegerT, /) -> _IntegerT: ...
  3948. @overload
  3949. def __lshift__(self, other: builtins.bool | bool_, /) -> int8: ...
  3950. @overload
  3951. def __lshift__(self, other: int, /) -> int_: ...
  3952. @overload
  3953. def __rlshift__(self, other: _IntegerT, /) -> _IntegerT: ...
  3954. @overload
  3955. def __rlshift__(self, other: builtins.bool, /) -> int8: ...
  3956. @overload
  3957. def __rlshift__(self, other: int, /) -> int_: ...
  3958. # keep in sync with __lshift__
  3959. @overload
  3960. def __rshift__(self, other: _IntegerT, /) -> _IntegerT: ...
  3961. @overload
  3962. def __rshift__(self, other: builtins.bool | bool_, /) -> int8: ...
  3963. @overload
  3964. def __rshift__(self, other: int, /) -> int_: ...
  3965. # keep in sync with __rlshift__
  3966. @overload
  3967. def __rrshift__(self, other: _IntegerT, /) -> _IntegerT: ...
  3968. @overload
  3969. def __rrshift__(self, other: builtins.bool, /) -> int8: ...
  3970. @overload
  3971. def __rrshift__(self, other: int, /) -> int_: ...
  3972. @overload
  3973. def __and__(self: np.bool[L[False]], other: builtins.bool | np.bool, /) -> np.bool[L[False]]: ...
  3974. @overload
  3975. def __and__(self, other: L[False] | np.bool[L[False]], /) -> np.bool[L[False]]: ...
  3976. @overload
  3977. def __and__(self, other: L[True] | np.bool[L[True]], /) -> Self: ...
  3978. @overload
  3979. def __and__(self, other: builtins.bool | np.bool, /) -> np.bool: ...
  3980. @overload
  3981. def __and__(self, other: _IntegerT, /) -> _IntegerT: ...
  3982. @overload
  3983. def __and__(self, other: int, /) -> np.bool | intp: ...
  3984. __rand__ = __and__
  3985. @overload
  3986. def __xor__(self: np.bool[L[False]], other: _BoolItemT | np.bool[_BoolItemT], /) -> np.bool[_BoolItemT]: ...
  3987. @overload
  3988. def __xor__(self: np.bool[L[True]], other: L[True] | np.bool[L[True]], /) -> np.bool[L[False]]: ...
  3989. @overload
  3990. def __xor__(self, other: L[False] | np.bool[L[False]], /) -> Self: ...
  3991. @overload
  3992. def __xor__(self, other: builtins.bool | np.bool, /) -> np.bool: ...
  3993. @overload
  3994. def __xor__(self, other: _IntegerT, /) -> _IntegerT: ...
  3995. @overload
  3996. def __xor__(self, other: int, /) -> np.bool | intp: ...
  3997. __rxor__ = __xor__
  3998. @overload
  3999. def __or__(self: np.bool[L[True]], other: builtins.bool | np.bool, /) -> np.bool[L[True]]: ...
  4000. @overload
  4001. def __or__(self, other: L[False] | np.bool[L[False]], /) -> Self: ...
  4002. @overload
  4003. def __or__(self, other: L[True] | np.bool[L[True]], /) -> np.bool[L[True]]: ...
  4004. @overload
  4005. def __or__(self, other: builtins.bool | np.bool, /) -> np.bool: ...
  4006. @overload
  4007. def __or__(self, other: _IntegerT, /) -> _IntegerT: ...
  4008. @overload
  4009. def __or__(self, other: int, /) -> np.bool | intp: ...
  4010. __ror__ = __or__
  4011. @overload
  4012. def __lt__(self, other: _NumberLike_co, /) -> bool_: ...
  4013. @overload
  4014. def __lt__(self, other: _ArrayLikeNumber_co | _NestedSequence[_SupportsGT], /) -> NDArray[bool_]: ...
  4015. @overload
  4016. def __lt__(self, other: _SupportsGT, /) -> bool_: ...
  4017. @overload
  4018. def __le__(self, other: _NumberLike_co, /) -> bool_: ...
  4019. @overload
  4020. def __le__(self, other: _ArrayLikeNumber_co | _NestedSequence[_SupportsGE], /) -> NDArray[bool_]: ...
  4021. @overload
  4022. def __le__(self, other: _SupportsGE, /) -> bool_: ...
  4023. @overload
  4024. def __gt__(self, other: _NumberLike_co, /) -> bool_: ...
  4025. @overload
  4026. def __gt__(self, other: _ArrayLikeNumber_co | _NestedSequence[_SupportsLT], /) -> NDArray[bool_]: ...
  4027. @overload
  4028. def __gt__(self, other: _SupportsLT, /) -> bool_: ...
  4029. @overload
  4030. def __ge__(self, other: _NumberLike_co, /) -> bool_: ...
  4031. @overload
  4032. def __ge__(self, other: _ArrayLikeNumber_co | _NestedSequence[_SupportsLE], /) -> NDArray[bool_]: ...
  4033. @overload
  4034. def __ge__(self, other: _SupportsLE, /) -> bool_: ...
  4035. # NOTE: This should _not_ be `Final` or a `TypeAlias`
  4036. bool_ = bool
  4037. # NOTE: The `object_` constructor returns the passed object, so instances with type
  4038. # `object_` cannot exists (at runtime).
  4039. # NOTE: Because mypy has some long-standing bugs related to `__new__`, `object_` can't
  4040. # be made generic.
  4041. @final
  4042. class object_(_RealMixin, generic):
  4043. @overload
  4044. def __new__(cls, value: None = None, /) -> None: ... # type: ignore[misc]
  4045. @overload
  4046. def __new__(cls, value: _AnyStr, /) -> _AnyStr: ... # type: ignore[misc]
  4047. @overload
  4048. def __new__(cls, value: ndarray[_ShapeT, Any], /) -> ndarray[_ShapeT, dtype[Self]]: ... # type: ignore[misc]
  4049. @overload
  4050. def __new__(cls, value: SupportsLenAndGetItem[object], /) -> NDArray[Self]: ... # type: ignore[misc]
  4051. @overload
  4052. def __new__(cls, value: _T, /) -> _T: ... # type: ignore[misc]
  4053. @overload # catch-all
  4054. def __new__(cls, value: Any = ..., /) -> object | NDArray[Self]: ... # type: ignore[misc]
  4055. def __hash__(self, /) -> int: ...
  4056. def __abs__(self, /) -> object_: ... # this affects NDArray[object_].__abs__
  4057. def __call__(self, /, *args: object, **kwargs: object) -> Any: ...
  4058. if sys.version_info >= (3, 12):
  4059. def __release_buffer__(self, buffer: memoryview, /) -> None: ...
  4060. class integer(_IntegralMixin, _RoundMixin, number[_NBit, int]):
  4061. @abstractmethod
  4062. def __new__(cls, value: _ConvertibleToInt = 0, /) -> Self: ...
  4063. # NOTE: `bit_count` and `__index__` are technically defined in the concrete subtypes
  4064. def bit_count(self, /) -> int: ...
  4065. def __index__(self, /) -> int: ...
  4066. def __invert__(self, /) -> Self: ...
  4067. @override # type: ignore[override]
  4068. @overload
  4069. def __truediv__(self, other: float | integer, /) -> float64: ...
  4070. @overload
  4071. def __truediv__(self, other: complex, /) -> complex128: ...
  4072. @override # type: ignore[override]
  4073. @overload
  4074. def __rtruediv__(self, other: float | integer, /) -> float64: ...
  4075. @overload
  4076. def __rtruediv__(self, other: complex, /) -> complex128: ...
  4077. def __floordiv__(self, value: _IntLike_co, /) -> integer: ...
  4078. def __rfloordiv__(self, value: _IntLike_co, /) -> integer: ...
  4079. def __mod__(self, value: _IntLike_co, /) -> integer: ...
  4080. def __rmod__(self, value: _IntLike_co, /) -> integer: ...
  4081. def __divmod__(self, value: _IntLike_co, /) -> _2Tuple[integer]: ...
  4082. def __rdivmod__(self, value: _IntLike_co, /) -> _2Tuple[integer]: ...
  4083. # Ensure that objects annotated as `integer` support bit-wise operations
  4084. def __lshift__(self, other: _IntLike_co, /) -> integer: ...
  4085. def __rlshift__(self, other: _IntLike_co, /) -> integer: ...
  4086. def __rshift__(self, other: _IntLike_co, /) -> integer: ...
  4087. def __rrshift__(self, other: _IntLike_co, /) -> integer: ...
  4088. def __and__(self, other: _IntLike_co, /) -> integer: ...
  4089. def __rand__(self, other: _IntLike_co, /) -> integer: ...
  4090. def __or__(self, other: _IntLike_co, /) -> integer: ...
  4091. def __ror__(self, other: _IntLike_co, /) -> integer: ...
  4092. def __xor__(self, other: _IntLike_co, /) -> integer: ...
  4093. def __rxor__(self, other: _IntLike_co, /) -> integer: ...
  4094. class signedinteger(integer[_NBit]):
  4095. def __new__(cls, value: _ConvertibleToInt = 0, /) -> Self: ...
  4096. # arithmetic ops
  4097. @override # type: ignore[override]
  4098. @overload
  4099. def __add__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4100. @overload
  4101. def __add__(self, other: float, /) -> float64: ...
  4102. @overload
  4103. def __add__(self, other: complex, /) -> complex128: ...
  4104. @overload
  4105. def __add__(self, other: signedinteger, /) -> signedinteger: ...
  4106. @overload
  4107. def __add__(self, other: integer, /) -> Incomplete: ...
  4108. @override # type: ignore[override]
  4109. @overload
  4110. def __radd__(self, other: int | int8 | bool_, /) -> Self: ...
  4111. @overload
  4112. def __radd__(self, other: float, /) -> float64: ...
  4113. @overload
  4114. def __radd__(self, other: complex, /) -> complex128: ...
  4115. @overload
  4116. def __radd__(self, other: signedinteger, /) -> signedinteger: ...
  4117. @overload
  4118. def __radd__(self, other: integer, /) -> Incomplete: ...
  4119. @override # type: ignore[override]
  4120. @overload
  4121. def __sub__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4122. @overload
  4123. def __sub__(self, other: float, /) -> float64: ...
  4124. @overload
  4125. def __sub__(self, other: complex, /) -> complex128: ...
  4126. @overload
  4127. def __sub__(self, other: signedinteger, /) -> signedinteger: ...
  4128. @overload
  4129. def __sub__(self, other: integer, /) -> Incomplete: ...
  4130. @override # type: ignore[override]
  4131. @overload
  4132. def __rsub__(self, other: int | int8 | bool_, /) -> Self: ...
  4133. @overload
  4134. def __rsub__(self, other: float, /) -> float64: ...
  4135. @overload
  4136. def __rsub__(self, other: complex, /) -> complex128: ...
  4137. @overload
  4138. def __rsub__(self, other: signedinteger, /) -> signedinteger: ...
  4139. @overload
  4140. def __rsub__(self, other: integer, /) -> Incomplete: ...
  4141. @override # type: ignore[override]
  4142. @overload
  4143. def __mul__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4144. @overload
  4145. def __mul__(self, other: float, /) -> float64: ...
  4146. @overload
  4147. def __mul__(self, other: complex, /) -> complex128: ...
  4148. @overload
  4149. def __mul__(self, other: signedinteger, /) -> signedinteger: ...
  4150. @overload
  4151. def __mul__(self, other: integer, /) -> Incomplete: ...
  4152. @override # type: ignore[override]
  4153. @overload
  4154. def __rmul__(self, other: int | int8 | bool_, /) -> Self: ...
  4155. @overload
  4156. def __rmul__(self, other: float, /) -> float64: ...
  4157. @overload
  4158. def __rmul__(self, other: complex, /) -> complex128: ...
  4159. @overload
  4160. def __rmul__(self, other: signedinteger, /) -> signedinteger: ...
  4161. @overload
  4162. def __rmul__(self, other: integer, /) -> Incomplete: ...
  4163. @override # type: ignore[override]
  4164. @overload
  4165. def __pow__(self, other: int | int8 | bool_ | Self, mod: None = None, /) -> Self: ...
  4166. @overload
  4167. def __pow__(self, other: float, mod: None = None, /) -> float64: ...
  4168. @overload
  4169. def __pow__(self, other: complex, mod: None = None, /) -> complex128: ...
  4170. @overload
  4171. def __pow__(self, other: signedinteger, mod: None = None, /) -> signedinteger: ...
  4172. @overload
  4173. def __pow__(self, other: integer, mod: None = None, /) -> Incomplete: ...
  4174. @override # type: ignore[override]
  4175. @overload
  4176. def __rpow__(self, other: int | int8 | bool_, mod: None = None, /) -> Self: ...
  4177. @overload
  4178. def __rpow__(self, other: float, mod: None = None, /) -> float64: ...
  4179. @overload
  4180. def __rpow__(self, other: complex, mod: None = None, /) -> complex128: ...
  4181. @overload
  4182. def __rpow__(self, other: signedinteger, mod: None = None, /) -> signedinteger: ...
  4183. @overload
  4184. def __rpow__(self, other: integer, mod: None = None, /) -> Incomplete: ...
  4185. # modular division ops
  4186. @override # type: ignore[override]
  4187. @overload
  4188. def __floordiv__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4189. @overload
  4190. def __floordiv__(self, other: float, /) -> float64: ...
  4191. @overload
  4192. def __floordiv__(self, other: signedinteger, /) -> signedinteger: ...
  4193. @overload
  4194. def __floordiv__(self, other: integer, /) -> Incomplete: ...
  4195. @override # type: ignore[override]
  4196. @overload
  4197. def __rfloordiv__(self, other: int | int8 | bool_, /) -> Self: ...
  4198. @overload
  4199. def __rfloordiv__(self, other: float, /) -> float64: ...
  4200. @overload
  4201. def __rfloordiv__(self, other: signedinteger, /) -> signedinteger: ...
  4202. @overload
  4203. def __rfloordiv__(self, other: integer, /) -> Incomplete: ...
  4204. @override # type: ignore[override]
  4205. @overload
  4206. def __mod__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4207. @overload
  4208. def __mod__(self, other: float, /) -> float64: ...
  4209. @overload
  4210. def __mod__(self, other: signedinteger, /) -> signedinteger: ...
  4211. @overload
  4212. def __mod__(self, other: integer, /) -> Incomplete: ...
  4213. @override # type: ignore[override]
  4214. @overload
  4215. def __rmod__(self, other: int | int8 | bool_, /) -> Self: ...
  4216. @overload
  4217. def __rmod__(self, other: float, /) -> float64: ...
  4218. @overload
  4219. def __rmod__(self, other: signedinteger, /) -> signedinteger: ...
  4220. @overload
  4221. def __rmod__(self, other: integer, /) -> Incomplete: ...
  4222. @override # type: ignore[override]
  4223. @overload
  4224. def __divmod__(self, other: int | int8 | bool_ | Self, /) -> _2Tuple[Self]: ...
  4225. @overload
  4226. def __divmod__(self, other: float, /) -> _2Tuple[float64]: ...
  4227. @overload
  4228. def __divmod__(self, other: signedinteger, /) -> _2Tuple[signedinteger]: ...
  4229. @overload
  4230. def __divmod__(self, other: integer, /) -> _2Tuple[Incomplete]: ...
  4231. @override # type: ignore[override]
  4232. @overload
  4233. def __rdivmod__(self, other: int | int8 | bool_, /) -> _2Tuple[Self]: ...
  4234. @overload
  4235. def __rdivmod__(self, other: float, /) -> _2Tuple[float64]: ...
  4236. @overload
  4237. def __rdivmod__(self, other: signedinteger, /) -> _2Tuple[signedinteger]: ...
  4238. @overload
  4239. def __rdivmod__(self, other: integer, /) -> _2Tuple[Incomplete]: ...
  4240. # bitwise ops
  4241. @override # type: ignore[override]
  4242. @overload
  4243. def __lshift__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4244. @overload
  4245. def __lshift__(self, other: integer, /) -> signedinteger: ...
  4246. @override # type: ignore[override]
  4247. @overload
  4248. def __rlshift__(self, other: int | int8 | bool_, /) -> Self: ...
  4249. @overload
  4250. def __rlshift__(self, other: integer, /) -> signedinteger: ...
  4251. @override # type: ignore[override]
  4252. @overload
  4253. def __rshift__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4254. @overload
  4255. def __rshift__(self, other: integer, /) -> signedinteger: ...
  4256. @override # type: ignore[override]
  4257. @overload
  4258. def __rrshift__(self, other: int | int8 | bool_, /) -> Self: ...
  4259. @overload
  4260. def __rrshift__(self, other: integer, /) -> signedinteger: ...
  4261. @override # type: ignore[override]
  4262. @overload
  4263. def __and__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4264. @overload
  4265. def __and__(self, other: integer, /) -> signedinteger: ...
  4266. @override # type: ignore[override]
  4267. @overload
  4268. def __rand__(self, other: int | int8 | bool_, /) -> Self: ...
  4269. @overload
  4270. def __rand__(self, other: integer, /) -> signedinteger: ...
  4271. @override # type: ignore[override]
  4272. @overload
  4273. def __xor__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4274. @overload
  4275. def __xor__(self, other: integer, /) -> signedinteger: ...
  4276. @override # type: ignore[override]
  4277. @overload
  4278. def __rxor__(self, other: int | int8 | bool_, /) -> Self: ...
  4279. @overload
  4280. def __rxor__(self, other: integer, /) -> signedinteger: ...
  4281. @override # type: ignore[override]
  4282. @overload
  4283. def __or__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4284. @overload
  4285. def __or__(self, other: integer, /) -> signedinteger: ...
  4286. @override # type: ignore[override]
  4287. @overload
  4288. def __ror__(self, other: int | int8 | bool_, /) -> Self: ...
  4289. @overload
  4290. def __ror__(self, other: integer, /) -> signedinteger: ...
  4291. int8 = signedinteger[_8Bit]
  4292. int16 = signedinteger[_16Bit]
  4293. int32 = signedinteger[_32Bit]
  4294. int64 = signedinteger[_64Bit]
  4295. byte = signedinteger[_NBitByte]
  4296. short = signedinteger[_NBitShort]
  4297. intc = signedinteger[_NBitIntC]
  4298. intp = signedinteger[_NBitIntP]
  4299. int_ = intp
  4300. long = signedinteger[_NBitLong]
  4301. longlong = signedinteger[_NBitLongLong]
  4302. class unsignedinteger(integer[_NBit1]):
  4303. def __new__(cls, value: _ConvertibleToInt = 0, /) -> Self: ...
  4304. # arithmetic ops
  4305. @override # type: ignore[override]
  4306. @overload
  4307. def __add__(self, other: int | uint8 | bool_ | Self, /) -> Self: ...
  4308. @overload
  4309. def __add__(self, other: float, /) -> float64: ...
  4310. @overload
  4311. def __add__(self, other: complex, /) -> complex128: ...
  4312. @overload
  4313. def __add__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4314. @overload
  4315. def __add__(self, other: integer, /) -> Incomplete: ...
  4316. @override # type: ignore[override]
  4317. @overload
  4318. def __radd__(self, other: int | uint8 | bool_, /) -> Self: ...
  4319. @overload
  4320. def __radd__(self, other: float, /) -> float64: ...
  4321. @overload
  4322. def __radd__(self, other: complex, /) -> complex128: ...
  4323. @overload
  4324. def __radd__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4325. @overload
  4326. def __radd__(self, other: integer, /) -> Incomplete: ...
  4327. @override # type: ignore[override]
  4328. @overload
  4329. def __sub__(self, other: int | uint8 | bool_ | Self, /) -> Self: ...
  4330. @overload
  4331. def __sub__(self, other: float, /) -> float64: ...
  4332. @overload
  4333. def __sub__(self, other: complex, /) -> complex128: ...
  4334. @overload
  4335. def __sub__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4336. @overload
  4337. def __sub__(self, other: integer, /) -> Incomplete: ...
  4338. @override # type: ignore[override]
  4339. @overload
  4340. def __rsub__(self, other: int | uint8 | bool_, /) -> Self: ...
  4341. @overload
  4342. def __rsub__(self, other: float, /) -> float64: ...
  4343. @overload
  4344. def __rsub__(self, other: complex, /) -> complex128: ...
  4345. @overload
  4346. def __rsub__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4347. @overload
  4348. def __rsub__(self, other: integer, /) -> Incomplete: ...
  4349. @override # type: ignore[override]
  4350. @overload
  4351. def __mul__(self, other: int | uint8 | bool_ | Self, /) -> Self: ...
  4352. @overload
  4353. def __mul__(self, other: float, /) -> float64: ...
  4354. @overload
  4355. def __mul__(self, other: complex, /) -> complex128: ...
  4356. @overload
  4357. def __mul__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4358. @overload
  4359. def __mul__(self, other: integer, /) -> Incomplete: ...
  4360. @override # type: ignore[override]
  4361. @overload
  4362. def __rmul__(self, other: int | uint8 | bool_, /) -> Self: ...
  4363. @overload
  4364. def __rmul__(self, other: float, /) -> float64: ...
  4365. @overload
  4366. def __rmul__(self, other: complex, /) -> complex128: ...
  4367. @overload
  4368. def __rmul__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4369. @overload
  4370. def __rmul__(self, other: integer, /) -> Incomplete: ...
  4371. @override # type: ignore[override]
  4372. @overload
  4373. def __pow__(self, other: int | uint8 | bool_ | Self, mod: None = None, /) -> Self: ...
  4374. @overload
  4375. def __pow__(self, other: float, mod: None = None, /) -> float64: ...
  4376. @overload
  4377. def __pow__(self, other: complex, mod: None = None, /) -> complex128: ...
  4378. @overload
  4379. def __pow__(self, other: unsignedinteger, mod: None = None, /) -> unsignedinteger: ...
  4380. @overload
  4381. def __pow__(self, other: integer, mod: None = None, /) -> Incomplete: ...
  4382. @override # type: ignore[override]
  4383. @overload
  4384. def __rpow__(self, other: int | uint8 | bool_, mod: None = None, /) -> Self: ...
  4385. @overload
  4386. def __rpow__(self, other: float, mod: None = None, /) -> float64: ...
  4387. @overload
  4388. def __rpow__(self, other: complex, mod: None = None, /) -> complex128: ...
  4389. @overload
  4390. def __rpow__(self, other: unsignedinteger, mod: None = None, /) -> unsignedinteger: ...
  4391. @overload
  4392. def __rpow__(self, other: integer, mod: None = None, /) -> Incomplete: ...
  4393. # modular division ops
  4394. @override # type: ignore[override]
  4395. @overload
  4396. def __floordiv__(self, other: int | uint8 | bool_ | Self, /) -> Self: ...
  4397. @overload
  4398. def __floordiv__(self, other: float, /) -> float64: ...
  4399. @overload
  4400. def __floordiv__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4401. @overload
  4402. def __floordiv__(self, other: integer, /) -> Incomplete: ...
  4403. @override # type: ignore[override]
  4404. @overload
  4405. def __rfloordiv__(self, other: int | uint8 | bool_, /) -> Self: ...
  4406. @overload
  4407. def __rfloordiv__(self, other: float, /) -> float64: ...
  4408. @overload
  4409. def __rfloordiv__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4410. @overload
  4411. def __rfloordiv__(self, other: integer, /) -> Incomplete: ...
  4412. @override # type: ignore[override]
  4413. @overload
  4414. def __mod__(self, other: int | uint8 | bool_ | Self, /) -> Self: ...
  4415. @overload
  4416. def __mod__(self, other: float, /) -> float64: ...
  4417. @overload
  4418. def __mod__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4419. @overload
  4420. def __mod__(self, other: integer, /) -> Incomplete: ...
  4421. @override # type: ignore[override]
  4422. @overload
  4423. def __rmod__(self, other: int | uint8 | bool_, /) -> Self: ...
  4424. @overload
  4425. def __rmod__(self, other: float, /) -> float64: ...
  4426. @overload
  4427. def __rmod__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4428. @overload
  4429. def __rmod__(self, other: integer, /) -> Incomplete: ...
  4430. @override # type: ignore[override]
  4431. @overload
  4432. def __divmod__(self, other: int | uint8 | bool_ | Self, /) -> _2Tuple[Self]: ...
  4433. @overload
  4434. def __divmod__(self, other: float, /) -> _2Tuple[float64]: ...
  4435. @overload
  4436. def __divmod__(self, other: unsignedinteger, /) -> _2Tuple[unsignedinteger]: ...
  4437. @overload
  4438. def __divmod__(self, other: integer, /) -> _2Tuple[Incomplete]: ...
  4439. @override # type: ignore[override]
  4440. @overload
  4441. def __rdivmod__(self, other: int | uint8 | bool_, /) -> _2Tuple[Self]: ...
  4442. @overload
  4443. def __rdivmod__(self, other: float, /) -> _2Tuple[float64]: ...
  4444. @overload
  4445. def __rdivmod__(self, other: unsignedinteger, /) -> _2Tuple[unsignedinteger]: ...
  4446. @overload
  4447. def __rdivmod__(self, other: integer, /) -> _2Tuple[Incomplete]: ...
  4448. # bitwise ops
  4449. @override # type: ignore[override]
  4450. @overload
  4451. def __lshift__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4452. @overload
  4453. def __lshift__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4454. @overload
  4455. def __lshift__(self, other: signedinteger, /) -> signedinteger: ...
  4456. @override # type: ignore[override]
  4457. @overload
  4458. def __rlshift__(self, other: int | int8 | bool_, /) -> Self: ...
  4459. @overload
  4460. def __rlshift__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4461. @overload
  4462. def __rlshift__(self, other: signedinteger, /) -> signedinteger: ...
  4463. @override # type: ignore[override]
  4464. @overload
  4465. def __rshift__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4466. @overload
  4467. def __rshift__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4468. @overload
  4469. def __rshift__(self, other: signedinteger, /) -> signedinteger: ...
  4470. @override # type: ignore[override]
  4471. @overload
  4472. def __rrshift__(self, other: int | int8 | bool_, /) -> Self: ...
  4473. @overload
  4474. def __rrshift__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4475. @overload
  4476. def __rrshift__(self, other: signedinteger, /) -> signedinteger: ...
  4477. @override # type: ignore[override]
  4478. @overload
  4479. def __and__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4480. @overload
  4481. def __and__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4482. @overload
  4483. def __and__(self, other: signedinteger, /) -> signedinteger: ...
  4484. @override # type: ignore[override]
  4485. @overload
  4486. def __rand__(self, other: int | int8 | bool_, /) -> Self: ...
  4487. @overload
  4488. def __rand__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4489. @overload
  4490. def __rand__(self, other: signedinteger, /) -> signedinteger: ...
  4491. @override # type: ignore[override]
  4492. @overload
  4493. def __xor__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4494. @overload
  4495. def __xor__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4496. @overload
  4497. def __xor__(self, other: signedinteger, /) -> signedinteger: ...
  4498. @override # type: ignore[override]
  4499. @overload
  4500. def __rxor__(self, other: int | int8 | bool_, /) -> Self: ...
  4501. @overload
  4502. def __rxor__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4503. @overload
  4504. def __rxor__(self, other: signedinteger, /) -> signedinteger: ...
  4505. @override # type: ignore[override]
  4506. @overload
  4507. def __or__(self, other: int | int8 | bool_ | Self, /) -> Self: ...
  4508. @overload
  4509. def __or__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4510. @overload
  4511. def __or__(self, other: signedinteger, /) -> signedinteger: ...
  4512. @override # type: ignore[override]
  4513. @overload
  4514. def __ror__(self, other: int | int8 | bool_, /) -> Self: ...
  4515. @overload
  4516. def __ror__(self, other: unsignedinteger, /) -> unsignedinteger: ...
  4517. @overload
  4518. def __ror__(self, other: signedinteger, /) -> signedinteger: ...
  4519. uint8: TypeAlias = unsignedinteger[_8Bit]
  4520. uint16: TypeAlias = unsignedinteger[_16Bit]
  4521. uint32: TypeAlias = unsignedinteger[_32Bit]
  4522. uint64: TypeAlias = unsignedinteger[_64Bit]
  4523. ubyte: TypeAlias = unsignedinteger[_NBitByte]
  4524. ushort: TypeAlias = unsignedinteger[_NBitShort]
  4525. uintc: TypeAlias = unsignedinteger[_NBitIntC]
  4526. uintp: TypeAlias = unsignedinteger[_NBitIntP]
  4527. uint: TypeAlias = uintp
  4528. ulong: TypeAlias = unsignedinteger[_NBitLong]
  4529. ulonglong: TypeAlias = unsignedinteger[_NBitLongLong]
  4530. class inexact(number[_NBit, _InexactItemT_co], Generic[_NBit, _InexactItemT_co]):
  4531. @abstractmethod
  4532. def __new__(cls, value: _ConvertibleToFloat | None = 0, /) -> Self: ...
  4533. class floating(_RealMixin, _RoundMixin, inexact[_NBit1, float]):
  4534. def __new__(cls, value: _ConvertibleToFloat | None = 0, /) -> Self: ...
  4535. # arithmetic ops
  4536. @override # type: ignore[override]
  4537. @overload
  4538. def __add__(self, other: int | float16 | uint8 | int8 | bool_ | Self, /) -> Self: ...
  4539. @overload
  4540. def __add__(self, other: integer | floating, /) -> floating: ...
  4541. @overload
  4542. def __add__(self, other: float, /) -> Self: ...
  4543. @overload
  4544. def __add__(self, other: complex, /) -> complexfloating: ...
  4545. @override # type: ignore[override]
  4546. @overload
  4547. def __radd__(self, other: int | float16 | uint8 | int8 | bool_, /) -> Self: ...
  4548. @overload
  4549. def __radd__(self, other: integer | floating, /) -> floating: ...
  4550. @overload
  4551. def __radd__(self, other: float, /) -> Self: ...
  4552. @overload
  4553. def __radd__(self, other: complex, /) -> complexfloating: ...
  4554. @override # type: ignore[override]
  4555. @overload
  4556. def __sub__(self, other: int | float16 | uint8 | int8 | bool_ | Self, /) -> Self: ...
  4557. @overload
  4558. def __sub__(self, other: integer | floating, /) -> floating: ...
  4559. @overload
  4560. def __sub__(self, other: float, /) -> Self: ...
  4561. @overload
  4562. def __sub__(self, other: complex, /) -> complexfloating: ...
  4563. @override # type: ignore[override]
  4564. @overload
  4565. def __rsub__(self, other: int | float16 | uint8 | int8 | bool_, /) -> Self: ...
  4566. @overload
  4567. def __rsub__(self, other: integer | floating, /) -> floating: ...
  4568. @overload
  4569. def __rsub__(self, other: float, /) -> Self: ...
  4570. @overload
  4571. def __rsub__(self, other: complex, /) -> complexfloating: ...
  4572. @override # type: ignore[override]
  4573. @overload
  4574. def __mul__(self, other: int | float16 | uint8 | int8 | bool_ | Self, /) -> Self: ...
  4575. @overload
  4576. def __mul__(self, other: integer | floating, /) -> floating: ...
  4577. @overload
  4578. def __mul__(self, other: float, /) -> Self: ...
  4579. @overload
  4580. def __mul__(self, other: complex, /) -> complexfloating: ...
  4581. @override # type: ignore[override]
  4582. @overload
  4583. def __rmul__(self, other: int | float16 | uint8 | int8 | bool_, /) -> Self: ...
  4584. @overload
  4585. def __rmul__(self, other: integer | floating, /) -> floating: ...
  4586. @overload
  4587. def __rmul__(self, other: float, /) -> Self: ...
  4588. @overload
  4589. def __rmul__(self, other: complex, /) -> complexfloating: ...
  4590. @override # type: ignore[override]
  4591. @overload
  4592. def __pow__(self, other: int | float16 | uint8 | int8 | bool_ | Self, mod: None = None, /) -> Self: ...
  4593. @overload
  4594. def __pow__(self, other: integer | floating, mod: None = None, /) -> floating: ...
  4595. @overload
  4596. def __pow__(self, other: float, mod: None = None, /) -> Self: ...
  4597. @overload
  4598. def __pow__(self, other: complex, mod: None = None, /) -> complexfloating: ...
  4599. @override # type: ignore[override]
  4600. @overload
  4601. def __rpow__(self, other: int | float16 | uint8 | int8 | bool_, mod: None = None, /) -> Self: ...
  4602. @overload
  4603. def __rpow__(self, other: integer | floating, mod: None = None, /) -> floating: ...
  4604. @overload
  4605. def __rpow__(self, other: float, mod: None = None, /) -> Self: ...
  4606. @overload
  4607. def __rpow__(self, other: complex, mod: None = None, /) -> complexfloating: ...
  4608. @override # type: ignore[override]
  4609. @overload
  4610. def __truediv__(self, other: int | float16 | uint8 | int8 | bool_ | Self, /) -> Self: ...
  4611. @overload
  4612. def __truediv__(self, other: integer | floating, /) -> floating: ...
  4613. @overload
  4614. def __truediv__(self, other: float, /) -> Self: ...
  4615. @overload
  4616. def __truediv__(self, other: complex, /) -> complexfloating: ...
  4617. @override # type: ignore[override]
  4618. @overload
  4619. def __rtruediv__(self, other: int | float16 | uint8 | int8 | bool_, /) -> Self: ...
  4620. @overload
  4621. def __rtruediv__(self, other: integer | floating, /) -> floating: ...
  4622. @overload
  4623. def __rtruediv__(self, other: float, /) -> Self: ...
  4624. @overload
  4625. def __rtruediv__(self, other: complex, /) -> complexfloating: ...
  4626. # modular division ops
  4627. @overload
  4628. def __floordiv__(self, other: int | float16 | uint8 | int8 | bool_ | Self, /) -> Self: ...
  4629. @overload
  4630. def __floordiv__(self, other: integer | floating, /) -> floating: ...
  4631. @overload
  4632. def __floordiv__(self, other: float, /) -> Self: ...
  4633. @overload
  4634. def __rfloordiv__(self, other: int | float16 | uint8 | int8 | bool_, /) -> Self: ...
  4635. @overload
  4636. def __rfloordiv__(self, other: integer | floating, /) -> floating: ...
  4637. @overload
  4638. def __rfloordiv__(self, other: float, /) -> Self: ...
  4639. @overload
  4640. def __mod__(self, other: int | float16 | uint8 | int8 | bool_ | Self, /) -> Self: ...
  4641. @overload
  4642. def __mod__(self, other: integer | floating, /) -> floating: ...
  4643. @overload
  4644. def __mod__(self, other: float, /) -> Self: ...
  4645. @overload
  4646. def __rmod__(self, other: int | float16 | uint8 | int8 | bool_, /) -> Self: ...
  4647. @overload
  4648. def __rmod__(self, other: integer | floating, /) -> floating: ...
  4649. @overload
  4650. def __rmod__(self, other: float, /) -> Self: ...
  4651. @overload
  4652. def __divmod__(self, other: int | float16 | uint8 | int8 | bool_ | Self, /) -> _2Tuple[Self]: ...
  4653. @overload
  4654. def __divmod__(self, other: integer | floating, /) -> _2Tuple[floating]: ...
  4655. @overload
  4656. def __divmod__(self, other: float, /) -> _2Tuple[Self]: ...
  4657. @overload
  4658. def __rdivmod__(self, other: int | float16 | uint8 | int8 | bool_, /) -> _2Tuple[Self]: ...
  4659. @overload
  4660. def __rdivmod__(self, other: integer | floating, /) -> _2Tuple[floating]: ...
  4661. @overload
  4662. def __rdivmod__(self, other: float, /) -> _2Tuple[Self]: ...
  4663. # NOTE: `is_integer` and `as_integer_ratio` are technically defined in the concrete subtypes
  4664. def is_integer(self, /) -> builtins.bool: ...
  4665. def as_integer_ratio(self, /) -> tuple[int, int]: ...
  4666. float16: TypeAlias = floating[_16Bit]
  4667. float32: TypeAlias = floating[_32Bit]
  4668. # either a C `double`, `float`, or `longdouble`
  4669. class float64(floating[_64Bit], float): # type: ignore[misc]
  4670. @property
  4671. def itemsize(self) -> L[8]: ...
  4672. @property
  4673. def nbytes(self) -> L[8]: ...
  4674. # overrides for `floating` and `builtins.float` compatibility (`_RealMixin` doesn't work)
  4675. @property
  4676. def real(self) -> Self: ...
  4677. @property
  4678. def imag(self) -> Self: ...
  4679. def conjugate(self) -> Self: ...
  4680. def __getnewargs__(self, /) -> tuple[float]: ...
  4681. @classmethod
  4682. def __getformat__(cls, typestr: L["double", "float"], /) -> str: ... # undocumented
  4683. # float64-specific operator overrides
  4684. # NOTE: Mypy reports [misc] errors about "unsafely overlapping signatures" for the
  4685. # reflected methods. But since they are identical to the non-reflected versions,
  4686. # these errors appear to be false positives.
  4687. @overload # type: ignore[override]
  4688. def __add__(self, other: _Float64_co, /) -> float64: ...
  4689. @overload
  4690. def __add__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ...
  4691. @overload
  4692. def __add__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4693. @overload
  4694. def __add__(self, other: complex, /) -> float64 | complex128: ...
  4695. @overload # type: ignore[override]
  4696. def __radd__(self, other: _Float64_co, /) -> float64: ... # type: ignore[misc]
  4697. @overload
  4698. def __radd__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ... # type: ignore[misc]
  4699. @overload
  4700. def __radd__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4701. @overload
  4702. def __radd__(self, other: complex, /) -> float64 | complex128: ...
  4703. @overload # type: ignore[override]
  4704. def __sub__(self, other: _Float64_co, /) -> float64: ...
  4705. @overload
  4706. def __sub__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ...
  4707. @overload
  4708. def __sub__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4709. @overload
  4710. def __sub__(self, other: complex, /) -> float64 | complex128: ...
  4711. @overload # type: ignore[override]
  4712. def __rsub__(self, other: _Float64_co, /) -> float64: ... # type: ignore[misc]
  4713. @overload
  4714. def __rsub__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ... # type: ignore[misc]
  4715. @overload
  4716. def __rsub__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4717. @overload
  4718. def __rsub__(self, other: complex, /) -> float64 | complex128: ...
  4719. @overload # type: ignore[override]
  4720. def __mul__(self, other: _Float64_co, /) -> float64: ...
  4721. @overload
  4722. def __mul__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ...
  4723. @overload
  4724. def __mul__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4725. @overload
  4726. def __mul__(self, other: complex, /) -> float64 | complex128: ...
  4727. @overload # type: ignore[override]
  4728. def __rmul__(self, other: _Float64_co, /) -> float64: ... # type: ignore[misc]
  4729. @overload
  4730. def __rmul__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ... # type: ignore[misc]
  4731. @overload
  4732. def __rmul__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4733. @overload
  4734. def __rmul__(self, other: complex, /) -> float64 | complex128: ...
  4735. @overload # type: ignore[override]
  4736. def __truediv__(self, other: _Float64_co, /) -> float64: ...
  4737. @overload
  4738. def __truediv__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ...
  4739. @overload
  4740. def __truediv__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4741. @overload
  4742. def __truediv__(self, other: complex, /) -> float64 | complex128: ...
  4743. @overload # type: ignore[override]
  4744. def __rtruediv__(self, other: _Float64_co, /) -> float64: ... # type: ignore[misc]
  4745. @overload
  4746. def __rtruediv__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ... # type: ignore[misc]
  4747. @overload
  4748. def __rtruediv__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4749. @overload
  4750. def __rtruediv__(self, other: complex, /) -> float64 | complex128: ...
  4751. @overload # type: ignore[override]
  4752. def __floordiv__(self, other: _Float64_co, /) -> float64: ...
  4753. @overload
  4754. def __floordiv__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ...
  4755. @overload
  4756. def __floordiv__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4757. @overload
  4758. def __floordiv__(self, other: complex, /) -> float64 | complex128: ...
  4759. @overload
  4760. def __rfloordiv__(self, other: _Float64_co, /) -> float64: ... # type: ignore[misc]
  4761. @overload
  4762. def __rfloordiv__(self, other: complexfloating[_64Bit, _64Bit], /) -> complex128: ...
  4763. @overload
  4764. def __rfloordiv__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4765. @overload
  4766. def __rfloordiv__(self, other: complex, /) -> float64 | complex128: ...
  4767. @overload # type: ignore[override]
  4768. def __pow__(self, other: _Float64_co, mod: None = None, /) -> float64: ...
  4769. @overload
  4770. def __pow__(self, other: complexfloating[_64Bit, _64Bit], mod: None = None, /) -> complex128: ...
  4771. @overload
  4772. def __pow__(
  4773. self, other: complexfloating[_NBit1, _NBit2], mod: None = None, /
  4774. ) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4775. @overload
  4776. def __pow__(self, other: complex, mod: None = None, /) -> float64 | complex128: ...
  4777. @overload # type: ignore[override]
  4778. def __rpow__(self, other: _Float64_co, mod: None = None, /) -> float64: ... # type: ignore[misc]
  4779. @overload
  4780. def __rpow__(self, other: complexfloating[_64Bit, _64Bit], mod: None = None, /) -> complex128: ... # type: ignore[misc]
  4781. @overload
  4782. def __rpow__(
  4783. self, other: complexfloating[_NBit1, _NBit2], mod: None = None, /
  4784. ) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4785. @overload
  4786. def __rpow__(self, other: complex, mod: None = None, /) -> float64 | complex128: ...
  4787. def __mod__(self, other: _Float64_co, /) -> float64: ...
  4788. def __rmod__(self, other: _Float64_co, /) -> float64: ... # type: ignore[misc]
  4789. def __divmod__(self, other: _Float64_co, /) -> _2Tuple[float64]: ...
  4790. def __rdivmod__(self, other: _Float64_co, /) -> _2Tuple[float64]: ... # type: ignore[misc]
  4791. half: TypeAlias = float16
  4792. single: TypeAlias = float32
  4793. double: TypeAlias = float64
  4794. longdouble: TypeAlias = floating[_NBitLongDouble]
  4795. # The main reason for `complexfloating` having two typevars is cosmetic.
  4796. # It is used to clarify why `complex128`s precision is `_64Bit`, the latter
  4797. # describing the two 64 bit floats representing its real and imaginary component
  4798. class complexfloating(inexact[_NBit1, complex], Generic[_NBit1, _NBit2]):
  4799. @overload
  4800. def __new__(
  4801. cls,
  4802. real: complex | SupportsComplex | SupportsFloat | SupportsIndex = 0,
  4803. imag: complex | SupportsFloat | SupportsIndex = 0,
  4804. /,
  4805. ) -> Self: ...
  4806. @overload
  4807. def __new__(cls, real: _ConvertibleToComplex | None = 0, /) -> Self: ...
  4808. @property
  4809. def real(self) -> floating[_NBit1]: ...
  4810. @property
  4811. def imag(self) -> floating[_NBit2]: ...
  4812. # NOTE: `__complex__` is technically defined in the concrete subtypes
  4813. def __complex__(self, /) -> complex: ...
  4814. def __abs__(self, /) -> floating[_NBit1 | _NBit2]: ... # type: ignore[override]
  4815. @overload # type: ignore[override]
  4816. def __add__(self, other: _Complex64_co, /) -> complexfloating[_NBit1, _NBit2]: ...
  4817. @overload
  4818. def __add__(self, other: complex | float64 | complex128, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4819. @overload
  4820. def __add__(self, other: number[_NBit], /) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4821. @overload # type: ignore[override]
  4822. def __radd__(self, other: _Complex64_co, /) -> complexfloating[_NBit1, _NBit2]: ...
  4823. @overload
  4824. def __radd__(self, other: complex, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4825. @overload
  4826. def __radd__(self, other: number[_NBit], /) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4827. @overload # type: ignore[override]
  4828. def __sub__(self, other: _Complex64_co, /) -> complexfloating[_NBit1, _NBit2]: ...
  4829. @overload
  4830. def __sub__(self, other: complex | float64 | complex128, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4831. @overload
  4832. def __sub__(self, other: number[_NBit], /) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4833. @overload # type: ignore[override]
  4834. def __rsub__(self, other: _Complex64_co, /) -> complexfloating[_NBit1, _NBit2]: ...
  4835. @overload
  4836. def __rsub__(self, other: complex, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4837. @overload
  4838. def __rsub__(self, other: number[_NBit], /) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4839. @overload # type: ignore[override]
  4840. def __mul__(self, other: _Complex64_co, /) -> complexfloating[_NBit1, _NBit2]: ...
  4841. @overload
  4842. def __mul__(self, other: complex | float64 | complex128, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4843. @overload
  4844. def __mul__(self, other: number[_NBit], /) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4845. @overload # type: ignore[override]
  4846. def __rmul__(self, other: _Complex64_co, /) -> complexfloating[_NBit1, _NBit2]: ...
  4847. @overload
  4848. def __rmul__(self, other: complex, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4849. @overload
  4850. def __rmul__(self, other: number[_NBit], /) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4851. @overload # type: ignore[override]
  4852. def __truediv__(self, other: _Complex64_co, /) -> complexfloating[_NBit1, _NBit2]: ...
  4853. @overload
  4854. def __truediv__(self, other: complex | float64 | complex128, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4855. @overload
  4856. def __truediv__(self, other: number[_NBit], /) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4857. @overload # type: ignore[override]
  4858. def __rtruediv__(self, other: _Complex64_co, /) -> complexfloating[_NBit1, _NBit2]: ...
  4859. @overload
  4860. def __rtruediv__(self, other: complex, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4861. @overload
  4862. def __rtruediv__(self, other: number[_NBit], /) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4863. @overload # type: ignore[override]
  4864. def __pow__(self, other: _Complex64_co, mod: None = None, /) -> complexfloating[_NBit1, _NBit2]: ...
  4865. @overload
  4866. def __pow__(
  4867. self, other: complex | float64 | complex128, mod: None = None, /
  4868. ) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4869. @overload
  4870. def __pow__(
  4871. self, other: number[_NBit], mod: None = None, /
  4872. ) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4873. @overload # type: ignore[override]
  4874. def __rpow__(self, other: _Complex64_co, mod: None = None, /) -> complexfloating[_NBit1, _NBit2]: ...
  4875. @overload
  4876. def __rpow__(self, other: complex, mod: None = None, /) -> complexfloating[_NBit1, _NBit2] | complex128: ...
  4877. @overload
  4878. def __rpow__(
  4879. self, other: number[_NBit], mod: None = None, /
  4880. ) -> complexfloating[_NBit1, _NBit2] | complexfloating[_NBit, _NBit]: ...
  4881. complex64: TypeAlias = complexfloating[_32Bit]
  4882. class complex128(complexfloating[_64Bit, _64Bit], complex):
  4883. @property
  4884. def itemsize(self) -> L[16]: ...
  4885. @property
  4886. def nbytes(self) -> L[16]: ...
  4887. # overrides for `floating` and `builtins.float` compatibility
  4888. @property
  4889. def real(self) -> float64: ...
  4890. @property
  4891. def imag(self) -> float64: ...
  4892. def conjugate(self) -> Self: ...
  4893. def __abs__(self) -> float64: ... # type: ignore[override]
  4894. def __getnewargs__(self, /) -> tuple[float, float]: ...
  4895. # complex128-specific operator overrides
  4896. @overload # type: ignore[override]
  4897. def __add__(self, other: _Complex128_co, /) -> complex128: ...
  4898. @overload
  4899. def __add__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4900. def __radd__(self, other: _Complex128_co, /) -> complex128: ... # type: ignore[override]
  4901. @overload # type: ignore[override]
  4902. def __sub__(self, other: _Complex128_co, /) -> complex128: ...
  4903. @overload
  4904. def __sub__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4905. def __rsub__(self, other: _Complex128_co, /) -> complex128: ... # type: ignore[override]
  4906. @overload # type: ignore[override]
  4907. def __mul__(self, other: _Complex128_co, /) -> complex128: ...
  4908. @overload
  4909. def __mul__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4910. def __rmul__(self, other: _Complex128_co, /) -> complex128: ... # type: ignore[override]
  4911. @overload # type: ignore[override]
  4912. def __truediv__(self, other: _Complex128_co, /) -> complex128: ...
  4913. @overload
  4914. def __truediv__(self, other: complexfloating[_NBit1, _NBit2], /) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4915. def __rtruediv__(self, other: _Complex128_co, /) -> complex128: ... # type: ignore[override]
  4916. @overload # type: ignore[override]
  4917. def __pow__(self, other: _Complex128_co, mod: None = None, /) -> complex128: ...
  4918. @overload
  4919. def __pow__(
  4920. self, other: complexfloating[_NBit1, _NBit2], mod: None = None, /
  4921. ) -> complexfloating[_NBit1 | _64Bit, _NBit2 | _64Bit]: ...
  4922. def __rpow__(self, other: _Complex128_co, mod: None = None, /) -> complex128: ... # type: ignore[override]
  4923. csingle: TypeAlias = complex64
  4924. cdouble: TypeAlias = complex128
  4925. clongdouble: TypeAlias = complexfloating[_NBitLongDouble]
  4926. class timedelta64(_IntegralMixin, generic[_TD64ItemT_co], Generic[_TD64ItemT_co]):
  4927. @property
  4928. def itemsize(self) -> L[8]: ...
  4929. @property
  4930. def nbytes(self) -> L[8]: ...
  4931. @overload
  4932. def __new__(cls, value: _TD64ItemT_co | timedelta64[_TD64ItemT_co], /) -> Self: ...
  4933. @overload
  4934. def __new__(cls, /) -> timedelta64[L[0]]: ...
  4935. @overload
  4936. def __new__(cls, value: _NaTValue | None, format: _TimeUnitSpec, /) -> timedelta64[None]: ...
  4937. @overload
  4938. def __new__(cls, value: L[0], format: _TimeUnitSpec[_IntTD64Unit] = ..., /) -> timedelta64[L[0]]: ...
  4939. @overload
  4940. def __new__(cls, value: _IntLike_co, format: _TimeUnitSpec[_IntTD64Unit] = ..., /) -> timedelta64[int]: ...
  4941. @overload
  4942. def __new__(cls, value: dt.timedelta, format: _TimeUnitSpec[_IntTimeUnit], /) -> timedelta64[int]: ...
  4943. @overload
  4944. def __new__(
  4945. cls,
  4946. value: dt.timedelta | _IntLike_co,
  4947. format: _TimeUnitSpec[_NativeTD64Unit] = ...,
  4948. /,
  4949. ) -> timedelta64[dt.timedelta]: ...
  4950. @overload
  4951. def __new__(cls, value: _ConvertibleToTD64, format: _TimeUnitSpec = ..., /) -> Self: ...
  4952. # inherited at runtime from `signedinteger`
  4953. def __class_getitem__(cls, type_arg: type | object, /) -> GenericAlias: ...
  4954. # NOTE: Only a limited number of units support conversion
  4955. # to builtin scalar types: `Y`, `M`, `ns`, `ps`, `fs`, `as`
  4956. def __int__(self: timedelta64[int], /) -> int: ...
  4957. def __float__(self: timedelta64[int], /) -> float: ...
  4958. def __neg__(self, /) -> Self: ...
  4959. def __pos__(self, /) -> Self: ...
  4960. def __abs__(self, /) -> Self: ...
  4961. @overload
  4962. def __add__(self: timedelta64[None], x: _TD64Like_co, /) -> timedelta64[None]: ...
  4963. @overload
  4964. def __add__(self: timedelta64[int], x: timedelta64[int | dt.timedelta], /) -> timedelta64[int]: ...
  4965. @overload
  4966. def __add__(self: timedelta64[int], x: timedelta64, /) -> timedelta64[int | None]: ...
  4967. @overload
  4968. def __add__(self: timedelta64[dt.timedelta], x: _AnyDateOrTime, /) -> _AnyDateOrTime: ...
  4969. @overload
  4970. def __add__(self: timedelta64[_AnyTD64Item], x: timedelta64[_AnyTD64Item] | _IntLike_co, /) -> timedelta64[_AnyTD64Item]: ...
  4971. @overload
  4972. def __add__(self, x: timedelta64[None], /) -> timedelta64[None]: ... # type: ignore[overload-cannot-match]
  4973. __radd__ = __add__
  4974. @overload
  4975. def __mul__(self: timedelta64[_AnyTD64Item], x: int | np.integer | np.bool, /) -> timedelta64[_AnyTD64Item]: ...
  4976. @overload
  4977. def __mul__(self: timedelta64[_AnyTD64Item], x: float | np.floating, /) -> timedelta64[_AnyTD64Item | None]: ...
  4978. @overload
  4979. def __mul__(self, x: float | np.floating | np.integer | np.bool, /) -> timedelta64: ...
  4980. __rmul__ = __mul__
  4981. @overload
  4982. def __mod__(self, x: timedelta64[L[0] | None], /) -> timedelta64[None]: ...
  4983. @overload
  4984. def __mod__(self: timedelta64[None], x: timedelta64, /) -> timedelta64[None]: ...
  4985. @overload
  4986. def __mod__(self: timedelta64[int], x: timedelta64[int | dt.timedelta], /) -> timedelta64[int | None]: ...
  4987. @overload
  4988. def __mod__(self: timedelta64[dt.timedelta], x: timedelta64[_AnyTD64Item], /) -> timedelta64[_AnyTD64Item | None]: ...
  4989. @overload
  4990. def __mod__(self: timedelta64[dt.timedelta], x: dt.timedelta, /) -> dt.timedelta: ...
  4991. @overload
  4992. def __mod__(self, x: timedelta64[int], /) -> timedelta64[int | None]: ...
  4993. @overload
  4994. def __mod__(self, x: timedelta64, /) -> timedelta64: ...
  4995. # NOTE: The L[0] makes __mod__ non-commutative, which the first two overloads
  4996. # reflect. However, mypy does not seem to like this, so we ignore the errors.
  4997. @overload
  4998. def __rmod__(self, x: timedelta64[None], /) -> timedelta64[None]: ... # type: ignore[misc]
  4999. @overload
  5000. def __rmod__(self: timedelta64[L[0] | None], x: timedelta64, /) -> timedelta64[None]: ...
  5001. @overload
  5002. def __rmod__(self: timedelta64[int], x: timedelta64[int | dt.timedelta], /) -> timedelta64[int | None]: ... # type: ignore[misc]
  5003. @overload
  5004. def __rmod__(self: timedelta64[dt.timedelta], x: timedelta64[_AnyTD64Item], /) -> timedelta64[_AnyTD64Item | None]: ... # type: ignore[misc]
  5005. @overload
  5006. def __rmod__(self: timedelta64[dt.timedelta], x: dt.timedelta, /) -> dt.timedelta: ...
  5007. @overload
  5008. def __rmod__(self, x: timedelta64[int], /) -> timedelta64[int | None]: ... # type: ignore[misc]
  5009. @overload
  5010. def __rmod__(self, x: timedelta64, /) -> timedelta64: ... # type: ignore[misc]
  5011. # keep in sync with __mod__
  5012. @overload
  5013. def __divmod__(self, x: timedelta64[L[0] | None], /) -> tuple[int64, timedelta64[None]]: ...
  5014. @overload
  5015. def __divmod__(self: timedelta64[None], x: timedelta64, /) -> tuple[int64, timedelta64[None]]: ...
  5016. @overload
  5017. def __divmod__(self: timedelta64[int], x: timedelta64[int | dt.timedelta], /) -> tuple[int64, timedelta64[int | None]]: ...
  5018. @overload
  5019. def __divmod__(
  5020. self: timedelta64[dt.timedelta], x: timedelta64[_AnyTD64Item], /
  5021. ) -> tuple[int64, timedelta64[_AnyTD64Item | None]]: ...
  5022. @overload
  5023. def __divmod__(self: timedelta64[dt.timedelta], x: dt.timedelta, /) -> tuple[int, dt.timedelta]: ...
  5024. @overload
  5025. def __divmod__(self, x: timedelta64[int], /) -> tuple[int64, timedelta64[int | None]]: ...
  5026. @overload
  5027. def __divmod__(self, x: timedelta64, /) -> tuple[int64, timedelta64]: ...
  5028. # keep in sync with __rmod__
  5029. @overload
  5030. def __rdivmod__(self, x: timedelta64[None], /) -> tuple[int64, timedelta64[None]]: ... # type: ignore[misc]
  5031. @overload
  5032. def __rdivmod__(self: timedelta64[L[0] | None], x: timedelta64, /) -> tuple[int64, timedelta64[None]]: ... # type: ignore[misc]
  5033. @overload
  5034. def __rdivmod__(self: timedelta64[int], x: timedelta64[int | dt.timedelta], /) -> tuple[int64, timedelta64[int | None]]: ... # type: ignore[misc]
  5035. @overload
  5036. def __rdivmod__( # type: ignore[misc]
  5037. self: timedelta64[dt.timedelta], x: timedelta64[_AnyTD64Item], /
  5038. ) -> tuple[int64, timedelta64[_AnyTD64Item | None]]: ...
  5039. @overload
  5040. def __rdivmod__(self: timedelta64[dt.timedelta], x: dt.timedelta, /) -> tuple[int, dt.timedelta]: ...
  5041. @overload
  5042. def __rdivmod__(self, x: timedelta64[int], /) -> tuple[int64, timedelta64[int | None]]: ... # type: ignore[misc]
  5043. @overload
  5044. def __rdivmod__(self, x: timedelta64, /) -> tuple[int64, timedelta64]: ... # type: ignore[misc]
  5045. @overload
  5046. def __sub__(self: timedelta64[None], b: _TD64Like_co, /) -> timedelta64[None]: ...
  5047. @overload
  5048. def __sub__(self: timedelta64[int], b: timedelta64[int | dt.timedelta], /) -> timedelta64[int]: ...
  5049. @overload
  5050. def __sub__(self: timedelta64[int], b: timedelta64, /) -> timedelta64[int | None]: ...
  5051. @overload
  5052. def __sub__(self: timedelta64[dt.timedelta], b: dt.timedelta, /) -> dt.timedelta: ...
  5053. @overload
  5054. def __sub__(self: timedelta64[_AnyTD64Item], b: timedelta64[_AnyTD64Item] | _IntLike_co, /) -> timedelta64[_AnyTD64Item]: ...
  5055. @overload
  5056. def __sub__(self, b: timedelta64[None], /) -> timedelta64[None]: ... # type: ignore[overload-cannot-match]
  5057. # NOTE: subtraction is not commutative, so __rsub__ differs from __sub__.
  5058. # This confuses mypy, so we ignore the [misc] errors it reports.
  5059. @overload
  5060. def __rsub__(self: timedelta64[None], a: _TD64Like_co, /) -> timedelta64[None]: ...
  5061. @overload
  5062. def __rsub__(self: timedelta64[dt.timedelta], a: _AnyDateOrTime, /) -> _AnyDateOrTime: ...
  5063. @overload
  5064. def __rsub__(self: timedelta64[dt.timedelta], a: timedelta64[_AnyTD64Item], /) -> timedelta64[_AnyTD64Item]: ... # type: ignore[misc]
  5065. @overload
  5066. def __rsub__(self: timedelta64[_AnyTD64Item], a: timedelta64[_AnyTD64Item] | _IntLike_co, /) -> timedelta64[_AnyTD64Item]: ... # type: ignore[misc]
  5067. @overload
  5068. def __rsub__(self, a: timedelta64[None], /) -> timedelta64[None]: ... # type: ignore[overload-cannot-match]
  5069. @overload
  5070. def __rsub__(self, a: datetime64[None], /) -> datetime64[None]: ... # type: ignore[misc]
  5071. @overload
  5072. def __truediv__(self: timedelta64[dt.timedelta], b: dt.timedelta, /) -> float: ...
  5073. @overload
  5074. def __truediv__(self, b: timedelta64, /) -> float64: ...
  5075. @overload
  5076. def __truediv__(self: timedelta64[_AnyTD64Item], b: int | integer, /) -> timedelta64[_AnyTD64Item]: ...
  5077. @overload
  5078. def __truediv__(self: timedelta64[_AnyTD64Item], b: float | floating, /) -> timedelta64[_AnyTD64Item | None]: ...
  5079. @overload
  5080. def __truediv__(self, b: float | floating | integer, /) -> timedelta64: ...
  5081. @overload
  5082. def __rtruediv__(self: timedelta64[dt.timedelta], a: dt.timedelta, /) -> float: ...
  5083. @overload
  5084. def __rtruediv__(self, a: timedelta64, /) -> float64: ...
  5085. @overload
  5086. def __floordiv__(self: timedelta64[dt.timedelta], b: dt.timedelta, /) -> int: ...
  5087. @overload
  5088. def __floordiv__(self, b: timedelta64, /) -> int64: ...
  5089. @overload
  5090. def __floordiv__(self: timedelta64[_AnyTD64Item], b: int | integer, /) -> timedelta64[_AnyTD64Item]: ...
  5091. @overload
  5092. def __floordiv__(self: timedelta64[_AnyTD64Item], b: float | floating, /) -> timedelta64[_AnyTD64Item | None]: ...
  5093. @overload
  5094. def __rfloordiv__(self: timedelta64[dt.timedelta], a: dt.timedelta, /) -> int: ...
  5095. @overload
  5096. def __rfloordiv__(self, a: timedelta64, /) -> int64: ...
  5097. # comparison ops
  5098. @overload
  5099. def __lt__(self, other: _TD64Like_co, /) -> bool_: ...
  5100. @overload
  5101. def __lt__(self, other: _ArrayLikeTD64_co | _NestedSequence[_SupportsGT], /) -> NDArray[bool_]: ...
  5102. @overload
  5103. def __lt__(self, other: _SupportsGT, /) -> bool_: ...
  5104. @overload
  5105. def __le__(self, other: _TD64Like_co, /) -> bool_: ...
  5106. @overload
  5107. def __le__(self, other: _ArrayLikeTD64_co | _NestedSequence[_SupportsGE], /) -> NDArray[bool_]: ...
  5108. @overload
  5109. def __le__(self, other: _SupportsGT, /) -> bool_: ...
  5110. @overload
  5111. def __gt__(self, other: _TD64Like_co, /) -> bool_: ...
  5112. @overload
  5113. def __gt__(self, other: _ArrayLikeTD64_co | _NestedSequence[_SupportsLT], /) -> NDArray[bool_]: ...
  5114. @overload
  5115. def __gt__(self, other: _SupportsGT, /) -> bool_: ...
  5116. @overload
  5117. def __ge__(self, other: _TD64Like_co, /) -> bool_: ...
  5118. @overload
  5119. def __ge__(self, other: _ArrayLikeTD64_co | _NestedSequence[_SupportsLE], /) -> NDArray[bool_]: ...
  5120. @overload
  5121. def __ge__(self, other: _SupportsGT, /) -> bool_: ...
  5122. class datetime64(_RealMixin, generic[_DT64ItemT_co], Generic[_DT64ItemT_co]):
  5123. @property
  5124. def itemsize(self) -> L[8]: ...
  5125. @property
  5126. def nbytes(self) -> L[8]: ...
  5127. @overload
  5128. def __new__(cls, value: datetime64[_DT64ItemT_co], /) -> Self: ...
  5129. @overload
  5130. def __new__(cls, value: _AnyDT64Arg, /) -> datetime64[_AnyDT64Arg]: ...
  5131. @overload
  5132. def __new__(cls, value: _NaTValue | None = ..., format: _TimeUnitSpec = ..., /) -> datetime64[None]: ...
  5133. @overload
  5134. def __new__(cls, value: _DT64Now, format: _TimeUnitSpec[_NativeTimeUnit] = ..., /) -> datetime64[dt.datetime]: ...
  5135. @overload
  5136. def __new__(cls, value: _DT64Date, format: _TimeUnitSpec[_DateUnit] = ..., /) -> datetime64[dt.date]: ...
  5137. @overload
  5138. def __new__(cls, value: int | bytes | str | dt.date, format: _TimeUnitSpec[_IntTimeUnit], /) -> datetime64[int]: ...
  5139. @overload
  5140. def __new__(
  5141. cls, value: int | bytes | str | dt.date, format: _TimeUnitSpec[_NativeTimeUnit], /
  5142. ) -> datetime64[dt.datetime]: ...
  5143. @overload
  5144. def __new__(cls, value: int | bytes | str | dt.date, format: _TimeUnitSpec[_DateUnit], /) -> datetime64[dt.date]: ...
  5145. @overload
  5146. def __new__(cls, value: bytes | str | dt.date | None, format: _TimeUnitSpec = ..., /) -> Self: ...
  5147. def __class_getitem__(cls, type_arg: type | object, /) -> GenericAlias: ...
  5148. @overload
  5149. def __add__(self: datetime64[_AnyDT64Item], x: int | integer | np.bool, /) -> datetime64[_AnyDT64Item]: ...
  5150. @overload
  5151. def __add__(self: datetime64[None], x: _TD64Like_co, /) -> datetime64[None]: ...
  5152. @overload
  5153. def __add__(self: datetime64[int], x: timedelta64[int | dt.timedelta], /) -> datetime64[int]: ...
  5154. @overload
  5155. def __add__(self: datetime64[dt.datetime], x: timedelta64[dt.timedelta], /) -> datetime64[dt.datetime]: ...
  5156. @overload
  5157. def __add__(self: datetime64[dt.date], x: timedelta64[dt.timedelta], /) -> datetime64[dt.date]: ...
  5158. @overload
  5159. def __add__(self: datetime64[dt.date], x: timedelta64[int], /) -> datetime64[int]: ...
  5160. @overload
  5161. def __add__(self, x: datetime64[None], /) -> datetime64[None]: ...
  5162. @overload
  5163. def __add__(self, x: _TD64Like_co, /) -> datetime64: ...
  5164. __radd__ = __add__
  5165. @overload
  5166. def __sub__(self: datetime64[_AnyDT64Item], x: int | integer | np.bool, /) -> datetime64[_AnyDT64Item]: ...
  5167. @overload
  5168. def __sub__(self: datetime64[_AnyDate], x: _AnyDate, /) -> dt.timedelta: ...
  5169. @overload
  5170. def __sub__(self: datetime64[None], x: timedelta64, /) -> datetime64[None]: ...
  5171. @overload
  5172. def __sub__(self: datetime64[None], x: datetime64, /) -> timedelta64[None]: ...
  5173. @overload
  5174. def __sub__(self: datetime64[int], x: timedelta64, /) -> datetime64[int]: ...
  5175. @overload
  5176. def __sub__(self: datetime64[int], x: datetime64, /) -> timedelta64[int]: ...
  5177. @overload
  5178. def __sub__(self: datetime64[dt.datetime], x: timedelta64[int], /) -> datetime64[int]: ...
  5179. @overload
  5180. def __sub__(self: datetime64[dt.datetime], x: timedelta64[dt.timedelta], /) -> datetime64[dt.datetime]: ...
  5181. @overload
  5182. def __sub__(self: datetime64[dt.datetime], x: datetime64[int], /) -> timedelta64[int]: ...
  5183. @overload
  5184. def __sub__(self: datetime64[dt.date], x: timedelta64[int], /) -> datetime64[dt.date | int]: ...
  5185. @overload
  5186. def __sub__(self: datetime64[dt.date], x: timedelta64[dt.timedelta], /) -> datetime64[dt.date]: ...
  5187. @overload
  5188. def __sub__(self: datetime64[dt.date], x: datetime64[dt.date], /) -> timedelta64[dt.timedelta]: ...
  5189. @overload
  5190. def __sub__(self, x: timedelta64[None], /) -> datetime64[None]: ...
  5191. @overload
  5192. def __sub__(self, x: datetime64[None], /) -> timedelta64[None]: ...
  5193. @overload
  5194. def __sub__(self, x: _TD64Like_co, /) -> datetime64: ...
  5195. @overload
  5196. def __sub__(self, x: datetime64, /) -> timedelta64: ...
  5197. # NOTE: mypy gets confused by the non-commutativity of subtraction here
  5198. @overload
  5199. def __rsub__(self: datetime64[_AnyDT64Item], x: int | integer | np.bool, /) -> datetime64[_AnyDT64Item]: ...
  5200. @overload
  5201. def __rsub__(self: datetime64[_AnyDate], x: _AnyDate, /) -> dt.timedelta: ...
  5202. @overload
  5203. def __rsub__(self: datetime64[None], x: datetime64, /) -> timedelta64[None]: ...
  5204. @overload
  5205. def __rsub__(self: datetime64[int], x: datetime64, /) -> timedelta64[int]: ...
  5206. @overload
  5207. def __rsub__(self: datetime64[dt.datetime], x: datetime64[int], /) -> timedelta64[int]: ... # type: ignore[misc]
  5208. @overload
  5209. def __rsub__(self: datetime64[dt.datetime], x: datetime64[dt.date], /) -> timedelta64[dt.timedelta]: ... # type: ignore[misc]
  5210. @overload
  5211. def __rsub__(self, x: datetime64[None], /) -> timedelta64[None]: ... # type: ignore[misc]
  5212. @overload
  5213. def __rsub__(self, x: datetime64, /) -> timedelta64: ... # type: ignore[misc]
  5214. @overload
  5215. def __lt__(self, other: datetime64, /) -> bool_: ...
  5216. @overload
  5217. def __lt__(self, other: _ArrayLikeDT64_co | _NestedSequence[_SupportsGT], /) -> NDArray[bool_]: ...
  5218. @overload
  5219. def __lt__(self, other: _SupportsGT, /) -> bool_: ...
  5220. @overload
  5221. def __le__(self, other: datetime64, /) -> bool_: ...
  5222. @overload
  5223. def __le__(self, other: _ArrayLikeDT64_co | _NestedSequence[_SupportsGE], /) -> NDArray[bool_]: ...
  5224. @overload
  5225. def __le__(self, other: _SupportsGT, /) -> bool_: ...
  5226. @overload
  5227. def __gt__(self, other: datetime64, /) -> bool_: ...
  5228. @overload
  5229. def __gt__(self, other: _ArrayLikeDT64_co | _NestedSequence[_SupportsLT], /) -> NDArray[bool_]: ...
  5230. @overload
  5231. def __gt__(self, other: _SupportsGT, /) -> bool_: ...
  5232. @overload
  5233. def __ge__(self, other: datetime64, /) -> bool_: ...
  5234. @overload
  5235. def __ge__(self, other: _ArrayLikeDT64_co | _NestedSequence[_SupportsLE], /) -> NDArray[bool_]: ...
  5236. @overload
  5237. def __ge__(self, other: _SupportsGT, /) -> bool_: ...
  5238. @final # cannot be subclassed at runtime
  5239. class flexible(_RealMixin, generic[_FlexibleItemT_co], Generic[_FlexibleItemT_co]): ... # type: ignore[misc]
  5240. class void(flexible[bytes | tuple[Any, ...]]): # type: ignore[misc]
  5241. @overload
  5242. def __new__(cls, length_or_data: _IntLike_co | bytes, /, dtype: None = None) -> Self: ...
  5243. @overload
  5244. def __new__(cls, length_or_data: object, /, dtype: _DTypeLikeVoid) -> Self: ...
  5245. @overload
  5246. def __getitem__(self, key: str | SupportsIndex, /) -> Any: ...
  5247. @overload
  5248. def __getitem__(self, key: list[str], /) -> void: ...
  5249. def __setitem__(self, key: str | list[str] | SupportsIndex, value: ArrayLike, /) -> None: ...
  5250. def setfield(self, val: ArrayLike, dtype: DTypeLike, offset: int = ...) -> None: ...
  5251. class character(flexible[_CharacterItemT_co], Generic[_CharacterItemT_co]): # type: ignore[misc]
  5252. @abstractmethod
  5253. def __new__(cls, value: object = ..., /) -> Self: ...
  5254. # NOTE: Most `np.bytes_` / `np.str_` methods return their builtin `bytes` / `str` counterpart
  5255. class bytes_(character[bytes], bytes): # type: ignore[misc]
  5256. @overload
  5257. def __new__(cls, value: object = b"", /) -> Self: ...
  5258. @overload
  5259. def __new__(cls, value: str, /, encoding: str, errors: str = "strict") -> Self: ...
  5260. #
  5261. @override
  5262. def __hash__(self, /) -> int: ...
  5263. #
  5264. def __bytes__(self, /) -> bytes: ...
  5265. class str_(character[str], str): # type: ignore[misc]
  5266. @overload
  5267. def __new__(cls, value: object = "", /) -> Self: ...
  5268. @overload
  5269. def __new__(cls, value: bytes, /, encoding: str, errors: str = "strict") -> Self: ...
  5270. #
  5271. @override
  5272. def __hash__(self, /) -> int: ...
  5273. # See `numpy._typing._ufunc` for more concrete nin-/nout-specific stubs
  5274. @final
  5275. class ufunc:
  5276. __signature__: Final[inspect.Signature]
  5277. @property
  5278. def __name__(self) -> LiteralString: ...
  5279. @property
  5280. def __qualname__(self) -> LiteralString: ... # pyright: ignore[reportIncompatibleVariableOverride]
  5281. @property
  5282. def __doc__(self) -> str: ... # type: ignore[override]
  5283. @property
  5284. def nin(self) -> int: ...
  5285. @property
  5286. def nout(self) -> int: ...
  5287. @property
  5288. def nargs(self) -> int: ...
  5289. @property
  5290. def ntypes(self) -> int: ...
  5291. @property
  5292. def types(self) -> list[LiteralString]: ...
  5293. # Broad return type because it has to encompass things like
  5294. #
  5295. # >>> np.logical_and.identity is True
  5296. # True
  5297. # >>> np.add.identity is 0
  5298. # True
  5299. # >>> np.sin.identity is None
  5300. # True
  5301. #
  5302. # and any user-defined ufuncs.
  5303. @property
  5304. def identity(self) -> Any: ...
  5305. # This is None for ufuncs and a string for gufuncs.
  5306. @property
  5307. def signature(self) -> LiteralString | None: ...
  5308. def __call__(self, /, *args: Any, **kwargs: Any) -> Any: ...
  5309. # The next four methods will always exist, but they will just
  5310. # raise a ValueError ufuncs with that don't accept two input
  5311. # arguments and return one output argument. Because of that we
  5312. # can't type them very precisely.
  5313. def accumulate(
  5314. self,
  5315. array: ArrayLike,
  5316. /,
  5317. axis: SupportsIndex = 0,
  5318. dtype: DTypeLike | None = None,
  5319. out: ndarray | EllipsisType | None = None,
  5320. ) -> NDArray[Incomplete]: ...
  5321. def reduce(
  5322. self,
  5323. array: ArrayLike,
  5324. /,
  5325. axis: _ShapeLike | None = 0,
  5326. dtype: DTypeLike | None = None,
  5327. out: ndarray | EllipsisType | None = None,
  5328. **kwargs: Incomplete,
  5329. ) -> Incomplete: ...
  5330. def reduceat(
  5331. self,
  5332. array: ArrayLike,
  5333. /,
  5334. indices: _ArrayLikeInt_co,
  5335. axis: SupportsIndex = 0,
  5336. dtype: DTypeLike | None = None,
  5337. out: ndarray | EllipsisType | None = None,
  5338. ) -> NDArray[Incomplete]: ...
  5339. def outer(self, A: ArrayLike, B: ArrayLike, /, **kwargs: Incomplete) -> NDArray[Incomplete]: ...
  5340. # Similarly `at` won't be defined for ufuncs that return multiple
  5341. # outputs, so we can't type it very precisely.
  5342. def at(self, a: ndarray, indices: _ArrayLikeInt_co, b: ArrayLike | None = None, /) -> None: ...
  5343. #
  5344. def resolve_dtypes(
  5345. self,
  5346. /,
  5347. dtypes: tuple[dtype | type | None, ...],
  5348. *,
  5349. signature: tuple[dtype | None, ...] | None = None,
  5350. casting: _CastingKind | None = None,
  5351. reduction: builtins.bool = False,
  5352. ) -> tuple[dtype, ...]: ...
  5353. # Parameters: `__name__`, `ntypes` and `identity`
  5354. absolute: _UFunc_Nin1_Nout1[L["absolute"], L[20], None]
  5355. add: _UFunc_Nin2_Nout1[L["add"], L[22], L[0]]
  5356. arccos: _UFunc_Nin1_Nout1[L["arccos"], L[8], None]
  5357. arccosh: _UFunc_Nin1_Nout1[L["arccosh"], L[8], None]
  5358. arcsin: _UFunc_Nin1_Nout1[L["arcsin"], L[8], None]
  5359. arcsinh: _UFunc_Nin1_Nout1[L["arcsinh"], L[8], None]
  5360. arctan2: _UFunc_Nin2_Nout1[L["arctan2"], L[5], None]
  5361. arctan: _UFunc_Nin1_Nout1[L["arctan"], L[8], None]
  5362. arctanh: _UFunc_Nin1_Nout1[L["arctanh"], L[8], None]
  5363. bitwise_and: _UFunc_Nin2_Nout1[L["bitwise_and"], L[12], L[-1]]
  5364. bitwise_count: _UFunc_Nin1_Nout1[L["bitwise_count"], L[11], None]
  5365. bitwise_or: _UFunc_Nin2_Nout1[L["bitwise_or"], L[12], L[0]]
  5366. bitwise_xor: _UFunc_Nin2_Nout1[L["bitwise_xor"], L[12], L[0]]
  5367. cbrt: _UFunc_Nin1_Nout1[L["cbrt"], L[5], None]
  5368. ceil: _UFunc_Nin1_Nout1[L["ceil"], L[7], None]
  5369. conjugate: _UFunc_Nin1_Nout1[L["conjugate"], L[18], None]
  5370. copysign: _UFunc_Nin2_Nout1[L["copysign"], L[4], None]
  5371. cos: _UFunc_Nin1_Nout1[L["cos"], L[9], None]
  5372. cosh: _UFunc_Nin1_Nout1[L["cosh"], L[8], None]
  5373. deg2rad: _UFunc_Nin1_Nout1[L["deg2rad"], L[5], None]
  5374. degrees: _UFunc_Nin1_Nout1[L["degrees"], L[5], None]
  5375. divide: _UFunc_Nin2_Nout1[L["divide"], L[11], None]
  5376. divmod: _UFunc_Nin2_Nout2[L["divmod"], L[15], None]
  5377. equal: _UFunc_Nin2_Nout1[L["equal"], L[23], None]
  5378. exp2: _UFunc_Nin1_Nout1[L["exp2"], L[8], None]
  5379. exp: _UFunc_Nin1_Nout1[L["exp"], L[10], None]
  5380. expm1: _UFunc_Nin1_Nout1[L["expm1"], L[8], None]
  5381. fabs: _UFunc_Nin1_Nout1[L["fabs"], L[5], None]
  5382. float_power: _UFunc_Nin2_Nout1[L["float_power"], L[4], None]
  5383. floor: _UFunc_Nin1_Nout1[L["floor"], L[7], None]
  5384. floor_divide: _UFunc_Nin2_Nout1[L["floor_divide"], L[21], None]
  5385. fmax: _UFunc_Nin2_Nout1[L["fmax"], L[21], None]
  5386. fmin: _UFunc_Nin2_Nout1[L["fmin"], L[21], None]
  5387. fmod: _UFunc_Nin2_Nout1[L["fmod"], L[15], None]
  5388. frexp: _UFunc_Nin1_Nout2[L["frexp"], L[4], None]
  5389. gcd: _UFunc_Nin2_Nout1[L["gcd"], L[11], L[0]]
  5390. greater: _UFunc_Nin2_Nout1[L["greater"], L[23], None]
  5391. greater_equal: _UFunc_Nin2_Nout1[L["greater_equal"], L[23], None]
  5392. heaviside: _UFunc_Nin2_Nout1[L["heaviside"], L[4], None]
  5393. hypot: _UFunc_Nin2_Nout1[L["hypot"], L[5], L[0]]
  5394. invert: _UFunc_Nin1_Nout1[L["invert"], L[12], None]
  5395. isfinite: _UFunc_Nin1_Nout1[L["isfinite"], L[20], None]
  5396. isinf: _UFunc_Nin1_Nout1[L["isinf"], L[20], None]
  5397. isnan: _UFunc_Nin1_Nout1[L["isnan"], L[20], None]
  5398. isnat: _UFunc_Nin1_Nout1[L["isnat"], L[2], None]
  5399. lcm: _UFunc_Nin2_Nout1[L["lcm"], L[11], None]
  5400. ldexp: _UFunc_Nin2_Nout1[L["ldexp"], L[8], None]
  5401. left_shift: _UFunc_Nin2_Nout1[L["left_shift"], L[11], None]
  5402. less: _UFunc_Nin2_Nout1[L["less"], L[23], None]
  5403. less_equal: _UFunc_Nin2_Nout1[L["less_equal"], L[23], None]
  5404. log10: _UFunc_Nin1_Nout1[L["log10"], L[8], None]
  5405. log1p: _UFunc_Nin1_Nout1[L["log1p"], L[8], None]
  5406. log2: _UFunc_Nin1_Nout1[L["log2"], L[8], None]
  5407. log: _UFunc_Nin1_Nout1[L["log"], L[10], None]
  5408. logaddexp2: _UFunc_Nin2_Nout1[L["logaddexp2"], L[4], float]
  5409. logaddexp: _UFunc_Nin2_Nout1[L["logaddexp"], L[4], float]
  5410. logical_and: _UFunc_Nin2_Nout1[L["logical_and"], L[20], L[True]]
  5411. logical_not: _UFunc_Nin1_Nout1[L["logical_not"], L[20], None]
  5412. logical_or: _UFunc_Nin2_Nout1[L["logical_or"], L[20], L[False]]
  5413. logical_xor: _UFunc_Nin2_Nout1[L["logical_xor"], L[19], L[False]]
  5414. matmul: _GUFunc_Nin2_Nout1[L["matmul"], L[19], None, L["(n?,k),(k,m?)->(n?,m?)"]]
  5415. matvec: _GUFunc_Nin2_Nout1[L["matvec"], L[19], None, L["(m,n),(n)->(m)"]]
  5416. maximum: _UFunc_Nin2_Nout1[L["maximum"], L[21], None]
  5417. minimum: _UFunc_Nin2_Nout1[L["minimum"], L[21], None]
  5418. modf: _UFunc_Nin1_Nout2[L["modf"], L[4], None]
  5419. multiply: _UFunc_Nin2_Nout1[L["multiply"], L[23], L[1]]
  5420. negative: _UFunc_Nin1_Nout1[L["negative"], L[19], None]
  5421. nextafter: _UFunc_Nin2_Nout1[L["nextafter"], L[4], None]
  5422. not_equal: _UFunc_Nin2_Nout1[L["not_equal"], L[23], None]
  5423. positive: _UFunc_Nin1_Nout1[L["positive"], L[19], None]
  5424. power: _UFunc_Nin2_Nout1[L["power"], L[18], None]
  5425. rad2deg: _UFunc_Nin1_Nout1[L["rad2deg"], L[5], None]
  5426. radians: _UFunc_Nin1_Nout1[L["radians"], L[5], None]
  5427. reciprocal: _UFunc_Nin1_Nout1[L["reciprocal"], L[18], None]
  5428. remainder: _UFunc_Nin2_Nout1[L["remainder"], L[16], None]
  5429. right_shift: _UFunc_Nin2_Nout1[L["right_shift"], L[11], None]
  5430. rint: _UFunc_Nin1_Nout1[L["rint"], L[10], None]
  5431. sign: _UFunc_Nin1_Nout1[L["sign"], L[19], None]
  5432. signbit: _UFunc_Nin1_Nout1[L["signbit"], L[4], None]
  5433. sin: _UFunc_Nin1_Nout1[L["sin"], L[9], None]
  5434. sinh: _UFunc_Nin1_Nout1[L["sinh"], L[8], None]
  5435. spacing: _UFunc_Nin1_Nout1[L["spacing"], L[4], None]
  5436. sqrt: _UFunc_Nin1_Nout1[L["sqrt"], L[10], None]
  5437. square: _UFunc_Nin1_Nout1[L["square"], L[18], None]
  5438. subtract: _UFunc_Nin2_Nout1[L["subtract"], L[21], None]
  5439. tan: _UFunc_Nin1_Nout1[L["tan"], L[8], None]
  5440. tanh: _UFunc_Nin1_Nout1[L["tanh"], L[8], None]
  5441. trunc: _UFunc_Nin1_Nout1[L["trunc"], L[7], None]
  5442. vecdot: _GUFunc_Nin2_Nout1[L["vecdot"], L[19], None, L["(n),(n)->()"]]
  5443. vecmat: _GUFunc_Nin2_Nout1[L["vecmat"], L[19], None, L["(n),(n,m)->(m)"]]
  5444. abs = absolute
  5445. acos = arccos
  5446. acosh = arccosh
  5447. asin = arcsin
  5448. asinh = arcsinh
  5449. atan = arctan
  5450. atanh = arctanh
  5451. atan2 = arctan2
  5452. concat = concatenate
  5453. bitwise_left_shift = left_shift
  5454. bitwise_not = invert
  5455. bitwise_invert = invert
  5456. bitwise_right_shift = right_shift
  5457. conj = conjugate
  5458. mod = remainder
  5459. permute_dims = transpose
  5460. pow = power
  5461. true_divide = divide
  5462. # TODO: The type of each `__next__` and `iters` return-type depends
  5463. # on the length and dtype of `args`; we can't describe this behavior yet
  5464. # as we lack variadics (PEP 646).
  5465. @final
  5466. class broadcast:
  5467. def __new__(cls, *args: ArrayLike) -> broadcast: ...
  5468. @property
  5469. def index(self) -> int: ...
  5470. @property
  5471. def iters(self) -> tuple[flatiter[Any], ...]: ...
  5472. @property
  5473. def nd(self) -> int: ...
  5474. @property
  5475. def ndim(self) -> int: ...
  5476. @property
  5477. def numiter(self) -> int: ...
  5478. @property
  5479. def shape(self) -> _AnyShape: ...
  5480. @property
  5481. def size(self) -> int: ...
  5482. def __next__(self) -> tuple[Any, ...]: ...
  5483. def __iter__(self) -> Self: ...
  5484. def reset(self) -> None: ...
  5485. @final
  5486. class busdaycalendar:
  5487. def __init__(
  5488. self,
  5489. /,
  5490. weekmask: str | Sequence[int | bool_ | integer] | _SupportsArray[dtype[bool_ | integer]] = "1111100",
  5491. holidays: Sequence[dt.date | datetime64] | _SupportsArray[dtype[datetime64]] | None = None,
  5492. ) -> None: ...
  5493. @property
  5494. def weekmask(self) -> ndarray[tuple[int], dtype[bool_]]: ...
  5495. @property
  5496. def holidays(self) -> ndarray[tuple[int], dtype[datetime64[dt.date]]]: ...
  5497. @final
  5498. class nditer:
  5499. @overload
  5500. def __init__(
  5501. self,
  5502. /,
  5503. op: ArrayLike,
  5504. flags: Sequence[_NDIterFlagsKind] | None = None,
  5505. op_flags: Sequence[_NDIterFlagsOp] | None = None,
  5506. op_dtypes: DTypeLike | None = None,
  5507. order: _OrderKACF = "K",
  5508. casting: _CastingKind = "safe",
  5509. op_axes: Sequence[SupportsIndex] | None = None,
  5510. itershape: _ShapeLike | None = None,
  5511. buffersize: SupportsIndex = 0,
  5512. ) -> None: ...
  5513. @overload
  5514. def __init__(
  5515. self,
  5516. /,
  5517. op: Sequence[ArrayLike | None],
  5518. flags: Sequence[_NDIterFlagsKind] | None = None,
  5519. op_flags: Sequence[Sequence[_NDIterFlagsOp]] | None = None,
  5520. op_dtypes: Sequence[DTypeLike | None] | None = None,
  5521. order: _OrderKACF = "K",
  5522. casting: _CastingKind = "safe",
  5523. op_axes: Sequence[Sequence[SupportsIndex]] | None = None,
  5524. itershape: _ShapeLike | None = None,
  5525. buffersize: SupportsIndex = 0,
  5526. ) -> None: ...
  5527. def __enter__(self) -> nditer: ...
  5528. def __exit__(
  5529. self,
  5530. exc_type: type[BaseException] | None,
  5531. exc_value: BaseException | None,
  5532. traceback: TracebackType | None,
  5533. ) -> None: ...
  5534. def __iter__(self) -> nditer: ...
  5535. def __next__(self) -> tuple[NDArray[Any], ...]: ...
  5536. def __len__(self) -> int: ...
  5537. def __copy__(self) -> nditer: ...
  5538. @overload
  5539. def __getitem__(self, index: SupportsIndex) -> NDArray[Any]: ...
  5540. @overload
  5541. def __getitem__(self, index: slice) -> tuple[NDArray[Any], ...]: ...
  5542. def __setitem__(self, index: slice | SupportsIndex, value: ArrayLike) -> None: ...
  5543. def close(self) -> None: ...
  5544. def copy(self) -> nditer: ...
  5545. def debug_print(self) -> None: ...
  5546. def enable_external_loop(self) -> None: ...
  5547. def iternext(self) -> builtins.bool: ...
  5548. def remove_axis(self, i: SupportsIndex, /) -> None: ...
  5549. def remove_multi_index(self) -> None: ...
  5550. def reset(self) -> None: ...
  5551. @property
  5552. def dtypes(self) -> tuple[dtype, ...]: ...
  5553. @property
  5554. def finished(self) -> builtins.bool: ...
  5555. @property
  5556. def has_delayed_bufalloc(self) -> builtins.bool: ...
  5557. @property
  5558. def has_index(self) -> builtins.bool: ...
  5559. @property
  5560. def has_multi_index(self) -> builtins.bool: ...
  5561. @property
  5562. def index(self) -> int: ...
  5563. @property
  5564. def iterationneedsapi(self) -> builtins.bool: ...
  5565. @property
  5566. def iterindex(self) -> int: ...
  5567. @property
  5568. def iterrange(self) -> tuple[int, ...]: ...
  5569. @property
  5570. def itersize(self) -> int: ...
  5571. @property
  5572. def itviews(self) -> tuple[NDArray[Any], ...]: ...
  5573. @property
  5574. def multi_index(self) -> tuple[int, ...]: ...
  5575. @property
  5576. def ndim(self) -> int: ...
  5577. @property
  5578. def nop(self) -> int: ...
  5579. @property
  5580. def operands(self) -> tuple[NDArray[Any], ...]: ...
  5581. @property
  5582. def shape(self) -> tuple[int, ...]: ...
  5583. @property
  5584. def value(self) -> tuple[NDArray[Any], ...]: ...
  5585. class memmap(ndarray[_ShapeT_co, _DTypeT_co]):
  5586. __array_priority__: ClassVar[float]
  5587. filename: str | None
  5588. offset: int
  5589. mode: str
  5590. @overload
  5591. def __new__(
  5592. subtype,
  5593. filename: StrOrBytesPath | _SupportsFileMethodsRW,
  5594. dtype: type[uint8] = ...,
  5595. mode: _MemMapModeKind = "r+",
  5596. offset: int = 0,
  5597. shape: int | tuple[int, ...] | None = None,
  5598. order: _OrderKACF = "C",
  5599. ) -> memmap[Any, dtype[uint8]]: ...
  5600. @overload
  5601. def __new__(
  5602. subtype,
  5603. filename: StrOrBytesPath | _SupportsFileMethodsRW,
  5604. dtype: _DTypeLike[_ScalarT],
  5605. mode: _MemMapModeKind = "r+",
  5606. offset: int = 0,
  5607. shape: int | tuple[int, ...] | None = None,
  5608. order: _OrderKACF = "C",
  5609. ) -> memmap[Any, dtype[_ScalarT]]: ...
  5610. @overload
  5611. def __new__(
  5612. subtype,
  5613. filename: StrOrBytesPath | _SupportsFileMethodsRW,
  5614. dtype: DTypeLike,
  5615. mode: _MemMapModeKind = "r+",
  5616. offset: int = 0,
  5617. shape: int | tuple[int, ...] | None = None,
  5618. order: _OrderKACF = "C",
  5619. ) -> memmap[Any, dtype]: ...
  5620. def __array_finalize__(self, obj: object) -> None: ...
  5621. def __array_wrap__(
  5622. self,
  5623. array: memmap[_ShapeT_co, _DTypeT_co], # type: ignore[override]
  5624. context: tuple[ufunc, tuple[Any, ...], int] | None = None,
  5625. return_scalar: builtins.bool = False,
  5626. ) -> Any: ...
  5627. def flush(self) -> None: ...
  5628. class poly1d:
  5629. @property
  5630. def variable(self) -> LiteralString: ...
  5631. @property
  5632. def order(self) -> int: ...
  5633. @property
  5634. def o(self) -> int: ...
  5635. @property
  5636. def roots(self) -> NDArray[Any]: ...
  5637. @property
  5638. def r(self) -> NDArray[Any]: ...
  5639. @property
  5640. def coeffs(self) -> NDArray[Any]: ...
  5641. @coeffs.setter
  5642. def coeffs(self, value: NDArray[Any]) -> None: ...
  5643. @property
  5644. def c(self) -> NDArray[Any]: ...
  5645. @c.setter
  5646. def c(self, value: NDArray[Any]) -> None: ...
  5647. @property
  5648. def coef(self) -> NDArray[Any]: ...
  5649. @coef.setter
  5650. def coef(self, value: NDArray[Any]) -> None: ...
  5651. @property
  5652. def coefficients(self) -> NDArray[Any]: ...
  5653. @coefficients.setter
  5654. def coefficients(self, value: NDArray[Any]) -> None: ...
  5655. __hash__: ClassVar[None] # type: ignore[assignment] # pyright: ignore[reportIncompatibleMethodOverride]
  5656. @overload
  5657. def __array__(self, /, t: None = None, copy: builtins.bool | None = None) -> ndarray[tuple[int], dtype]: ...
  5658. @overload
  5659. def __array__(self, /, t: _DTypeT, copy: builtins.bool | None = None) -> ndarray[tuple[int], _DTypeT]: ...
  5660. @overload
  5661. def __call__(self, val: _ScalarLike_co) -> Any: ...
  5662. @overload
  5663. def __call__(self, val: poly1d) -> poly1d: ...
  5664. @overload
  5665. def __call__(self, val: ArrayLike) -> NDArray[Any]: ...
  5666. def __init__(
  5667. self,
  5668. c_or_r: ArrayLike,
  5669. r: builtins.bool = False,
  5670. variable: str | None = None,
  5671. ) -> None: ...
  5672. def __len__(self) -> int: ...
  5673. def __neg__(self) -> poly1d: ...
  5674. def __pos__(self) -> poly1d: ...
  5675. def __mul__(self, other: ArrayLike, /) -> poly1d: ...
  5676. def __rmul__(self, other: ArrayLike, /) -> poly1d: ...
  5677. def __add__(self, other: ArrayLike, /) -> poly1d: ...
  5678. def __radd__(self, other: ArrayLike, /) -> poly1d: ...
  5679. def __pow__(self, val: _FloatLike_co, /) -> poly1d: ... # Integral floats are accepted
  5680. def __sub__(self, other: ArrayLike, /) -> poly1d: ...
  5681. def __rsub__(self, other: ArrayLike, /) -> poly1d: ...
  5682. def __truediv__(self, other: ArrayLike, /) -> poly1d: ...
  5683. def __rtruediv__(self, other: ArrayLike, /) -> poly1d: ...
  5684. def __getitem__(self, val: int, /) -> Any: ...
  5685. def __setitem__(self, key: int, val: Any, /) -> None: ...
  5686. def __iter__(self) -> Iterator[Any]: ...
  5687. def deriv(self, m: SupportsInt | SupportsIndex = 1) -> poly1d: ...
  5688. def integ(
  5689. self,
  5690. m: SupportsInt | SupportsIndex = 1,
  5691. k: _ArrayLikeComplex_co | _ArrayLikeObject_co | None = 0,
  5692. ) -> poly1d: ...
  5693. def from_dlpack(
  5694. x: _SupportsDLPack[None],
  5695. /,
  5696. *,
  5697. device: L["cpu"] | None = None,
  5698. copy: builtins.bool | None = None,
  5699. ) -> NDArray[number | np.bool]: ...