L i}yUddlmZddlmZmZmZmZddlmZm Z m Z m Z m Z ddl ZddlmZddlmZddlmZmZmZmZmZddlmZddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(dd l)m*Z*erdd lm+Z+dd l,m-Z-dd l.m/Z/ddl0m1Z1ddl2Z3ddl4Z5ddl6m7Z7m8Z8m9Z9ddl:m;Z;ddlm?Z?ddl@mAZAmBZBddlCmDZDmEZEddlFmGZGddlHmIZIddlJmKZKmLZLddlmZmMZMddlNmOZOddlPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZe dZ[de\d<Gdded Z]y)!) annotations) CollectionIteratorMappingSequence) TYPE_CHECKINGAnyLiteralcastoverloadN) ArrowSeries)arange concat_tablesnarwhals_to_native_dtypenative_to_narwhals_dtyperepeat)EagerDataFrame) ImplementationVersioncheck_column_names_are_uniqueconvert_str_slice_to_int_slicegenerate_temporary_column_namenot_implementedparse_columns_to_drop scale_bytessupports_arrow_c_stream zip_strict)is_numpy_array_1d) ShapeError)Iterable)BytesIO)Path) ModuleType)Self TypeAliasTypeIs) ArrowExpr ArrowGroupByArrowNamespace)ChunkedArrayAnyOrder)CompliantDataFrameAnyCompliantLazyFrameAny) SparkSession)IntoArrowTable)_EagerAllowedImpl_LazyAllowedImpl)r_LimitedContext)DType) IntoSchema JoinStrategySizedMultiIndexSelectorSizedMultiNameSelectorSizeUnitUniqueKeepStrategy_1DArray_2DArray _SliceIndex _SliceName) left semiz right semi left antiz right antiinner left outerz right outer full outerr%JoinTypeceZdZejZdd dNdZedOdZe dPdZ e dQdZ e dRdZ edSdZ e dTd ZdUd ZdVd ZdWd ZdWd ZdXdZdddYdZedZdZd[dZd\dZed]dZed^dZed_dZd_dZd`dZeZ dadZdbdZdcdZdddZ dedZ!dfdZ"dgd Z# dhd!Z$ did"Z%edjd#Z&djd$Z'dkd%Z(e)Z*edld&Z+dmd'Z,dnd(Z-dod)Z.dnd*Z/ dpd+Z0 dqd,Z1e)Z2drd-Z3dsd.Z4dtd/Z5dud0Z6dvd1Z7dwd2Z8dxd3d4dcd5Z9edyd6Z:edzd7Z: d{d8Z:d|d9Z;d}d:Z dxd3d= dd>Z? dd?Z@dWd@ZAddAZBddBZCddCZDeddDZEeddEZEddFZEddGZFd3dH ddIZGddJZHddKZI ddLZJ ddMZKe)ZLy3)ArrowDataFrameF)validate_backend_versioncr|rt|j|r|j||_||_yN)r column_names_validate_backend_version _native_frame_version)selfnative_dataframeversionvalidate_column_namesrHs _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/narwhals/_arrow/dataframe.py__init__zArrowDataFrame.__init__Vs4 ! )*:*G*G H #  * * ,- c|jj}|j|r|}n~|dk\st|trt j |}nSt|r$dt|jd}t|dt|jd}t||j||S)NzB'pyarrow>=14.0.0' is required for `from_arrow` for object of type .z1`from_arrow` is not supported for object of type context) _implementation_backend_version _is_native isinstancerpatablertype__name__ModuleNotFoundError TypeError from_native)clsdatar[backend_versionnativemsgs rS from_arrowzArrowDataFrame.from_arrowes!11BBD >>$ F  %D*)EXXd^F $T *VW[\`WaWjWjVmmnoC%c* *Ed4jFYFYE\\]^CC. vw77rUcJ|s(|s&|jtji|S|s&|jtj||Std|j Dsoddlm}|td|j}|r|s|j}n!tjj||}|j||S|jjdkr d}t|tj|jD cic]>\}} |tj |r||ngg| t#| |j$ nd @c} }} |jtj| |Scc} }w) NrZc3$K|]}|du ywrJ.0dtypes rS z+ArrowDataFrame.from_dict..s>U5D=>rSchemar6schemarWz8Passing `None` dtype in `from_dict` requires PyArrow>=14rQ)rb)rfr`raanyvaluesnarwhals.schemarvr to_arrow empty_tableTable from_pydictr\r]NotImplementedErroritems chunked_arrayrrN) rgrhr[rxrv pa_schemarjrknamenw_dtyperess rS from_dictzArrowDataFrame.from_dicttshd??288B<?A A??288D>7?C C>fmmo>> .tL&9:CCEI"..0--d9-E??67?; ;  " " 3 3 5 =LC%c* *hh'-lln #D( b&&#'T$ZR0+2(GDTDTU    rxx}g>> s.AF cFddlm}|r-td|jDr d}t || |t d|j n|}|r|s|j}n!tjj||}|j||S)Nrruc3$K|]}|du ywrJrorps rSrsz,ArrowDataFrame.from_dicts..sEE%4-ErtzR`from_dicts` with `schema` where any dtype is `None` is not supported for PyArrow.r6rwrZ) r|rvrzr{rr r}r~r`r from_pylistrf)rgrhr[rxrvrkrrjs rS from_dictszArrowDataFrame.from_dictss + cEV]]_EEfC%c* *! 4 f- . 7 7 9  T**,FXX))$y)AFvw77rUc6t|tjSrJ)r_r`r)objs rSr^zArrowDataFrame._is_natives#rxx((rUc,|||jdS)NTrQrR)rN)rgrhr[s rSrfzArrowDataFrame.from_natives4!1!1NNrUcddlm}|jDcgc]}tj|}}t |t |fr6tjj|||j}n0tjj||j||}|j||Scc}w)NrrurwrZ) r|rvTr`arrayr_rr from_arraysr}_numpy_column_namesrf)rgrhr[rxrvvalarraysrjs rS from_numpyzArrowDataFrame.from_numpys ++/662C"((3-22 fw/ 0XX))&9P9P9R)SFXX))I2I$PV2WXFvw77 3sB>c4ddlm}||jS)Nrr*ry)narwhals._arrow.namespacer+rN)rOr+s rS__narwhals_namespace__z%ArrowDataFrame.__narwhals_namespace__s<dmm44rUc|jtjur|jjSdt |j}t |)NzExpected pyarrow, got: )r\rPYARROWto_native_namespacerbAssertionError)rOrks rS__native_namespace__z#ArrowDataFrame.__native_namespace__sN   >#9#9 9'';;= ='T-A-A(B'CDS!!rUc|SrJrorOs rS__narwhals_dataframe__z%ArrowDataFrame.__narwhals_dataframe__ rUc|SrJrors rS__narwhals_lazyframe__z%ArrowDataFrame.__narwhals_lazyframe__rrUc>|j|j|dS)NFr) __class__rj)rOrQs rS _with_versionzArrowDataFrame._with_versions~~dkk7RW~XXrUTrRc>|j||j|S)Nr)rrN)rOdfrRs rS _with_nativezArrowDataFrame._with_natives$~~  =R  rUc.|jjSrJ)rjshapers rSrzArrowDataFrame.shapes{{   rUc,t|jSrJ)lenrjrs rS__len__zArrowDataFrame.__len__s4;;rUc\tfd|jjDS)Nc3(K|] }| ywrJro)rqcolindexs rSrsz%ArrowDataFrame.row..sECSZEs)tuplerj itercolumns)rOrs `rSrowzArrowDataFrame.rows!E4;;+B+B+DEEErUcyrJrorOnameds rSrowszArrowDataFrame.rowssEHrUcyrJrors rSrzArrowDataFrame.rowssGJrUcyrJrors rSrzArrowDataFrame.rowssTWrUcr|st|jddS|jjS)NFi)r buffer_size)list iter_rowsrj to_pylistrs rSrzArrowDataFrame.rowss0UDE E{{$$&&rUc#Kt|j|jjD]\}}t j |||!yw)Nr[r)rcolumnsrjrr rf)rOrseriess rS iter_columnszArrowDataFrame.iter_columnssH&t||T[[5L5L5NO KLD&))&$TJ J KsAAc#6K|j}|j}|sGtd||D]6}||||zjj }t |Ed{8ytd||D] }||||zj Ed{"y787 wNr)rjnum_rowsrange to_pydictr{rr)rOrrrrirs rSrzArrowDataFrame.iter_rowss[[;;1h 4 -!a+o.88:AAC%t,,, -1h 4 ?a!k/2<<>>> ?-?s$ABB0B BBBct|tsdt|}t|t j |j |||S)NzExpected str, got: r)r_strrbrer rfrj)rOrrks rS get_columnzArrowDataFrame.get_columnsD$$'T |4CC. &&t{{4'8$TRRrUc<|jj||S)Ncopy)rj __array__)rOrrrs rSrzArrowDataFrame.__array__s{{$$U$66rUct|dk(r+|j|jjddS|jdkrt |t r t|}|j|jj|S)Nr)) rrrjslicer]r_rrtake)rOrs rS_gatherzArrowDataFrame._gatherso t9>$$T[[%6%6q!%<= =  5 (Ze-D:D  !1!1$!788rUc|jxsd}|j |jnt|j}|dkrt|j|z}|dkrt|j|z}|j|jdk7r d}t ||j |jj|||z S)Nrz4Slicing with step is not supported on PyArrow tables)startstoprrjsteprrr)rOrrrrks rS _gather_slicezArrowDataFrame._gather_slice#s a II1tyys4;;7G 19 $u,E !8t{{#d*D 99 TYY!^HC%c* *  !2!25$,!GHHrUct||j\}}}|j|jj |j|||SrJ)rrrrjselect)rOrrrrs rS_select_slice_namez!ArrowDataFrame._select_slice_name/sH:7DLLQtT  !3!3DLLtD4Q!RSSrUc|j|jj|j|j|j |j SrJ)rrjrrrrr)rOrs rS_select_slice_indexz"ArrowDataFrame._select_slice_index3sC  KK  t||GMMGLL7<<,WX Y  rUct|tjrtd|j }nt |r|j }n|}|j|jj|S)Nz Sequence[int]) r_r` ChunkedArrayr rrtolistrrjrrOrselectors rS_select_multi_indexz"ArrowDataFrame._select_multi_index8sb gr /OW->->-@AHw '~~'HH  !3!3H!=>>rUct|tjrtd|j }n|}|j |j j|S)N Sequence[str])r_r`rr rrrjrrs rS_select_multi_namez!ArrowDataFrame._select_multi_nameGsL gr /OW->->-@AHH  !3!3H!=>>rUc|jjDcic]-}|jt|j|j /c}Scc}wrJ)rjrxrrrbrN)rOfields rSrxzArrowDataFrame.schemaSsG++  JJ0T]]K K   s2Ac|jSrJrwrs rScollect_schemazArrowDataFrame.collect_schemaZ {{rUcF|jj}t||SrJ)rjnbytesr)rOunitszs rSestimated_sizezArrowDataFrame.estimated_size]s [[  2t$$rUc.|jjSrJ)rjrKrs rSrzArrowDataFrame.columnscs{{'''rUcl|j|jjt|dSNFr)rrjrr)rOrKs rS simple_selectzArrowDataFrame.simple_selectgs3  KK  tL1 2%!  rUc|j|}|s6|j|jjj gdS|Dcgc]}|j }}|dj }||}tjj |Dcgc]}|jc}|}|j|dScc}wcc}w)NFrr)namesT) _evaluate_exprsrrjrrr_align_full_broadcastr`r)rOexprs new_seriessralignreshapedrs rSrzArrowDataFrame.selectls)T))51 $$ %%11"5U% ",,A,,1 33*% XX ! !X">188">e ! L  4 @@ -#?s CCct|}|js0t|x}|k7rd|d|d}t||jS|jd}t j t j ||gS)NzExpected object of length z, got: rYr)r _broadcastrrjr`rr)rOotherlength len_otherrkvalues rS_extract_comparandz!ArrowDataFrame._extract_comparandysyT Z' F226(')AN o%<<  Q5&!9 :;;rUc2|j}|j|}|j}|D]Y}|j}|j |}||vr#|j |j |||n|j||}[|j|dS)N)columnFr) rjrrrr  set_columnr append_columnr)rOr native_frame new_columnsr col_valuecol_namers rS with_columnszArrowDataFrame.with_columnss{{ *d**E2 ,,$ I ~~H,,Y7Fw&'' h(?RX'Y!///H    U KKrUc$ddlm}||||S)Nrr()drop_null_keys)narwhals._arrow.group_byr))rOkeysrr)s rSgroup_byzArrowDataFrame.group_bys :D$~FFrUc dddddd}|dk(r|j}tdg|j|j }|j|j |j d dj |jjj|j |j d dj |jj||d| j|gS|d k7} |j|jj|j|xsg||||| S)NrAr@rBrCrD)antisemirBleftfullcrossn_bytesrr)r right_keys join_type right_suffixr )rr%r&r' coalesce_keys) rrrrrlitalias broadcastrjjoindrop) rOr howleft_onright_onsuffixhow_to_join_mapplx key_tokenr(s rSr,zArrowDataFrame.joinsK   0  '>--/C6#BT\\#BEMM#BI$$!!#''!T"2"8"8"C"M"M"OP&&4(..y9CCEf"(%!'yk"  v   KK   ]#)#.#+    rUcvt|||}|j|jj|dS)NstrictFr)rrrjr-)rOrr7to_drops rSr-zArrowDataFrame.drops6'gfE  !1!1'!:RW XXrUc|+|j|jjdS|j}|j |j |j d}|j|S)NFrT) ignore_nulls)rrj drop_nullrany_horizontalris_nullfilter)rOsubsetr3masks rS drop_nullszArrowDataFrame.drop_nullsst >$$T[[%:%:%Q>Q#RsCLLN#RS $SsAcyrJrorO as_seriess rSto_dictzArrowDataFrame.to_dictsNQrUcyrJrores rSrgzArrowDataFrame.to_dict sMPrUc|j}|r|Dcic]}|j|c}S|Dcic]}|j|jc}Scc}wcc}wrJ)rrto_list)rOrfitsers rSrgzArrowDataFrame.to_dictsV    -/0cCHHcM0 0356C#++-'6616s A"Ac|j}tdt|d}|W|jj |j j |||}|j||jStj|j|Dcgc]}|dfc}}|jdkr%|jtj|}n7tj||jt!j"}|j%|jj'd||Scc}w)NrrrrD))rrr_expr _from_series_series from_iterablerallrR sort_indicesrjr]rscatterr r`int64r add_column) rOrorder_byr3rh row_indexrKindicesnew_cols rSwith_row_indexzArrowDataFrame.with_row_indexs))+aTA&   .. ))$4)HI;;y#'')4 4//$++H/Ub[0A/UV  5 (ii 89Gjjw||BHHJ'?@G  !7!74!IJJ 0Vs E c|j|j}|j|jj|dSr)_evaluate_single_output_exprrjrr>)rO predicate mask_natives rSr>zArrowDataFrame.filter%sD77 BII   KK  { +5!  rUc |j}|dk\r#|j|jd|dS|j}|j|jdt d||zdSNrFr)rjrrrmaxrOnrrs rSheadzArrowDataFrame.head+sn [[ 6$$RXXa^5$Q Q;;  HHQAx!|, -U!  rUc |j}|dk\r;|j}|j|jt d||z dS|j|jt |dSr)rjrrrrabsrs rStailzArrowDataFrame.tail4sq [[ 6{{H$$Q1 -.e%   #a&!1 OOrU)sessionc\||S|tjur:ddl}ddlm}|j }||j dd|jS|tjurQddl }ddl m }|td|j|j jd|jS|tjurHddlm}ddlm} | |j)|j j+d|jS|tj,urDddl} dd lm} | | j5|j |j6 d|jS|j9r4dd lm} | d } t?| | jA||||j StB)Nr)DuckDBLazyFrame_dfTrHrQ)PolarsLazyFrame pl.DataFrame) DaskLazyFrame) IbisLazyFrame)r)SparkLikeLazyFramez5Spark like backends require `session` to be not None.)rimplementationrQ)"rDUCKDBduckdbnarwhals._duckdb.dataframerrjrarNPOLARSr[narwhals._polars.dataframerr rllazyDASKdask.dataframe dataframenarwhals._dask.dataframer from_pandasrYIBISibisnarwhals._ibis.dataframermemtabler is_spark_likenarwhals._spark_like.dataframer ValueError_from_compliant_dataframer)rObackendrrrrr\rddrrrrrks rSrzArrowDataFrame.lazy=sy ?K n++ +  B++C" U#dDMM  n++ +  B"^]R]]4;;%?@EEG)-   n)) ) ' > t{{4467)-   n)) )  >  dkk4<< @)-    " IM o%%??ggt}}@ rUc |tjus|%ddlm}||j|j dS|tj urCddlm}||jjtj d|j dS|tjurCddl }ddl m }|td |j|jd|j Sd |}t!|) Nr)rGFr)PandasLikeDataFrameT)rrHrQrR)PolarsDataFramerrzUnsupported `backend` value: )rrnarwhals._arrow.dataframerGrjrNPANDASnarwhals._pandas_like.dataframerrYrr[rrr rlr)rOrkwargsrGrr\rrks rScollectzArrowDataFrame.collectzs n,, , @! T]]%  n++ + K& %%'-44)- &+   n++ +  B"^]R]]4;;%?@)-   .gY7S!!rUc<|j|jdSrrrjrs rSclonezArrowDataFrame.clones  E JJrUcLddlm}|E|C|jdk7rd|j}t|||jdddS|| d}t|t |t r|jj|n|}||j||dS)Nr)maybe_extract_py_scalar)rrzycan only call `.item()` if the dataframe is of shape (1, 1), or if explicit row/col values are provided; frame has shape T)return_py_scalarz8cannot call `.item()` with only one of `row` or `column`) narwhals._arrow.seriesrrrrjr_rrr)rOrrrrk_cols rSitemzArrowDataFrame.itemsB ;6>zzV#((, ~7 !o%*4;;q>!+sA0cHddlm}|j|j|yr)pyarrow.parquetparquet write_tablerj)rOfilepps rS write_parquetzArrowDataFrame.write_parquets$ t{{D)rUcyrJrorOrs rS write_csvzArrowDataFrame.write_csvs,/rUcyrJrors rSrzArrowDataFrame.write_csvs=@rUcddlm}|\tj}|j |j ||j jjS|j |j |yr) pyarrow.csvcsvr`BufferOutputStreamrrjgetvalue to_pybytesdecode)rOrpa_csv csv_buffers rSrzArrowDataFrame.write_csvsd$ <..0J   T[[* 5&&(335<<> >d+rUc ddl}td|j}tj|j t |}|jj||j|jj|df|dfg}tjtjtj|||dtj|||d}tj ||S) Nrr"r#minr_min_maxrZ)r_rrr`rrrrjrr aggregaterrRand_is_inr rf)rOrb col_tokenrykeep_idxrjs rS is_uniquezArrowDataFrame.is_uniques21dllS HHRYYs4y12 KK % %i ; Xdll # YE*Y,>? @  !! GGH {$-?$@AH {$-?$@A   &&vt<rzlastfirstr(r"r#)rxF)rJrC)r?keeprrx)rCrJr6_r)r__check_columns_existrrrr) _REMAP_UNIQUErr|rPuniquer-rjrr`rrrrrrrrrrrr>rorp)rOr?rrrxrberrorr)agg_funcr idx_tokenrrjkeep_idx_nativerr3s rSrzArrowDataFrame.uniques   9 9& AAuAKf, - + + =#11$7H6q$,,WIN:'A'Ay'A D'' D'AT8%IV6UUYVZ wwyUuwMRRKS"H5QXX$$Y3t99M0NO&!Y1239+Qxj12  $$ O,E% &4%%v.88:))+{{39911(;<.9s9Q!5.q9s c3K|]6}jt|j|8ywrJ)rr)rqrr index_colsr value_name variable_names rSrsz)ArrowDataFrame.unpivot..<sB   $ $]F4O D R RF4L  srrrrrrrrrrrrr}rr pivotrorUrSrGrGQs%,,O*/  "    $  #'      8 8#?#? ! #? ? #? #?#?J8)8 ! 8 ? 8 880))OO88 ! 8 2 8 88"5 "YKO !! FHH JJ WW' K!M ? ?+. ? = ?S 79 IT ?? ?  ? ?> ?  ?  %G (( A <L$G7GLPG G/ /  / & / ' / /  / b !IY! "  '*  QQ PP7 7 67 K  P,0;(, ;(;% ;  ;z!"/!";>!" !"FKV(D* // @@=.'+ 1=$1=! 1= $ 1= ' 1= 1=fVV V V  V  V V$F F$F F  F  F,  ErUrG)r r'r r,)^ __future__rcollections.abcrrrrtypingrr r r r pyarrowr`pyarrow.computecomputerRrr narwhals._arrow.utilsrrrrrnarwhals._compliantrnarwhals._utilsrrrrrrrrrrnarwhals.dependenciesrnarwhals.exceptionsrr ior!pathlibr"typesr#pandaspdr[r\typing_extensionsr$r%r&narwhals._arrow.exprr'rr)rr+narwhals._arrow.typingr,r-narwhals._compliant.typingr.r/narwhals._spark_like.utilsr0narwhals._translater1narwhals._typingr2r3r4narwhals.dtypesr5narwhals.typingr6r7r8r9r:r;r<r=r>r?rE__annotations__rGrorUrSr9s"CC>>./   4*( 99.58X72D8%   "  Hi s LMs rU