
    -Phm                    0   U d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZ d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d d
l(m)Z) d dl*m+Z+ erd dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2Z3d dl4Z5d dl6m7Z7m8Z8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZAmBZBmCZC d dlDmEZEmFZF d dlGmHZH d dlmZmIZI d dlJmKZK d dlLmMZM d dlNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW e	d         ZXdeYd<   e	d         ZZdeYd<    G d d ed!                   Z[dS )"    )annotations)partial)	TYPE_CHECKINGAny
CollectionIteratorLiteralMappingSequencecastoverloadN)ArrowSeries)align_series_full_broadcastnative_to_narwhals_dtype)EagerDataFrame)ExprKind)ImplementationVersioncheck_column_names_are_uniqueconvert_str_slice_to_int_slicegenerate_temporary_column_namenot_implementedparse_columns_to_dropparse_versionscale_bytessupports_arrow_c_streamvalidate_backend_version)is_numpy_array_1d)
ShapeError)BytesIO)Path)
ModuleType)Self	TypeAliasTypeIs)	ArrowExprArrowGroupByArrowNamespace)ChunkedArrayAnyMaskOrder)CompliantDataFrameAnyCompliantLazyFrameAny)IntoArrowTable)r   _FullContext)DTypeSchema)	JoinStrategySizedMultiIndexSelectorSizedMultiNameSelectorSizeUnitUniqueKeepStrategy_1DArray_2DArray_SliceIndex
_SliceName)	left semiz
right semi	left antiz
right antiinner
left outerzright outer
full outerr$   JoinType)nonedefault
permissivePromoteOptionsc                  p   e Zd ZddZedd            Zedd            Zedd            Zedd            Z	edd            Z
ddZdd!Zdd"Zdd#Zdd$Zd%d&dd(Zedd*            Zdd,Zdd/Zedd3            Zedd6            Zedd8            Zdd9Zdd;ZeZdd>ZddBZddGZddJZddLZddOZddPZddQZ ddSZ!eddU            Z"ddVZ#ddZZ$ e%            Z&edd\            Z'dd^Z(ddbZ)ddeZ*ddfZ+ddkZ,ddrZ- e%            Z.dduZ/ddwZ0dd|Z1dd~Z2ddZ3dddddZ4edd            Z5edd            Z5ddZ5ddZ6ddZ7ddZ8ddZ9ddddZ:ddZ;ddZ<ddZ=ddZ>ddZ?edd            Z@edd            Z@ddZ@ddZAddddZBddZCddZDddZEddZF e%            ZGdS )ArrowDataFramenative_dataframepa.Tablebackend_versiontuple[int, ...]versionr   validate_column_namesboolreturnNonec                   |rt          |j                   || _        t          j        | _        || _        || _        t          | j        | j                   d S N)	r   column_names_native_framer   PYARROW_implementation_backend_version_versionr   )selfrJ   rL   rN   rO   s        Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/narwhals/_arrow/dataframe.py__init__zArrowDataFrame.__init__W   s]     ! 	I)*:*GHHH--5 / !5t7LMMMMM    datar0   contextr1   r#   c                 |j         }|                     |          r|}n|dk    st          |t                    rt	          j        |          }n]t          |          r'dt          |          j        d}t          |          dt          |          j        d}t          |          |                     ||          S )N)   zB'pyarrow>=14.0.0' is required for `from_arrow` for object of type .z1`from_arrow` is not supported for object of type r`   )rY   
_is_native
isinstancer   patabler   type__name__ModuleNotFoundError	TypeErrorfrom_native)clsr_   r`   rL   nativemsgs         r\   
from_arrowzArrowDataFrame.from_arrowg   s    !2>>$ 		!FF%%D*)E)E%Xd^^FF$T** 	!oW[\`WaWaWjoooC%c***^d4jjFY^^^CC.. vw777r^   Mapping[str, Any]schema#Mapping[str, DType] | Schema | Nonec                  ddl m} | ||                                          n|}t          j                            ||          }|                     ||          S )Nr   r3   rs   rd   )narwhals.schemar4   to_arrowrg   Tablefrom_pydictrm   )rn   r_   r`   rs   r4   	pa_schemaro   s          r\   	from_dictzArrowDataFrame.from_dictv   si     	+*****171CFF6NN++---	%%d9%==vw777r^   objpa.Table | AnyTypeIs[pa.Table]c                6    t          | t          j                  S rT   )rf   rg   ry   )r}   s    r\   re   zArrowDataFrame._is_native   s    #rx(((r^   c              4     | ||j         |j        d          S )NTrL   rN   rO   )rY   rZ   )rn   r_   r`   s      r\   rm   zArrowDataFrame.from_native   s-    s#4$"&	
 
 
 	
