L irUddlmZddlmZmZmZmZmZmZddl Z ddl m Z ddlmZddlmZddlmZddlmZddlmZdd lmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#dd l$m%Z%m&Z&dd l'm(Z(dd l)m*Z*m+Z+m,Z,m-Z-m.Z.dd l/m0Z0ddl1m2Z2m3Z3erddl4m5Z5m6Z6m7Z7ddl8m9Z9ddl:Z;ddlm?Z?m@Z@mAZAddlBmCZCddlDmEZEddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQddlRmSZSddlTmUZUddl)mVZVmWZWddlXmYZYddlZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgdZhdeid<e d(dZje d)dZje d*dZje d+d Zjd,d!ZjGd"d#e%d$ZkGd%d&e&d'Zly)-) annotations) TYPE_CHECKINGAnyCallableLiteralcastoverloadNArrowSeriesCatNamespaceArrowSeriesDateTimeNamespaceArrowSeriesListNamespaceArrowSeriesStringNamespaceArrowSeriesStructNamespace) cast_for_truediv chunked_arrayextract_nativefloordiv_compatis_array_or_scalarlitnarwhals_to_native_dtypenative_to_narwhals_dtype nulls_like pad_serieszeros) EagerSeriesEagerSeriesHist) assert_never)Implementationgenerate_temporary_column_name is_list_of no_defaultnot_implemented)is_numpy_array_1d)InvalidOperationError ShapeError)IterableIteratorSequence) ModuleType)Self TypeAliasTypeIsArrowDataFrameArrowNamespace) ArrayAnyArrayOrChunkedArray ArrayOrScalarChunkedArrayAny Incomplete NullPlacementOrder ScalarAny TieBreaker _AsPyType_BasicDataType)HistData) NoDefault)Version_LimitedContext)DType) ClosedIntervalFillNullStrategy Into1DArray IntoDTypeModeKeepStrategyNonNestedLiteral PythonLiteral RankMethodRollingInterpolationMethodSizedMultiIndexSelector_1DArray_2DArray _SliceIndexzHHistData[ChunkedArrayAny, list[ScalarAny] | pa.Int64Array | list[float]]r/ ArrowHistDatacyNvaluereturn_py_scalars \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/narwhals/_arrow/series.pymaybe_extract_py_scalarrZXscyrTrUrVs rYrZrZ_sr[cyrTrUrVs rYrZrZfsr[cyrTrUrVs rYrZrZms r[cbtrjS|rtdfdSS)Nas_pycSrTrU)rWsrYz)maybe_extract_py_scalar..xsur[)rr`getattrrVs` rYrZrZts.{{}5wug}577 Lr[cleZdZejZ ddZeddZddZ dd ddZ ddZ ddZ e d d d  dd Zdfd ZeddZe d d ddZe ddZe ddZddZddZddZddZddZddZddZddZddZddZddZddZ ddZ!dd Z"dd!Z#dd"Z$dd#Z%dd$Z&dd%Z'dd&Z(dd'Z)dd(Z*dd)Z+dd*Z,dd+Z-dd,Z.edd-Z/d.d/dd0Z0dd1Z1d.d/dd2Z2d.d/dd3Z3d.d/dd4Z4d.d/dd5Z5d.d/dd6Z6d.d/dd7Z7d.d/dd8Z8d.d/dd9Z9d.d/dd:Z:dd;Z;dd<ZZ>d.d/dd?Z?d.d/dd@Z@d.d/ddAZAd.d/ddBZBddCZCeddDZDddEZEddFZFddGZGddHZHdd dIddJZIdd dIddKZJddLZKeddMZLddNZMddOZNddPZOddQZPddRZQddSZRd.d/ddTZSd.d/ddUZT ddVZUddWZVddXZWddYZXd.d/ddZZYdd[ZZdd\Z[dd]Z\dd^Z]ddd_Z^ dd`Z_ddaZ` ddbZaddcZb dddZcddeZdddfZeddgZfddhZgddiZhddjZiddkZjd.dlddmZk ddnZlddoZmddpZnd.d/ ddqZodddrZpddsZqddtZrdduZsddvZtddwZuddxZvddyZwddzZxdd{Zydd|Zzdd}Z{dd~Z| ddZ} ddZ~ddZ ddZ ddZddZddZddZddZddZeddZeddZeddZeddZeddZeZxZS) ArrowSeriesc<||_||_||_d|_y)NF)_name_native_series_version _broadcast)self native_seriesnameversions rY__init__zArrowSeries.__init__s! /< r[c|jSrT)rhrks rYnativezArrowSeries.natives"""r[cR|j|j|j|SN)rmrn) __class__rrrg)rkrns rY _with_versionzArrowSeries._with_versions~~dkk G~LLr[Fpreserve_broadcastcz|jt||j|}|r|j|_|S)Nrmcontext) from_nativerrmrj)rkseriesrxresults rY _with_nativezArrowSeries._with_natives9!!-"7diiQU!V  $F  r[ct||\}}|jxr t|dd}|j||||j |j SNrjTrw)rrjrcraliasrm)rkopotherser other_nativerxs rY _with_binaryzArrowSeries._with_binarys^*47\!__S d1S  sL !6H! %  r[c`|jfd|j|jS)Nc||SrTrU)xyrs rYrbz0ArrowSeries._with_binary_right..s bAhr[)rrrm)rkrrs ` rY_with_binary_rightzArrowSeries._with_binary_rights&  !6>DDTYYOOr[N)rmdtypec|j}|Kt||}t|r|j|}d}|j |r|n t |g|}n t |g}|j |||S)N)r{rm)rirrr _is_nativerr|)clsdatar{rmrrndtype_parrs rY from_iterablezArrowSeries.from_iterablesx""  +CE7+SH!$'yy* ^^D1T}dVX7VF"D6*FvwTBBr[cZt|dr|j}t| |S)Nr`)hasattrr`super _from_scalar)rkrWrus rYrzArrowSeries._from_scalars( 5' "KKMEw#E**r[c6t|tjSrT) isinstancepa ChunkedArray)objs rYrzArrowSeries._is_natives#r//r[rmc,|||j|S)N)rnrm)ri)rrr{rms rYr|zArrowSeries.from_natives4!1!1==r[cP|jt|r||S|g|SN)r{)rr')rrr{s rY from_numpyzArrowSeries.from_numpys<  %d+D!  26!  r[c |Dcgc] }t|}}tdt||D t fd|D}|r|Sg}|D]x}|jr3|j t j|jd }n&t|x} k7rd d|d}t||}|j|z|Scc}w)Nc3@K|]\}}|jr|ywrT)rj).0lengthss rY z4ArrowSeries._align_full_broadcast..s  vq F sc3(K|] }|k( ywrTrU)r_len target_lengths rYrz4ArrowSeries._align_full_broadcast..sB$ -BsrzExpected object of length z, got .) lenmaxzipallrjrrrepeatrrr)append) rr}rlengths fast_pathreshaped compliant actual_lenmsgrs @rY_align_full_broadcastz!ArrowSeries._align_full_broadcasts#)*a3q6** $'$8  B'BB M 'A||NN299QXXa[-+PQ #A&*=82=/ |STU o% OOI & '#+sCc4ddlm}||jS)Nrr3)rn)narwhals._arrow.namespacer4ri)rkr4s rY__narwhals_namespace__z"ArrowSeries.__narwhals_namespace__s<dmm44r[cB|jtj|SrT)rpcequalrkrs rY__eq__zArrowSeries.__eq__  511r[cB|jtj|SrT)rr not_equalrs rY__ne__zArrowSeries.__ne__s  u55r[cB|jtj|SrT)rr greater_equalrs rY__ge__zArrowSeries.__ge__s  !1!1599r[cB|jtj|SrT)rrgreaterrs rY__gt__zArrowSeries.__gt__s  U33r[cB|jtj|SrT)rr less_equalrs rY__le__zArrowSeries.__le__  66r[cB|jtj|SrT)rrlessrs rY__lt__zArrowSeries.__lt__s  %00r[cB|jtj|SrT)rr and_kleeners rY__and__zArrowSeries.__and__rr[cB|jtj|SrT)rrrrs rY__rand__zArrowSeries.__rand__s&&r}}e<>r[c(|jd|S)Nc:tjt||SrTrdividerrrs rYrbz)ArrowSeries.__truediv__.. sbii9I!Q9O.Pr[)rrs rY __truediv__zArrowSeries.__truediv__s  !PRWXXr[c(|jd|S)Nc:tjt||SrTrrs rYrbz*ArrowSeries.__rtruediv__..$s$4Q$:;r[)rrs rY __rtruediv__zArrowSeries.__rtruediv__"s&& ;U  r[c|jxr t|dd}||zj}t||\}}t j |t j ||}|j||Srrjrcrrrrrrrrkrrx floor_divrress rY__mod__zArrowSeries.__mod__'sk!__S d1SU]** #D%0 Ukk#r{{9e<=  9K LLr[c|jxr t|dd}||zj}t||\}}t j |t j ||}|j||Srrrs rY__rmod__zArrowSeries.__rmod__.sk!__S d1Sd]** #D%0 Ukk%Y!<=  9K LLr[cb|jtj|jdSNTrw)rrinvertrrrqs rY __invert__zArrowSeries.__invert__5%  4;;!7D QQr[c.|jjSrT)rrtyperqs rY_typezArrowSeries._type8s{{r[T)_return_py_scalarc@tt|j|SrT)rZrrrrkrs rYrzArrowSeries.len<s&s4;;'79JKKr[ct|tst||\}}n|}|j|jj |SrT)r$boolrrrrfilter)rk predicate_rs rYrzArrowSeries.filter?sA)T*,T9=OA|$L  !3!3L!ABBr[cft|jr|jdnd}t||SNr)rrrrZ)rkrr~s rYfirstzArrowSeries.firstGs*#&t{{#3Q&v/@AAr[c`|j}t|x}r||dz nd}t||SN)rrrrZ)rkrcaheightr~s rYlastzArrowSeries.lastKs6 [[.1"g$5F$5FQJD&v/@AAr[cTttj|j|SrT)rZrmeanrrrs rYr$zArrowSeries.meanPs&rwwt{{';=NOOr[c|jjs d}t|tt j |j |S)Nz<`median` operation not supported for non-numeric input type.)r is_numericr(rZrapproximate_medianrr)rkrrs rYmedianzArrowSeries.medianSsDzz$$&PC', ,&  ! !$++ .0A  r[cTttj|j|SrT)rZrminrrrs rYr*zArrowSeries.min\&rvvdkk': &y2CDDr[ctj|jtj|j}t ||SrT)rr.rrrrZ)rkr index_maxs rYarg_maxzArrowSeries.arg_maxfr1r[cXttj|jd|SNr min_count)rZrsumrrrs rYr9zArrowSeries.sumj$& FF4;;! ,.?  r[cT|j|jjSrT)rrr drop_nullrqs rY drop_nullszArrowSeries.drop_nullsos   !6!6!899r[c8|dkDr(t||g|jd| j}nJ|dkr*g|j| djt| |}n|j|jS|jt j |Sr)rrrchunksrr concat_arrays)rknarrayss rYshiftzArrowSeries.shiftrs q5 D)DDKK!,<,C,CDF UEt{{A23'..E A2t0DEF$$T[[1 1  !1!1&!9::r[cXttj|j||SN)ddof)rZrstddevrrrkrFrs rYstdzArrowSeries.std{s$& IIdkk -/@  r[cXttj|j||SrE)rZrvariancerrrHs rYvarzArrowSeries.vars$& KK $ /1B  r[c <|jj}t|dk(ryt|dk(r tdSt|dk(ryt j |t j |}t j t j|td}t j t j|td}t j|t j|td}t||S)Nrrnangg? rrr<rfloatrrr$rrrrZ)rkr ser_not_nullmm2m3biased_population_skewnesss rYskewzArrowSeries.skews{{,,. |  ! |  !<  |  ! KK bggl&; < WWRXXaQ( ) WWRXXaQ( )%'YYr288BC3I%J"&'ACTUUr[c X|jj}t|dk(ryt|dk(r tdSt j |t j |}t j t j|td}t j t j|td}t j t j|t j|tdtd}t||S)NrrrNrOrPrQ)rkrrSrTrUm4ks rYkurtosiszArrowSeries.kurtosiss{{,,. |  ! |  !<  KK bggl&; < WWRXXaQ( ) WWRXXaQ( ) KK "bhhr3q6&:;SV D&q*;<OPPr[ctttj|jj d|S)Nr)mode)rZrr_rruniquers rYn_uniquezArrowSeries.n_uniques-& HHT[['') 68I  r[c|jtjur|jjSdt |j}t |)NzExpected pyarrow, got: )_implementationr"PYARROWto_native_namespacerAssertionError)rkrs rY__native_namespace__z ArrowSeries.__native_namespace__sN   >#9#9 9'';;= ='T-A-A(B'CDS!!r[c|jSrT)rgrqs rYrmzArrowSeries.names zzr[ct|dk(r+|j|jjddS|jdkrt |t r t|}|j|jj|S)Nr)) rrrrslice_backend_versionrtuplelisttake)rkrowss rY_gatherzArrowSeries._gatherso t9>$$T[[%6%6q!%<= =  5 (Ze-D:D  !1!1$!788r[c|jxsd}|j |jnt|j}|dkrt|j|z}|dkrt|j|z}|j|jdk7r d}t ||j |jj|||z S)Nrrz4Slicing with step is not supported on PyArrow tables)startstoprrrstepNotImplementedErrorrrm)rkrrrurvrs rY _gather_slicezArrowSeries._gather_slices a II1tyys4;;7G 19 $u,E !8t{{#d*D 99 TYY!^HC%c* *  !2!25$,!GHHr[chddl}t|tr-tj|g}tj|g}n^tj|}t||j r|j j}ntj}||}tj|}|j|}|j|}|j|jt}d||<tj} |j| |j ||S)Nr)rT)numpyrintrarrayrurrcombine_chunksr sort_indicesrqrrrreplace_with_maskr) rkindicesvaluesnpindices_native values_nativepa_arraysorting_indicesmaskpc_replace_with_masks rYscatterzArrowSeries.scatters gs #XXwi0NHHfX.M XXg.N&$..1 & < < > (*xx ( 0 //.9',,_=%**?; $((*D9#^ ,.+?+?  !5dkk4!WXXr[c6|jjSrT)rr to_pylistrqs rYto_listzArrowSeries.to_lists{{$$&&r[)copyc<|jj||S)N)rr)rr __array__rkrrs rYrzArrowSeries.__array__s{{$$5t$<s&t{{'='=?PQQr[c |dk\r+|j|jjd|St|}|j|jjdt d||zSr)rrrrmrrrkrAnum_rowss rYheadzArrowSeries.headAsa 6$$T[[%6%6q!%<= =t9  !2!21c!X\6J!KLLr[c |dk\rBt|}|j|jjt d||z S|j|jjt |Sr)rrrrrmrrrs rYtailzArrowSeries.tailGsa 64yH$$T[[%6%6s1hl7K%LM M  !2!23q6!:;;r[c|j|r|}ntj|}|jt j |j |S)N) value_set)rrr}rris_inrr)rkrrs rYrzArrowSeries.is_inMs@ ??5 !-2II  $++!KLLr[c|ddl}|j|j}|j||j|S)Nrrz)r{ flatnonzerorrrrm)rkrrs rYarg_truezArrowSeries.arg_trueTs3nnT[[)!!#DIIt!DDr[c|Bt|dk7rdt|d}t|t|jddSt|j|dS)Nrzlcan only call '.item()' if the Series is of length 1, or an explicit index is provided (Series is of length )rTrX)r ValueErrorrZrr)rkr.rs rYitemzArrowSeries.itemZsg =4yA~NNQRVi[XY[!o%*4;;q>DQ Q&t{{5'9DQQr[c ddlm}|jdn |j}|xs|rdnd}tj|j }|j d} td|j d} |r2| tjt| tj| g} n| | g} tjj| ||g } |r| j|d fg} || |jd S) z-Parallel is unused, exists for compatibility.rr1r. proportionr_rr8countsnames descendingTrnvalidate_column_names)narwhals._arrow.dataframer2rgr value_countsrrfieldrrrr9rTable from_arrayssort_byri) rksortparallelrm normalizer2 index_name_ value_name_ val_countsrrrB val_counts rYrzArrowSeries.value_countses =!%!3g Fy|g __T[[1 !!(+')9)9()CD bii)9&"&&.)QRSFf%FHH(( [7Q(R !))K+F*GHI t}}D  r[c|jj}|jtj||j|jSrT)rrr~rrif_else)rkrrconds rYzip_withzArrowSeries.zip_withs:{{))+  D$++u||!LMMr[cddl}t|}||t||z}|jj |}|j |}|j |||} |j|jj| S)Nr)seed)sizereplace) r{rr|random default_rngarangechoicerrrrq) rkrAfractionwith_replacementrrrrngidxrs rYsamplezArrowSeries.samples t9 9-Hx'(Aii###.ii!zz#A/?z@  !1!1$!788r[ctjtj|j||j}|j |dSr )rrrrrr)rkrWr~s rYfill_nanzArrowSeries.fill_nans;BIIdkk2E4;;G  D AAr[cN ddl d fd }|0t||\}}tj|j|}nN|8|dk(rtj ntj }||j}n||j||}|j|dS)Nrc tj|}tjj t |tj }|dk(r2jjj||d}||z }nLjjj|ddd|dddt |ddd}||z }tjtjtj|tj|t||j!||S)Nrforwardr)ris_validrr}rrint64maximum accumulatewhereminimumrand_rrrrq)arrlimit direction valid_maskr valid_indexdistancers rYfill_auxz'ArrowSeries.fill_null..fill_auxs S)JhhryyS2DGI% jj33BHHZRT4UV "[0 jj33HHZ"-wtt}c#hGB$ '0:: 3xU)LM% r[rTrw)r r8r r|r FillNullStrategy | Nonereturnr5)r{rr fill_nullrrfill_null_forwardfill_null_backwardr) rkrWstrategyr rr native_valuer} fill_funcrs @rYrzArrowSeries.fill_nulls    ), 9P   ,  ,T59OA|$&LLl$KF ](0I(=$$2CXCX t{{+Fdkk5(;F  D AAr[cddlm}tjj |j g|j g}|||jdS)Nrr1rFr)rr2rrrrrrmri)rkr2dfs rYto_framezArrowSeries.to_frames=< XX ! !4;;- { ! Cb$--uUUr[cZddl}|j|j|jS)Nrr)pandasSeriesrrrm)rkpds rY to_pandaszArrowSeries.to_pandass ryy49955r[cVddl}td|j|jS)Nr pl.Series)polarsr from_arrowrr)rkpls rY to_polarszArrowSeries.to_polarss!Kt{{!;<J.. KKu^   !1!1.!ABBr[c ddl}ddlm}|j}|jj j d}|jt|jt|f|j}d||j|jt|f<||d||d} }|jD cgc]"} || ij||| ||| $} } | | vr.| gt| D cgc] } | | k7s |  c} t|dnt| t|d} |t j"j%|| |j&d j(| Scc} wcc} w) Nrr1encoderNonenullrTr)r{rr2rgrrr~dictionary_encoderr dictionaryint8rrgetsortedr|rrrri simple_select)rk separator drop_firstrr2rmdar- null_col_pa null_col_plvcolsc output_orders rY to_dummieszArrowSeries.to_dummies6s<zz335GGQHHc"--&8#b'%BBGGL23 BIIc"g../&*VI;d#;vi[PT=U[ ]]  + & * *& A3'D6)QC)@   d" D=qA,<=>s:?PQ  c*o/0 ~ HH  5MM"&  - ' ' >s?'E27 E7 E7 c`ttj|j||d|S)N)q interpolationr)rZrquantilerr)rkrnrmrs rYrnzArrowSeries.quantileWs-' KK x} Ma P   r[cD|j|j|d|SrT)rrr)rkrAoffsets rY gather_everyzArrowSeries.gather_everycs"  VYQY!788r[ct||\}}t||\}}|jtjtj|j ||SrT)rrrmax_element_wisemin_element_wiserr)rkrrrloweruppers rYclipzArrowSeries.clipfsV!$ 45!$ 45     3 3DKK G O  r[c~t||\}}|jtj|j|SrT)rrrrsrr)rkrrrus rY clip_lowerzArrowSeries.clip_lowerm4!$ 45  !4!4T[[%!HIIr[c~t||\}}|jtj|j|SrT)rrrrtrr)rkrrrvs rY clip_upperzArrowSeries.clip_upperqrzr[c6|jjSrT)rrr~rqs rYto_arrowzArrowSeries.to_arrowus{{))++r[cz|j}td|jg}|j|ddd}|j |j ||j |j jk(j|j}|dk(r|jdS|S)Nr*r+F)rmrrrrr) rr#rmrrcolr broadcast get_columnr)rkkeepplxr5rr~s rYrazArrowSeries.modexs))+21tyykR ""e%%#  GGI #'')"4"8"8":"D"D"F F *TYY  "&v{{1~:F:r[c^|jtj|jSrT)rr is_finiterrrqs rYrzArrowSeries.is_finites   dkk!:;;r[c|jj}|jj|j j |S)Nr)ridtypesrrUInt32r)rkrrs rY cum_countzArrowSeries.cum_counts>%%%%fmmo6>>w>OOr[c|s!tj|jdn,tj|jddddddd}|j|Sr)rcumulative_minrrrrkrr~s rYcum_minzArrowSeries.cum_min[   dkkd ;""4;;tt#4FttL    ((r[c|s!tj|jdn,tj|jddddddd}|j|Sr)rcumulative_maxrrrrs rYcum_maxzArrowSeries.cum_maxrr[c|s!tj|jdn,tj|jddddddd}|j|Sr)rcumulative_prodrrrrs rYcum_prodzArrowSeries.cum_prods[   t{{t <##DKK"$5$G"M    ((r[c||n|}t|||\}}|jdjddd}|dk7r&||j|jdddz n|}|j d}||j|jdddz } |j t j| |k\j|jd} | jt|dSN window_sizecenterFrrrWrr r rrrrCrrrrrrryrm rkr min_samplesr padded_seriesrpr rolling_sum valid_countcount_in_windowr~s rYrzArrowSeries.rolling_sums%0%> @R@RTX Y ##E&$$788r[c||n|}t|||\}}|jdjddd}|dk7r&||j|jdddz n|}|j d}||j|jdddz } |j t j| |k\j|jd| z } | jt|dSrrrs rY rolling_meanzArrowSeries.rolling_means-%0%O#CDLL    b11?T3I2Q2QSTU V W##E&$$=>>r[c2|j||||dzS)N)rrrrF?)r)rkrrrrFs rY rolling_stdzArrowSeries.rolling_stds0   '[VZ    r[c|dk(r d}t||rdnd}|dk(rdn|}|jdkr|jj}n |j}t j |}t j |||}t j|td|j|} |j| S) Naveragez`rank` with `method='average' is not supported for pyarrow backend. The available methods are {'min', 'max', 'dense', 'ordinal'}.rrOordinalr)rr) sort_keys tiebreaker) rrnrrr~rrrankrrrr) rkmethodrrrrrl null_maskrr~s rYrzArrowSeries.rank s Y P S/ !+5<; ,2i,?V   : - KK668M KKMJJ}- ww} jQIs4';TB  ((r[cjtj||j|jSN)include_breakpoint) _ArrowHist from_series with_binsr)rkbinsrs rYhist_from_binszArrowSeries.hist_from_bins$s-  " "4rbrMrrjrnrqrwryr|r~rarrrrrrrrrrrrrrrrrrrrrprr&ewm_mean __classcell__)rus@rYrere|s9$,,O , 7: EL  ##MDI#<@ P "& CC! C  C  C CC&+ 00PR>">3B>JM> >>   (5 26:4717=<<065;5;289?Y MMR  04LC26B15B 15P37 04O04O48E48E04 :;;? ;? 15 V59 =26Q59 "9 IY@'=$=&& II6) 87Q04 04 &&-0&:H& &2QR[7;RM < ME R  '+ 3= JN  6N9 9 9  9  9 9&B(B&(B*(B (B  (BTV 6 = < M LF047( (( ( ' ( (TC'L#'    2      9 JJ, ;<P)))909:)?)?03)?=A)?IL)? )?V  03 =A IL  )0  8<    59  D6 B6722--00..00 Hr[rer8cheZdZUded<d dZddZddZddZdd dd Zdd Z dd Z y )rre_seriesctjj}|jj j j }|||j|jSr)rr from_pydictrr _dataframer|_data)rktabler|s rYrz_ArrowHist.to_frameosIHH00ll99;FFRR 5,dllCCr[c|jjd}td|j}|jdk(S)NT) nan_is_nullzpa.BooleanArrayr)rrrrr~ false_count)rkrr s rYis_empty_seriesz_ArrowHist.is_empty_seriesvs@++%%$%7$g&<&<&>?!##r[cl|j|}|jr|j||dSd|iS)N breakpointr_r_)_zeros _breakpoint_calculate_breakpoint)rkargr_s rY series_emptyz_ArrowHist.series_emptys: C    "&"<" SLE SLE!!% A >>r[c >|j}td|}t|dk(rtjtj |t |dtj|t |d}tj|jtj}|jr |dg|gdSd|giSddl }|j||d }tjtj|t |dd|}|j!|d \}}|j#dt|} |j%| } ||j'|| | |j'| |<|jr|dd| dSd| iS) NrrOrrrrr_r)sideT) return_counts)rrrrrr rrrr9ruint8rr{ searchsortedrrrbr zeros_likeisin) rkrris_between_binsr_r bin_indicesobs_cats obs_countsobj_catsrs rY_calculate_histz_ArrowHist._calculate_histsmkk M4( t9> gg  c$q'l3R]]3DQRG 5UOFF?// ;)rWzpa.Scalar[pa.StructType]rXrrzlist[dict[str, Any]])rWz1pa.Scalar[pa.ListType[_BasicDataType[_AsPyType]]]rXrrzlist[_AsPyType])rWzpa.Scalar[Any] | AnyrXrrr)rWrrXrrr)m __future__rtypingrrrrrr rrpyarrow.computecomputernarwhals._arrow.series_catr narwhals._arrow.series_dtr narwhals._arrow.series_listrnarwhals._arrow.series_strrnarwhals._arrow.series_structrnarwhals._arrow.utilsrrrrrrrrrrrnarwhals._compliantrr narwhals._typing_compatr!narwhals._utilsr"r#r$r%r&narwhals.dependenciesr'narwhals.exceptionsr(r)collections.abcr*r+r,typesr-rrr#r%typing_extensionsr.r/r0rr2rr4narwhals._arrow.typingr5r6r7r8r9r:r;r<r=r>r?narwhals._compliant.seriesr@narwhals._typingrArBrCnarwhals.dtypesrDnarwhals.typingrErFrGrHrIrJrKrLrMrNrOrPrQrRrrZrerrUr[rYr3s"HH>B@AD    =04A<< 9988    4*8%" S9  /    #    <       k!+/0k!\T!VWT!r[