r^   r;   3Mapping[str, DType] | Schema | Sequence[str] | Nonec              n   ddl m} d |j        D             }t          |t          |f          r=t
          j                            | ||                                                    }n4t
          j                            || 	                    ||                    }| 
                    ||          S )Nr   r3   c                6    g | ]}t          j        |          S  )rg   array).0vals     r\   
<listcomp>z-ArrowDataFrame.from_numpy.<locals>.<listcomp>   s     222C"(3--222r^   rv   rd   )rw   r4   Trf   r
   rg   ry   from_arraysrx   _numpy_column_namesrm   )rn   r_   r`   rs   r4   arraysro   s          r\   
from_numpyzArrowDataFrame.from_numpy   s     	+*****2246222fw/00 	YX))&9P9P9R9R)SSFFX))&#2I2I$PV2W2WXXFvw777r^   r*   c                <    ddl m}  || j        | j                  S )Nr   r)   rL   rN   )narwhals._arrow.namespacer*   rY   rZ   )r[   r*   s     r\   __narwhals_namespace__z%ArrowDataFrame.__narwhals_namespace__   s7    <<<<<<~ 14=
 
 
 	
r^   r"   c                    | j         t          j        u r| j                                         S dt	          | j                    }t          |          )NzExpected pyarrow, got: )rX   r   rW   to_native_namespaceri   AssertionError)r[   rp   s     r\   __native_namespace__z#ArrowDataFrame.__native_namespace__   sN    >#999';;===DT-A(B(BDDS!!!r^   c                    | S rT   r   r[   s    r\   __narwhals_dataframe__z%ArrowDataFrame.__narwhals_dataframe__       r^   c                    | S rT   r   r   s    r\   __narwhals_lazyframe__z%ArrowDataFrame.__narwhals_lazyframe__   r   r^   c                H    |                      | j        | j        |d          S )NFr   )	__class__ro   rY   )r[   rN   s     r\   _with_versionzArrowDataFrame._with_version   s.    ~~K 1"'	  
 
 	
r^   TrO   dfc               H    |                      || j        | j        |          S )Nr   )r   rY   rZ   )r[   r   rO   s      r\   _with_nativezArrowDataFrame._with_native   s.    ~~ 1M"7	  
 
 	
r^   tuple[int, int]c                    | j         j        S rT   )ro   shaper   s    r\   r   zArrowDataFrame.shape   s    {  r^   intc                *    t          | j                  S rT   )lenro   r   s    r\   __len__zArrowDataFrame.__len__   s    4;r^   indextuple[Any, ...]c                h    t          fd| j                                        D                       S )Nc              3  (   K   | ]}|         V  d S rT   r   )r   colr   s     r\   	<genexpr>z%ArrowDataFrame.row.<locals>.<genexpr>   s'      EECSZEEEEEEr^   )tuplero   itercolumns)r[   r   s    `r\   rowzArrowDataFrame.row   s4    EEEE4;+B+B+D+DEEEEEEr^   namedLiteral[True]list[dict[str, Any]]c                   d S rT   r   r[   r   s     r\   rowszArrowDataFrame.rows   s    EHSr^   Literal[False]list[tuple[Any, ...]]c                   d S rT   r   r   s     r\   r   zArrowDataFrame.rows   s    GJsr^   ,list[tuple[Any, ...]] | list[dict[str, Any]]c                   d S rT   r   r   s     r\   r   zArrowDataFrame.rows   s    TWTWr^   c                   |s$t          |                     dd                    S | j                                        S )NFi   )r   buffer_size)list	iter_rowsro   	to_pylistr   s     r\   r   zArrowDataFrame.rows   s=     	FUDDEEE{$$&&&r^   Iterator[ArrowSeries]c              #     K   t          | j        | j                                                  D ]\  }}t	          j        || |          V  d S )Nr`   name)zipcolumnsro   r   r   rm   )r[   r   seriess      r\   iter_columnszArrowDataFrame.iter_columns   sb      dk.E.E.G.GHH 	K 	KLD&)&$TJJJJJJJ	K 	Kr^   r   4Iterator[tuple[Any, ...]] | Iterator[dict[str, Any]]c             #  H  K   | j         }|j        }|sVt          d||          D ]B}||||z                                                                            }t          | E d {V  Cd S t          d||          D ]'}||||z                                            E d {V  (d S Nr   )ro   num_rowsrange	to_pydictvaluesr   r   )r[   r   r   r   r   ir   s          r\   r   zArrowDataFrame.iter_rows   s       [; 	?1h44 & &!a+o-.88::AACC:%%%%%%%%& & 1h44 ? ?a!k/12<<>>>>>>>>>>? ?r^   r   strr   c                    t          |t                    s!dt          |           }t          |          t	          j        | j        |         | |          S )NzExpected str, got: r   )rf   r   ri   rl   r   rm   ro   )r[   r   rp   s      r\   
get_columnzArrowDataFrame.get_column   sR    $$$ 	!4T

44CC.. &t{4'8$TRRRRr^   dtyper   copybool | Nonec               :    | j                             ||          S )Nr   )ro   	__array__)r[   r   r   s      r\   r   zArrowDataFrame.__array__   s    {$$U$666r^   r   (SizedMultiIndexSelector[ChunkedArrayAny]c                <   t          |          dk    r.|                     | j                            dd                    S | j        dk     r$t          |t                    rt          |          }|                     | j                            |                    S )Nr   )   )	r   r   ro   slicerY   rf   r   r   take)r[   r   s     r\   _gatherzArrowDataFrame._gather   s    t99>>$$T[%6%6q!%<%<=== 5((Ze-D-D(::D  !1!1$!7!7888r^   _SliceIndex | rangec                t   |j         pd}|j        |j        nt          | j                  }|dk     rt          | j                  |z   }|dk     rt          | j                  |z   }|j        |j        dk    rd}t          |          |                     | j                            |||z
                      S )Nr      z4Slicing with step is not supported on PyArrow tables)startstopr   ro   stepNotImplementedErrorr   r   )r[   r   r   r   rp   s        r\   _gather_slicezArrowDataFrame._gather_slice  s    
a I1tyys4;7G7G199$$u,E!88t{##d*D9 TY!^^HC%c***  !2!25$,!G!GHHHr^   r   r=   c                    t          || j                  \  }}}|                     | j                            | j        |||                             S rT   )r   r   r   ro   select)r[   r   r   r   r   s        r\   _select_slice_namez!ArrowDataFrame._select_slice_name  sK    :7DLQQtT  !3!3DLtD4Q!R!RSSSr^   c                    |                      | j                            | j        |j        |j        |j                                     S rT   )r   ro   r   r   r   r   r   )r[   r   s     r\   _select_slice_indexz"ArrowDataFrame._select_slice_index  sA      Kt|GMGL7<,WXYY
 
 	
r^   c                "   t          |t          j                  r#t          d|                                          }n&t          |          r|                                }n|}|                     | j        	                    |                    S )NzSequence[int])
rf   rg   ChunkedArrayr   r   r   tolistr   ro   r   r[   r   selectors      r\   _select_multi_indexz"ArrowDataFrame._select_multi_index  s     gr// 	OW->->-@-@AAHH w'' 	~~''HHH  !3!3H!=!=>>>r^   'SizedMultiNameSelector[ChunkedArrayAny]c                    t          |t          j                  r#t          d|                                          }n|}|                     | j                            |                    S )NSequence[str])rf   rg   r   r   r   r   ro   r   r   s      r\   _select_multi_namez!ArrowDataFrame._select_multi_name(  s^     gr// 	OW->->-@-@AAHHH  !3!3H!=!=>>>r^   dict[str, DType]c                h      j         j        } fdt          |j        |j                  D             S )Nc                B    i | ]\  }}|t          |j                  S r   )r   rZ   )r   r   r   r[   s      r\   
<dictcomp>z)ArrowDataFrame.schema.<locals>.<dictcomp>7  s<     
 
 
e *5$-@@
 
 
r^   )ro   rs   r   namestypes)r[   rs   s   ` r\   rs   zArrowDataFrame.schema4  sF    #
 
 
 
"6<>>
 
 
 	
r^   c                    | j         S rT   rv   r   s    r\   collect_schemazArrowDataFrame.collect_schema<  
    {r^   unitr8   int | floatc                :    | j         j        }t          ||          S rT   )ro   nbytesr   )r[   r  szs      r\   estimated_sizezArrowDataFrame.estimated_size?  s    [2t$$$r^   	list[str]c                    | j         j        S rT   )ro   rU   r   s    r\   r   zArrowDataFrame.columnsE  s    {''r^   rU   c                z    |                      | j                            t          |                    d          S NFr   )r   ro   r   r   )r[   rU   s     r\   simple_selectzArrowDataFrame.simple_selectI  s<      KtL1122% ! 
 
 	
r^   r[   exprsr&   c                0    | j         | }|s4|                     | j        j                            g           d          S d |D             }t          | }t          j                            d |D             |          }|                     |d          S )NFr   c                    g | ]	}|j         
S r   r   r   ss     r\   r   z)ArrowDataFrame.select.<locals>.<listcomp>U  s    ,,,A,,,r^   c                    g | ]	}|j         
S r   ro   r  s     r\   r   z)ArrowDataFrame.select.<locals>.<listcomp>W  s    ">">">18">">">r^   r   T)_evaluate_into_exprsr   ro   r   r   r   rg   ry   )r[   r  
new_seriesr   reshapedr   s         r\   r   zArrowDataFrame.selectN  s    .T.6
 	$$%11"55U %    -,,,,.
;X!!">">X">">">e!LL  4 @@@r^   otherr+   c                    t          |           }|j        s4t          |          x}|k    rd| d| d}t          |          |j        S |j        d         }t	          j        t	          j        ||          g          S )NzExpected object of length z, got: rc   r   )r   
_broadcastr   ro   rg   chunked_arrayrepeat)r[   r  length	len_otherrp   values         r\   _extract_comparandz!ArrowDataFrame._extract_comparandZ  s    T 	  ZZ'	F22N6NN)NNN oo%<Q5&!9!9 :;;;r^   c                .   | j         } | j        | }| j        }|D ]d}|j        }|                     |          }||v r+|                    |                    |          ||          n|                    ||          }e|                     |d          S )N)columnFr   )	ro   r  r   r   r#  
set_columnr   append_columnr   )r[   r  native_framenew_columnsr   	col_valuecol_namer%  s           r\   with_columnszArrowDataFrame.with_columnse  s     {/d/7,$ 	 	I ~H,,Y77F w&& ''h(?(?RX'YYY!///HH L   U KKKr^   keys#Sequence[str] | Sequence[ArrowExpr]drop_null_keysr(   c               *    ddl m}  || ||          S )Nr   r'   )r/  )narwhals._arrow.group_byr(   )r[   r-  r/  r(   s       r\   group_byzArrowDataFrame.group_byw  s-     	:99999|D$~FFFFr^   howr5   left_onSequence[str] | Noneright_onsuffixc          
        dddddd}|dk    r,|                                  }t          dg | j        |j        	          }|                     |                     |                    d
d                               |                              t          j	                            j
                            |                    |                    d
d                               |                              t          j	                            j
        ||d|                              |g                    S |dk    }	|                     | j
                            |j
        |pg |||         ||	                    S )Nr?   r>   r@   rA   rB   )antisemir@   leftfullcross   n_bytesr   r   )r-  
right_keys	join_typeright_suffixr<  )r-  rA  rB  rC  coalesce_keys)r   r   r   r   r,  litalias	broadcastr   LITERALro   joindrop)
r[   r  r3  r4  r6  r7  how_to_join_mapplx	key_tokenrD  s
             r\   rI  zArrowDataFrame.join~  s       0
 0
 '>>--//C6#BT\#BEM#B  I $$!!GGAt$$**955??@PQQ  &&4((..y99CCHDTUU "(%!'    yk""    v  K]#)#.#+   	
 	
 		
r^   r   strictc                   t          | ||          }|                     | j                            |          d          S )N)rN  Fr   )r   r   ro   rJ  )r[   r   rN  to_drops       r\   rJ  zArrowDataFrame.drop  s@    'gfEEE  !1!1'!:!:RW XXXr^   subsetc                   |.|                      | j                                        d          S |                                 }|                     |                     |j        |                                                      S r  )r   ro   	drop_nullr   filterany_horizontalr   is_null)r[   rQ  rL  s      r\   
drop_nullszArrowDataFrame.drop_nulls  sx    >$$T[%:%:%<%<TY$ZZZ))++{{C..wsw/?/G/G/I/IJJJKKKr^   by
descendingbool | Sequence[bool]
nulls_lastc                   t          |t                    r|rdndfd|D             }nd t          ||          D             }|rdnd}|                     | j                            ||          d	          S )
NrY  	ascendingc                    g | ]}|fS r   r   )r   keyorders     r\   r   z'ArrowDataFrame.sort.<locals>.<listcomp>  s    /K/K/Ke/K/K/Kr^   c                $    g | ]\  }}||rd ndfS )rY  r]  r   )r   r_  is_descendings      r\   r   z'ArrowDataFrame.sort.<locals>.<listcomp>  s:       &C mDllE  r^   at_endat_start)null_placementFr   )rf   rP   r   r   ro   sort_by)r[   rY  r[  rX  sortingre  r`  s         @r\   sortzArrowDataFrame.sort  s    j$'' 	+5F<<;E/K/K/K/K/K/K/KGG *-b**=*=  G
 &0?Z  KGG"' ! 
 
 	
r^   pd.DataFramec                4    | j                                         S rT   )ro   	to_pandasr   s    r\   rk  zArrowDataFrame.to_pandas  s    {$$&&&r^   pl.DataFramec                4    dd l } |j        | j                  S r   )polarsrq   ro   )r[   pls     r\   	to_polarszArrowDataFrame.to_polars  s"    r}T[)))r^   Nr   c               `    dd l }|                    d | j        j        D                       }|S )Nr   c                6    g | ]}|                                 S r   )to_numpy)r   r   s     r\   r   z+ArrowDataFrame.to_numpy.<locals>.<listcomp>  s     #R#R#RsCLLNN#R#R#Rr^   )numpycolumn_stackro   r   )r[   r   r   nparrs        r\   rs  zArrowDataFrame.to_numpy  s8    ??#R#Rdk>Q#R#R#RSS
r^   	as_seriesdict[str, ArrowSeries]c                   d S rT   r   r[   rx  s     r\   to_dictzArrowDataFrame.to_dict  s    NQcr^   dict[str, list[Any]]c                   d S rT   r   r{  s     r\   r|  zArrowDataFrame.to_dict  s    MPSr^   -dict[str, ArrowSeries] | dict[str, list[Any]]c               ^    |                                  }|rd |D             S d |D             S )Nc                    i | ]
}|j         |S r   r  r   sers     r\   r   z*ArrowDataFrame.to_dict.<locals>.<dictcomp>  s    000cCHc000r^   c                B    i | ]}|j         |                                S r   )r   to_listr  s     r\   r   z*ArrowDataFrame.to_dict.<locals>.<dictcomp>  s$    666C#++--666r^   )r   )r[   rx  its      r\   r|  zArrowDataFrame.to_dict  sE        	100R00006626666r^   c                    | j         }| j        }t          j        t	          |j                            }|                     |                    ||                              |g|                    S rT   )	ro   r   rg   r   r   r   r   r'  r   )r[   r   r   colsrow_indicess        r\   with_row_indexzArrowDataFrame.with_row_index  sh    [|huR[1122  T;//66}t}EE
 
 	
r^   	predicateArrowExpr | list[bool | None]c                    t          |t                    r|}n |                     |          d         j        }|                     | j                            |          d          S Nr   Fr   )rf   r   r  ro   r   rT  )r[   r  mask_natives      r\   rT  zArrowDataFrame.filter  sm     i&& 	I2;KK 33I>>qAHK  K{++5 ! 
 
 	
r^   nc           
         | j         }|dk    r+|                     |                    d|          d          S |j        }|                     |                    dt	          d||z                       d          S r  )ro   r   r   r   maxr[   r  r   r   s       r\   headzArrowDataFrame.head  s|    [66$$RXXa^^5$QQQ{H$$C8a<0011 %   r^   c           	        | j         }|dk    rB|j        }|                     |                    t	          d||z
                      d          S |                     |                    t          |                    d          S r  )ro   r   r   r   r  absr  s       r\   tailzArrowDataFrame.tail	  s    [66{H$$Q1--..e %    $$RXXc!ff%5%5U$SSSr^   )backendr  Implementation | Noner/   c               b   || S |t           j        u rDdd l}ddlm} | j        } ||                    d          t          |          | j                  S |t           j	        u r]dd l
}ddlm}  |t          d |j        | j                                                            t          |          | j                  S |t           j        u rZdd l}dd lm} ddlm}	  |	|                    | j                                                  t          |          | j                  S t0          )Nr   )DuckDBLazyFramer   r   )PolarsLazyFramerl  )DaskLazyFrame)r   DUCKDBduckdbnarwhals._duckdb.dataframer  ro   rh   r   rZ   POLARSrn  narwhals._polars.dataframer  r   rq   lazyDASKdaskdask.dataframe	dataframenarwhals._dask.dataframer  from_pandasrk  r   )
r[   r  r  r  r   ro  r  r  ddr  s
             r\   r  zArrowDataFrame.lazy  s}   ?K---MMMBBBBBBB"?T"" -f 5 5   
 ---BBBBBB"?^]R]4;%?%?@@EEGG -b 1 1   
 +++KKK''''''>>>>>> =t{446677 -d 3 3   
 r^   kwargsr.   c                   |t           j        u s|$ddlm}  || j        | j        | j        d          S |t           j        u rMdd l}ddl	m
}  || j                                        t           j        t          |          | j        d          S |t           j        u rKdd l}ddlm}  |t#          d |j        | j                            t          |          | j        	          S d
| }t'          |          )Nr   )rI   Fr   )PandasLikeDataFrame)implementationrL   rN   rO   )PolarsDataFramerl  r   zUnsupported `backend` value: )r   rW   narwhals._arrow.dataframerI   ro   rY   rZ   PANDASpandasnarwhals._pandas_like.dataframer  rk  r   r  rn  r  r  r   rq   r   )	r[   r  r  rI   pdr  ro  r  rp   s	            r\   collectzArrowDataFrame.collect8  sU    n,,,@@@@@@!> $ 5&+	    n+++KKKKKK&&%%''-4 -b 1 1&+    n+++BBBBBB"?^]R]4;%?%?@@ -b 1 1    8g77S!!!r^   c                :    |                      | j        d          S r  r   ro   r   s    r\   clonezArrowDataFrame.clone`  s      E JJJr^   r   
int | Noner%  int | str | Nonec                b   ddl m} |D|B| j        dk    rd| j        }t          |           || j        d         d         d          S ||d}t          |          t          |t                    r| j                            |          n|} || j        |         |         d          S )Nr   )maybe_extract_py_scalar)r   r   zycan 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.seriesr  r   
ValueErrorro   rf   r   r   r   )r[   r   r%  r  rp   _cols         r\   itemzArrowDataFrame.itemc  s    BBBBBB;6>zV##7(,
7 7 
 !oo%**4;q>!+<tTTTT[FNLCS//!-7-D-DPt|!!&)))&&&t{4'8'=PTUUUUr^   mappingMapping[str, str]c                    | j         dk    rt          d          }nfd| j        D             }|                     | j                            |                    S )N)   zdict[str, str]c                <    g | ]}                     ||          S r   )get)r   cr  s     r\   r   z)ArrowDataFrame.rename.<locals>.<listcomp>|  s'    ===1W[[A&&===r^   )rY   r   r   r   ro   rename_columns)r[   r  r   s    ` r\   renamezArrowDataFrame.renamew  sb     E)))733EE=======E  !;!;E!B!BCCCr^   filestr | Path | BytesIOc                H    dd l m} |                    | j        |           d S r   )pyarrow.parquetparquetwrite_tablero   )r[   r  pps      r\   write_parquetzArrowDataFrame.write_parquet  s0    $$$$$$
t{D)))))r^   c                    d S rT   r   r[   r  s     r\   	write_csvzArrowDataFrame.write_csv  s    ,/Cr^   c                    d S rT   r   r  s     r\   r  zArrowDataFrame.write_csv  s    =@Sr^   str | Path | BytesIO | None
str | Nonec                   dd l m} |ft          j                    }|                    | j        |           |                                                                                                S |                    | j        |           d S r   )	pyarrow.csvcsvrg   BufferOutputStreamr  ro   getvalue
to_pybytesdecode)r[   r  pa_csv
csv_buffers       r\   r  zArrowDataFrame.write_csv  s    $$$$$$<.00JT[*555&&((3355<<>>>d+++tr^   c                   t          d| j                  }t          j        t	          t          |                               }| j                            ||                              | j                  	                    |df|dfg          }t          j
        t          j        t          j        ||| d                   t          j        ||| d                                       }t          j        ||           S )Nr>  r?  minr  _min_maxrd   )r   r   rg   r   r   r   ro   r'  r2  	aggregater  pcand_is_inr   rm   )r[   	col_token	row_indexkeep_idxro   s        r\   	is_uniquezArrowDataFrame.is_unique  s    21dlSSS	HU3t99--..	K%%i;;Xdl##YE*Y,>?@@ 	
 !GH	-?-?-?$@AAH	-?-?-?$@AA 
 
 &vt<<<<r^   )maintain_orderkeepr9   r  c          
        dd l }|r|                     |          x}r|t          |p| j                  }|dv rddlm} |j        |         }t          d| j                  }| j        	                    |t          j        |                    t          |                                                             |                              ||fg                              | d|           }	|                     | j                            |	          d          S  | j        |                                 }
|                                 }|                     |j                            |
                    S )	Nr   >   anylastfirstr'   r>  r?  _Fr   )rt  _check_columns_existr   r   r1  r(   _REMAP_UNIQUEr   ro   r'  rg   r   aranger   r2  r  r%  r   r   r  r  r   rT  _expr_from_series)r[   rQ  r  r  rv  errorr(   agg_funcr  keep_idx_nativer  rL  s               r\   uniquezArrowDataFrame.unique  s    	 	 9 9& A AAu 	Kf,--+++======#1$7H6q$,WWWI)))RXbiiD		>R>R5S5STT&!!Y1233911x1122	  $$  11 %    &4%v.88::))++{{3911(;;<<<r^   offsetc                L    |                      | j        |d |         d          S r  r  )r[   r  r  s      r\   gather_everyzArrowDataFrame.gather_every  s(      VYQY!7u UUUr^   c                    | j         S rT   r  r   s    r\   rx   zArrowDataFrame.to_arrow  r  r^   fractionfloat | Nonewith_replacementseedc               D   dd l }t          |           }||t          ||z            }|j                            |          }|                    d|          }|                    |||          }	|                     | j        	                    |	          d          S )Nr   )r  )sizereplaceFr   )
rt  r   r   randomdefault_rngr  choicer   ro   r   )
r[   r  r  r  r  rv  r   rngidxmasks
             r\   samplezArrowDataFrame.sample  s     	t999-Hx'((Ai###..ii8$$zz#A/?z@@  !1!1$!7!7u UUUr^   onvariable_name
value_namec                0   	 t                     |g n||fd j        D             n|} j        dk    rt          t          j        d          nt          j        }g ||	                      |	 fd|D                                 S )Nc                    g | ]}|v|	S r   r   )r   r  index_s     r\   r   z*ArrowDataFrame.unpivot.<locals>.<listcomp>  s    :::Q!6//q///r^   )rb   r   r   rF   )promote_optionsc                   g | ]}t           j                            g fd D             t          dt          j        |gz  t          j                                        j                            |                    S )c              3  L   K   | ]}j                             |          V  d S rT   )ro   r%  )r   idx_colr[   s     r\   r   z4ArrowDataFrame.unpivot.<locals>.<listcomp>.<genexpr>  s3      PPgdk0099PPPPPPr^   r+   r  )rg   ry   r   r   r   stringro   r%  )r   on_colr  n_rowsr   r[   s     r\   r   z*ArrowDataFrame.unpivot.<locals>.<listcomp>  s         H((PPPPPPP  1 "&F):BIKK H H  !K..v66 $ ) 
 
  r^   )r   r   rY   r   rg   concat_tablesr   )
r[   r  r   r  r  on_concatr  r  r   s
   `      @@@r\   unpivotzArrowDataFrame.unpivot  s     T}%>@j::::$,::::b $
22 B$lCCCC! 	
 5&4-44  F       #&   
 
 	
r^   )
rJ   rK   rL   rM   rN   r   rO   rP   rQ   rR   )r_   r0   r`   r1   rQ   r#   )r_   rr   r`   r1   rs   rt   rQ   r#   )r}   r~   rQ   r   )r_   rK   r`   r1   rQ   r#   )r_   r;   r`   r1   rs   r   rQ   r#   )rQ   r*   )rQ   r"   )rQ   r#   )rN   r   rQ   r#   )r   rK   rO   rP   rQ   r#   )rQ   r   )rQ   r   )r   r   rQ   r   )r   r   rQ   r   )r   r   rQ   r   )r   rP   rQ   r   )rQ   r   )r   rP   r   r   rQ   r   )r   r   rQ   r   )r   r   r   r   rQ   r;   )r   r   rQ   r#   )r   r   rQ   r#   )r   r=   rQ   r#   )r   r   rQ   r#   )r   r   rQ   r#   )r   r   rQ   r#   )rQ   r   )r  r8   rQ   r  )rQ   r
  )rU   r   rQ   r#   )r[   rI   r  r&   rQ   rI   )r  r   rQ   r+   )r-  r.  r/  rP   rQ   r(   )r  r#   r3  r5   r4  r5  r6  r5  r7  r   rQ   r#   )r   r   rN  rP   rQ   r#   )r[   rI   rQ  r5  rQ   rI   )rX  r   rY  rZ  r[  rP   rQ   r#   )rQ   ri  )rQ   rl  rT   )rx  r   rQ   ry  )rx  r   rQ   r}  )rx  rP   rQ   r  )r   r   rQ   r#   )r[   rI   r  r  rQ   rI   )r  r   rQ   r#   )r  r  rQ   r/   )r  r  r  r   rQ   r.   )r   r  r%  r  rQ   r   )r  r  rQ   r#   )r  r  rQ   rR   )r  rR   rQ   r   )r  r  rQ   r  )rQ   r   )
r[   rI   rQ  r5  r  r9   r  r   rQ   rI   )r  r   r  r   rQ   r#   )rQ   rK   )
r  r  r  r  r  rP   r  r  rQ   r#   )
r  r5  r   r5  r  r   r  r   rQ   r#   )Hrj   
__module____qualname__r]   classmethodrq   r|   staticmethodre   rm   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   _iter_columnsr   r   r   r   r   r   r   r   r   rs   r  r	  r   exploder   r  r   r#  r,  r2  rI  	join_asofrJ  rW  rh  rk  rp  rs  r|  r  rT  r  r  r  r  r  r  r  r  r  r  r  r   rx   r  r   pivotr   r^   r\   rI   rI   V   sy       N N N N  8 8 8 [8 8 8 8 [8 ) ) ) \) 
 
 
 [
 8 8 8 [8"
 
 
 
" " " "      
 
 
 
 KO 
 
 
 
 
 
 ! ! ! X!       F F F F HHH XHJJJ XJWWW XW' ' ' '
K K K K !M? ? ? ?S S S S7 7 7 79 9 9 9
I 
I 
I 
IT T T T
 
 
 

? ? ? ?
? 
? 
? 
? 
 
 
 X
   % % % % oG( ( ( X(
 
 
 


A 
A 
A 
A	< 	< 	< 	<L L L L$G G G G1
 1
 1
 1
f  !!IY Y Y YL L L L
 
 
 
"' ' ' '* * * *
       QQQ XQPPP XP7 7 7 7
 
 
 


 

 

 

   T T T T 8< # # # # # #J&" &" &" &"PK K K KV V V V(D D D D* * * *
 /// X/@@@ X@   = = = =* '+ =  =  =  =  =  =DV V V V   V V V V$!
 !
 !
 !
J OEEEr^   rI   )r   r&   rK   )\
__future__r   	functoolsr   typingr   r   r   r   r	   r
   r   r   r   pyarrowrg   pyarrow.computecomputer  r  r   narwhals._arrow.utilsr   r   narwhals._compliantr   narwhals._expression_parsingr   narwhals._utilsr   r   r   r   r   r   r   r   r   r   r   narwhals.dependenciesr   narwhals.exceptionsr   ior    pathlibr!   r   r"   r  r  rn  ro  typing_extensionsr#   r$   r%   narwhals._arrow.exprr&   r1  r(   r   r*   narwhals._arrow.typingr+   r,   r-   narwhals._compliant.typingr.   r/   narwhals._translater0   r1   narwhals.dtypesr2   rw   r4   narwhals.typingr5   r6   r7   r8   r9   r:   r;   r<   r=   rC   __annotations__rG   rI   r   r^   r\   <module>r@     s   " " " " " " "      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
           . . . . . . W W W W W W W W . . . . . . 1 1 1 1 1 1                          4 3 3 3 3 3 * * * * * * ,I      9999999999......555555888888         
 XWWWWWWW22222255555555%%%%%%&&&&&&
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 "		H 	 	 	 	 !((G HNHHHHm
 m
 m
 m
 m
^$JK m
 m
 m
 m
 m
r^   