
    hht                    .   U d dl mZ d dlmZmZmZmZ d dl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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& d d
l'm(Z( d dl)m*Z* erd dlm+Z+ d 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@mAZAmBZB d dlCmDZDmEZE d dlFmGZG d dlHmIZI d dlJmKZKmLZL d dlmZmMZM d dlNmOZO d dlPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZ e
d         Z[de\d<    G d d ed!                   Z]dS )"    )annotations)
CollectionIteratorMappingSequence)TYPE_CHECKINGAnyLiteralcastoverloadN)ArrowSeries)concat_tablesnative_to_narwhals_dtyperepeat)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scale_bytessupports_arrow_c_stream
zip_strict)is_numpy_array_1d)
ShapeError)Iterable)BytesIO)Path)
ModuleType)Self	TypeAliasTypeIs)	ArrowExprArrowGroupByArrowNamespace)ChunkedArrayAnyOrder)CompliantDataFrameAnyCompliantLazyFrameAny)SparkSession)IntoArrowTable)_EagerAllowedImpl_LazyAllowedImpl)r   _LimitedContext)DType)

IntoSchemaJoinStrategySizedMultiIndexSelectorSizedMultiNameSelectorSizeUnitUniqueKeepStrategy_1DArray_2DArray_SliceIndex
_SliceName)	left semiz
right semi	left antiz
right antiinner
left outerzright outer
full outerr$   JoinTypec                     e Zd Zej        ZddddZe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dd2Zedd6            Zedd9            Zedd;            Zdd<Zdd>ZeZddAZddEZddJZddMZ ddOZ!ddRZ"ddSZ#ddTZ$ddVZ%eddX            Z&ddYZ'dd]Z( e)            Z*edd_            Z+ddaZ,dddZ-ddgZ.ddhZ/ddmZ0ddtZ1 e)            Z2ddwZ3ddyZ4dd~Z5ddZ6ddZ7ddZ8dddddZ9edd            Z:edd            Z:ddZ:ddZ;ddZ<ddZ=ddZ>	 dddddZ?ddZ@ddZAddZBddZCddZDedd            ZEedd            ZEddZEddZFddddZGd dZHddZIddZJddńZK e)            ZLdS (  ArrowDataFrameF)validate_backend_versionnative_dataframepa.Tableversionr   validate_column_namesboolrG   returnNonec               z    |rt          |j                   |r|                                  || _        || _        d S N)r   column_names_validate_backend_version_native_frame_version)selfrH   rJ   rK   rG   s        P/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_arrow/dataframe.py__init__zArrowDataFrame.__init__Q   sL     ! 	I)*:*GHHH# 	-**,,,-    datar0   contextr3   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 rZ   )_implementation_backend_version
_is_native
isinstancer   patabler   type__name__ModuleNotFoundError	TypeErrorfrom_native)clsrY   rZ   backend_versionnativemsgs         rV   
from_arrowzArrowDataFrame.from_arrow`   s    !1BBDD>>$ 		!FF%%D*)E)E%Xd^^FF$T** 	!oW[\`WaWaWjoooC%c***^d4jjFY^^^CC.. vw777rX   Mapping[str, Any]schemaIntoSchema | Nonec                  ddl m} | ||                                          n|}|r|s|                                }n!t          j                            ||          }|                     ||          S Nr   Schemarp   r^   )narwhals.schemaru   to_arrowempty_tablerc   Tablefrom_pydictri   rj   rY   rZ   rp   ru   	pa_schemarl   s          rV   	from_dictzArrowDataFrame.from_dicto        	+*****171CFF6NN++---	 	BT 	B**,,FFX))$y)AAFvw777rX   Sequence[Mapping[str, Any]]c                  ddl m} | ||                                          n|}|r|s|                                }n!t          j                            ||          }|                     ||          S rs   )rw   ru   rx   ry   rc   rz   from_pylistri   r|   s          rV   
from_dictszArrowDataFrame.from_dicts   r   rX   objpa.Table | AnyTypeIs[pa.Table]c                6    t          | t          j                  S rP   )rb   rc   rz   )r   s    rV   ra   zArrowDataFrame._is_native   s    #rx(((rX   c              (     | ||j         d          S )NTrJ   rK   )rT   )rj   rY   rZ   s      rV   ri   zArrowDataFrame.from_native   s    s4!1NNNNrX   r<   !IntoSchema | Sequence[str] | Nonec              n   ddl m} d |j        D             }t          |t          |f          r=t
          j                            | ||                                                    }n4t
          j                            || 	                    ||                    }| 
                    ||          S )Nr   rt   c                6    g | ]}t          j        |          S  )rc   array).0vals     rV   
<listcomp>z-ArrowDataFrame.from_numpy.<locals>.<listcomp>   s     222C"(3--222rX   rv   r^   )rw   ru   Trb   r   rc   rz   from_arraysrx   _numpy_column_namesri   )rj   rY   rZ   rp   ru   arraysrl   s          rV   
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7rX   r*   c                0    ddl m}  || j                  S )Nr   r)   )rJ   )narwhals._arrow.namespacer*   rT   )rU   r*   s     rV   __narwhals_namespace__z%ArrowDataFrame.__narwhals_namespace__   s)    <<<<<<~dm4444rX   r"   c                    | j         t          j        u r| j                                         S dt	          | j                    }t          |          )NzExpected pyarrow, got: )r_   r   PYARROWto_native_namespacere   AssertionError)rU   rm   s     rV   __native_namespace__z#ArrowDataFrame.__native_namespace__   sN    >#999';;===DT-A(B(BDDS!!!rX   c                    | S rP   r   rU   s    rV   __narwhals_dataframe__z%ArrowDataFrame.__narwhals_dataframe__       rX   c                    | S rP   r   r   s    rV   __narwhals_lazyframe__z%ArrowDataFrame.__narwhals_lazyframe__   r   rX   c                <    |                      | j        |d          S )NFr   )	__class__rl   )rU   rJ   s     rV   _with_versionzArrowDataFrame._with_version   s    ~~dk7RW~XXXrX   TrK   dfc               <    |                      || j        |          S )Nr   )r   rT   )rU   r   rK   s      rV   _with_nativezArrowDataFrame._with_native   s'    ~~=R  
 
 	
rX   tuple[int, int]c                    | j         j        S rP   )rl   shaper   s    rV   r   zArrowDataFrame.shape   s    {  rX   intc                *    t          | j                  S rP   )lenrl   r   s    rV   __len__zArrowDataFrame.__len__   s    4;rX   indextuple[Any, ...]c                h    t          fd| j                                        D                       S )Nc              3  (   K   | ]}|         V  d S rP   r   )r   colr   s     rV   	<genexpr>z%ArrowDataFrame.row.<locals>.<genexpr>   s'      EECSZEEEEEErX   )tuplerl   itercolumns)rU   r   s    `rV   rowzArrowDataFrame.row   s4    EEEE4;+B+B+D+DEEEEEErX   namedLiteral[True]list[dict[str, Any]]c                   d S rP   r   rU   r   s     rV   rowszArrowDataFrame.rows   s    EHSrX   Literal[False]list[tuple[Any, ...]]c                   d S rP   r   r   s     rV   r   zArrowDataFrame.rows   s    GJsrX   ,list[tuple[Any, ...]] | list[dict[str, Any]]c                   d S rP   r   r   s     rV   r   zArrowDataFrame.rows   s    TWTWrX   c                   |s$t          |                     dd                    S | j                                        S )NFi   )r   buffer_size)list	iter_rowsrl   	to_pylistr   s     rV   r   zArrowDataFrame.rows   s=     	FUDDEEE{$$&&&rX   Iterator[ArrowSeries]c              #     K   t          | j        | j                                                  D ]\  }}t	          j        || |          V  d S )NrZ   name)r   columnsrl   r   r   ri   )rU   r   seriess      rV   iter_columnszArrowDataFrame.iter_columns   sb      &t|T[5L5L5N5NOO 	K 	KLD&)&$TJJJJJJJ	K 	KrX   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   )rl   num_rowsrange	to_pydictvaluesr   r   )rU   r   r   r   r   ir   s          rV   r   zArrowDataFrame.iter_rows   s       [; 	?1h44 - -!a+o-.88::AACC%t,,,,,,,,,- - 1h44 ? ?a!k/12<<>>>>>>>>>>? ?rX   r   strr   c                    t          |t                    s!dt          |           }t          |          t	          j        | j        |         | |          S )NzExpected str, got: r   )rb   r   re   rh   r   ri   rl   )rU   r   rm   s      rV   
get_columnzArrowDataFrame.get_column   sR    $$$ 	!4T

44CC.. &t{4'8$TRRRRrX   dtyper	   copybool | Nonec               :    | j                             ||          S )Nr   )rl   	__array__)rU   r   r   s      rV   r   zArrowDataFrame.__array__   s    {$$U$666rX   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   rl   slicer`   rb   r   r   take)rU   r   s     rV   _gatherzArrowDataFrame._gather   s    t99>>$$T[%6%6q!%<%<=== 5((Ze-D-D(::D  !1!1$!7!7888rX   _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   rl   stepNotImplementedErrorr   r   )rU   r   r   r   rm   s        rV   _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HrX   r   r>   c                    t          || j                  \  }}}|                     | j                            | j        |||                             S rP   )r   r   r   rl   select)rU   r   r   r   r   s        rV   _select_slice_namez!ArrowDataFrame._select_slice_name  sK    :7DLQQtT  !3!3DLtD4Q!R!RSSSrX   c                    |                      | j                            | j        |j        |j        |j                                     S rP   )r   rl   r   r   r   r   r   )rU   r   s     rV   _select_slice_indexz"ArrowDataFrame._select_slice_index  sA      Kt|GMGL7<,WXYY
 
 	
rX   c                "   t          |t          j                  r#t          d|                                          }n&t          |          r|                                }n|}|                     | j        	                    |                    S )NzSequence[int])
rb   rc   ChunkedArrayr   r   r   tolistr   rl   r   rU   r   selectors      rV   _select_multi_indexz"ArrowDataFrame._select_multi_index  s     gr// 	OW->->-@-@AAHH w'' 	~~''HHH  !3!3H!=!=>>>rX   'SizedMultiNameSelector[ChunkedArrayAny]c                    t          |t          j                  r#t          d|                                          }n|}|                     | j                            |                    S )NSequence[str])rb   rc   r   r   r   r   rl   r   r   s      rV   _select_multi_namez!ArrowDataFrame._select_multi_name'  s^     gr// 	OW->->-@-@AAHHH  !3!3H!=!=>>>rX   dict[str, DType]c                4      fd j         j        D             S )Nc                P    i | ]"}|j         t          |j        j                  #S r   )r   r   re   rT   )r   fieldrU   s     rV   
<dictcomp>z)ArrowDataFrame.schema.<locals>.<dictcomp>5  s<     
 
 
 J0T]KK
 
 
rX   )rl   rp   r   s   `rV   rp   zArrowDataFrame.schema3  s3    
 
 
 
+
 
 
 	
rX   c                    | j         S rP   rv   r   s    rV   collect_schemazArrowDataFrame.collect_schema:  
    {rX   unitr9   int | floatc                :    | j         j        }t          ||          S rP   )rl   nbytesr   )rU   r	  szs      rV   estimated_sizezArrowDataFrame.estimated_size=  s    [2t$$$rX   	list[str]c                    | j         j        S rP   )rl   rQ   r   s    rV   r   zArrowDataFrame.columnsC  s    {''rX   rQ   c                z    |                      | j                            t          |                    d          S NFr   )r   rl   r   r   )rU   rQ   s     rV   simple_selectzArrowDataFrame.simple_selectG  s<      KtL1122% ! 
 
 	
rX   exprsr&   c                B    | j         | }|s4|                     | j        j                            g           d          S d |D             }|d         j        } || }t          j                            d |D             |          }|                     |d          S )NFr   c                    g | ]	}|j         
S r   r   r   ss     rV   r   z)ArrowDataFrame.select.<locals>.<listcomp>S  s    ,,,A,,,rX   r   c                    g | ]	}|j         
S r   rl   r  s     rV   r   z)ArrowDataFrame.select.<locals>.<listcomp>V  s    ">">">18">">">rX   )namesT)_evaluate_into_exprsr   rl   r   r   _align_full_broadcastrc   rz   )rU   r  
new_seriesr  alignreshapedr   s          rV   r   zArrowDataFrame.selectL  s    .T.6
 	$$%11"55U %    -,,,,135*%X!!">">X">">">e!LL  4 @@@rX   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: r]   r   )r   
_broadcastr   rl   rc   chunked_arrayr   )rU   r"  length	len_otherrm   values         rV   _extract_comparandz!ArrowDataFrame._extract_comparandY  s    T 	  ZZ'	F22N6NN)NNN oo%<Q5&!9!9 :;;;rX   c                .   | j         } | j        | }| j        }|D ]d}|j        }|                     |          }||v r+|                    |                    |          ||          n|                    ||          }e|                     |d          S )N)columnFr   )	rl   r  r   r   r)  
set_columnr   append_columnr   )rU   r  native_framenew_columnsr   	col_valuecol_namer+  s           rV   with_columnszArrowDataFrame.with_columnsd  s     {/d/7,$ 	 	I ~H,,Y77F w&& ''h(?(?RX'YYY!///HH L   U KKKrX   keys#Sequence[str] | Sequence[ArrowExpr]drop_null_keysr(   c               *    ddl m}  || ||          S )Nr   r'   )r5  )narwhals._arrow.group_byr(   )rU   r3  r5  r(   s       rV   group_byzArrowDataFrame.group_byv  s-     	:99999|D$~FFFFrX   howr6   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?   rA   rB   rC   )antisemirA   leftfullcross   n_bytesr   r   )r3  
right_keys	join_typeright_suffixrB  )r3  rG  rH  rI  coalesce_keys)r   r   r   r   r2  litalias	broadcastr   LITERALrl   joindrop)
rU   r"  r9  r:  r<  r=  how_to_join_mapplx	key_tokenrJ  s
             rV   rO  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]#)#.#+   	
 	
 		
rX   r   strictc                   t          | ||          }|                     | j                            |          d          S )NrT  Fr   )r   r   rl   rP  )rU   r   rT  to_drops       rV   rP  zArrowDataFrame.drop  s@    'gfEEE  !1!1'!:!:RW XXXrX   subsetc                   |.|                      | j                                        d          S |                                 }|                     |j        |                                 d           }|                     |          S )NFr   T)ignore_nulls)r   rl   	drop_nullr   any_horizontalr   is_nullfilter)rU   rX  rR  masks       rV   
drop_nullszArrowDataFrame.drop_nulls  s    >$$T[%:%:%<%<TY$ZZZ))++""737F#3#;#;#=#=D"QQQ{{4   rX   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 )
Nrb  	ascendingc                    g | ]}|fS r   r   r   keyorders     rV   r   z'ArrowDataFrame.sort.<locals>.<listcomp>      /K/K/Ke/K/K/KrX   c                $    g | ]\  }}||rd ndfS )rb  rf  r   )r   ri  is_descendings      rV   r   z'ArrowDataFrame.sort.<locals>.<listcomp>  s:       &C mDllE  rX   at_endat_start)null_placementFr   )rb   rL   r   r   rl   sort_by)rU   rb  rd  ra  sortingrp  rj  s         @rV   sortzArrowDataFrame.sort  s    j$'' 	+5F<<;E/K/K/K/K/K/K/KGG *4R*D*D  G
 &0?Z  KGG"' ! 
 
 	
rX   kIterable[str]reversec          	        t          |t                    r|rdndfd|D             }nd t          ||          D             }|                     | j                            t          j        | j        ||                    d          S )Nrf  rb  c                    g | ]}|fS r   r   rh  s     rV   r   z(ArrowDataFrame.top_k.<locals>.<listcomp>  rk  rX   c                $    g | ]\  }}||rd ndfS )rf  rb  r   )r   ri  is_ascendings      rV   r   z(ArrowDataFrame.top_k.<locals>.<listcomp>  s:       %C \Ckk|D  rX   Fr   )rb   rL   r   r   rl   r   pcselect_k_unstable)rU   rt  ra  rv  rr  rj  s        @rV   top_kzArrowDataFrame.top_k  s    gt$$ 	*1C;;|E/K/K/K/K/K/K/KGG )3B)@)@  G   KR1$+q'JJKK"' ! 
 
 	
rX   pd.DataFramec                4    | j                                         S rP   )rl   	to_pandasr   s    rV   r  zArrowDataFrame.to_pandas  s    {$$&&&rX   pl.DataFramec                4    dd l } |j        | j                  S r   )polarsrn   rl   )rU   pls     rV   	to_polarszArrowDataFrame.to_polars  s"    r}T[)))rX   Nr   c               `    dd l }|                    d | j        j        D                       }|S )Nr   c                6    g | ]}|                                 S r   )to_numpy)r   r   s     rV   r   z+ArrowDataFrame.to_numpy.<locals>.<listcomp>  s     #R#R#RsCLLNN#R#R#RrX   )numpycolumn_stackrl   r   )rU   r   r   nparrs        rV   r  zArrowDataFrame.to_numpy  s8    ??#R#Rdk>Q#R#R#RSS
rX   	as_seriesdict[str, ArrowSeries]c                   d S rP   r   rU   r  s     rV   to_dictzArrowDataFrame.to_dict  s    NQcrX   dict[str, list[Any]]c                   d S rP   r   r  s     rV   r  zArrowDataFrame.to_dict  s    MPSrX   -dict[str, ArrowSeries] | dict[str, list[Any]]c               ^    |                                  }|rd |D             S d |D             S )Nc                    i | ]
}|j         |S r   r  r   sers     rV   r  z*ArrowDataFrame.to_dict.<locals>.<dictcomp>  s    000cCHc000rX   c                B    i | ]}|j         |                                S r   )r   to_listr  s     rV   r  z*ArrowDataFrame.to_dict.<locals>.<dictcomp>  s$    666C#++--666rX   )r   )rU   r  its      rV   r  zArrowDataFrame.to_dict  sE        	100R00006626666rX   order_byc                "   |                                  }|udd l}t          j        |                    t          |           |j                            }|j                            |j	        
                    || |                    }n]|                    |d                                       dd          }|                    g |          dz
                      |          }|                     ||                                          S )	Nr   )r   r   ordinalF)rb  )partition_byr  r   )r   r  rc   r   aranger   int64_expr_from_series_seriesfrom_iterabler   rankoverrL  r   all)rU   r   r  rR  r  rY   	row_indexr  s           rV   with_row_indexzArrowDataFrame.with_row_index  s    ))++8BIIc$iirxI@@AAD	..))$4)HH II 778A;'',,Y5,IIDXFFJQQRVWWI{{9cggii000rX   	predicatec                    |                      |          d         j        }|                     | j                            |          d          S Nr   Fr   )r  rl   r   r^  )rU   r  mask_natives      rV   r^  zArrowDataFrame.filter  sO    //	::1=D  K{++5 ! 
 
 	
rX   nc           
         | j         }|dk    r+|                     |                    d|          d          S |j        }|                     |                    dt	          d||z                       d          S r  )rl   r   r   r   maxrU   r  r   r   s       rV   headzArrowDataFrame.head  s|    [66$$RXXa^^5$QQQ;  HHQAx!|,,--U ! 
 
 	
rX   c           	        | j         }|dk    rB|j        }|                     |                    t	          d||z
                      d          S |                     |                    t          |                    d          S r  )rl   r   r   r   r  absr  s       rV   tailzArrowDataFrame.tail  s    [66{H$$Q1--..e %      #a&&!1!1 OOOrX   )sessionbackend_LazyAllowedImpl | Noner  SparkSession | Noner.   c               6   || S |t           j        u r7dd l}ddlm} | j        } ||                    d          d| j                  S |t           j        u rPdd l	}ddl
m}  |t          d |j        | j                                                            d| j                  S |t           j        u rIdd lm} ddlm}	  |	|                    | j                                                  d| j                  S |t           j        u r<dd l}
dd	lm}  ||
                    | j        | j        
          d| j                  S |                                r7ddlm} |d}t?          |          |                     | ||| j                  S tB          )Nr   )DuckDBLazyFrame_dfTrG   rJ   )PolarsLazyFramer  )DaskLazyFrame)IbisLazyFrame)r   )SparkLikeLazyFramez5Spark like backends require `session` to be not None.)r  implementationrJ   )"r   DUCKDBduckdbnarwhals._duckdb.dataframer  rl   rd   rT   POLARSr  narwhals._polars.dataframer  r   rn   lazyDASKdask.dataframe	dataframenarwhals._dask.dataframer  from_pandasr  IBISibisnarwhals._ibis.dataframer  memtabler   is_spark_likenarwhals._spark_like.dataframer  
ValueError_from_compliant_dataframer   )rU   r  r  r  r  r  r  r  ddr  r  r  r  rm   s                 rV   r  zArrowDataFrame.lazy  s&    ?Kn+++MMMBBBBBB+C"?U##dDM    n+++BBBBBB"?^]R]4;%?%?@@EEGG)-   
 n)))''''''>>>>>> =t{446677)-   
 n)))KKK>>>>>> =dk4<@@)-      "" 		IIIIIIM oo%%??ggt} @    rX   _EagerAllowedImpl | Nonekwargsr-   c                   |t           j        u s|ddlm}  || j        | j        d          S |t           j        u r<ddlm}  || j        	                                t           j        d| j        d          S |t           j
        u r>dd l}ddlm}  |t          d	 |j        | j                            d| j        
          S d| }t!          |          )Nr   )rF   Fr   )PandasLikeDataFrameT)r  rG   rJ   rK   )PolarsDataFramer  r  zUnsupported `backend` value: )r   r   narwhals._arrow.dataframerF   rl   rT   PANDASnarwhals._pandas_like.dataframer  r  r  r  r  r  r   rn   r   )rU   r  r  rF   r  r  r  rm   s           rV   collectzArrowDataFrame.collect\  s1    n,,,@@@@@@!>T]%    n+++KKKKKK&&%%''-4)-&+    n+++BBBBBB"?^]R]4;%?%?@@)-    8g77S!!!rX   c                :    |                      | j        d          S r  r   rl   r   s    rV   clonezArrowDataFrame.clone  s      E JJJrX   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   r  rl   rb   r   r   r   )rU   r   r+  r  rm   _cols         rV   itemzArrowDataFrame.item  s    BBBBBB;6>zV##7(,
7 7 
 !oo%**4;q>!+<tTTTT;&.LCS//!-7-D-DPt|!!&)))&&&t{4'8'=PTUUUUrX   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     rV   r   z)ArrowDataFrame.rename.<locals>.<listcomp>  s'    ===1W[[A&&===rX   )r`   r   r   r   rl   rename_columns)rU   r  r  s    ` rV   renamezArrowDataFrame.rename  sb     E)))733EE=======E  !;!;E!B!BCCCrX   filestr | Path | BytesIOc                H    dd l m} |                    | j        |           d S r   )pyarrow.parquetparquetwrite_tablerl   )rU   r  pps      rV   write_parquetzArrowDataFrame.write_parquet  s0    $$$$$$
t{D)))))rX   c                    d S rP   r   rU   r  s     rV   	write_csvzArrowDataFrame.write_csv  s    ,/CrX   c                    d S rP   r   r  s     rV   r  zArrowDataFrame.write_csv  s    =@SrX   str | Path | BytesIO | None
str | Nonec                   dd l m} |ft          j                    }|                    | j        |           |                                                                                                S |                    | j        |           d S r   )	pyarrow.csvcsvrc   BufferOutputStreamr  rl   getvalue
to_pybytesdecode)rU   r  pa_csv
csv_buffers       rV   r  zArrowDataFrame.write_csv  s    $$$$$$<.00JT[*555&&((3355<<>>>d+++trX   c                    dd l }t          d| j                  }t          j        |                    t          |                               }| j                            ||          	                    | j                  
                    |df|dfg          }t          j        t          j        t          j        ||| d                   t          j        ||| d                                       }t          j        ||           S )	Nr   rD  rE  minr  _min_maxr^   )r  r   r   rc   r   r  r   rl   r-  r8  	aggregater%  r{  and_is_inr   ri   )rU   r  	col_tokenr  keep_idxrl   s         rV   	is_uniquezArrowDataFrame.is_unique  s    21dlSSS	HRYYs4yy1122	K%%i;;Xdl##YE*Y,>?@@ 	
 !GH	-?-?-?$@AAH	-?-?-?$@AA 
 
 &vt<<<<rX   )maintain_orderkeepr:   r  c          
     .   dd l }|r|                     |          x}r|t          |p| j                  }|dv rddlm} |j        |         }t          d| j                  }	|r|rt          dg | j        |	          }
 |                     |
d           j	        |ddd
                    ||dd 	          }|	                    |
dd
                              |
gd          S |r | j	        |dddj        }n| j        }|                    |	t          j        |                    t#          |                                                             |                              |	|fg                              |	 d|           }|                     |                    |          d          S  | j        |                                 }|                                 }|                     |j                            |                    S )Nr   >   anylastfirstr'   rD  rE  )r  F)rd  rb  )rX  r  r  r  )rb  rd  rV  _r   )r  _check_columns_existr   r   r7  r(   _REMAP_UNIQUEr   r  rs  uniquerP  rl   r-  rc   r   r  r   r8  r  r+  r   r   r  r  r   r^  r  r  )rU   rX  r  r  r  r  errorr(   agg_funcr  	idx_tokenr   rl   keep_idx_nativer  rR  s                   rV   r  zArrowDataFrame.unique  sg    	 	 9 9& A AAu 	Kf,--+++======#1$7H6q$,WWWI N :'A'Ay'A  	D''	D'AA8%I I IV6UUYVZZ 
 wwyUuwMMRRK S     %"H5QQQX$$Y3t999M9M0N0NOO&!!Y1233911x1122	  $$O,,E %    &4%v.88::))++{{3911(;;<<<rX   offsetc                L    |                      | j        |d |         d          S r  r  )rU   r  r$  s      rV   gather_everyzArrowDataFrame.gather_every  s(      VYQY!7u UUUrX   c                    | j         S rP   r  r   s    rV   rx   zArrowDataFrame.to_arrow  r  rX   fractionfloat | Nonewith_replacementseedc               B   dd l }t          |           }||t          ||z            }|j                            |          }|                    |          }|                    |||          }	|                     | j        	                    |	          d          S )Nr   )r+  )sizereplaceFr   )
r  r   r   randomdefault_rngr  choicer   rl   r   )
rU   r  r(  r*  r+  r  r   rngidxr_  s
             rV   samplezArrowDataFrame.sample  s     	t999-Hx'((Ai###..ii!!zz#A/?z@@  !1!1$!7!7u UUUrX   onvariable_name
value_namec                P  	 t          |           	g nt                    |fd| j        D             nt          |          }| j                                      | j        j        	fd|D             }|                     t          |d                    S )Nc              3  $   K   | ]
}|v|V  d S rP   r   )r   r  r   s     rV   r   z)ArrowDataFrame.unpivot.<locals>.<genexpr>  s'      99Q!5..q....99rX   c              3     K   | ]E}                     t          |                                          |                    V  Fd S rP   )r-  r   )r   r   r+  
index_colsr  r7  r6  s     rV   r   z)ArrowDataFrame.unpivot.<locals>.<genexpr>  sn       
 
  $$]F4OODDRRFF4LL 
 
 
 
 
 
rX   
permissive)	r   r   r   iterrl   r   r+  r   r   )
rU   r5  r   r6  r7  on_tablesr+  r;  r  s
     ```  @@@rV   unpivotzArrowDataFrame.unpivot  s     IIme=?Z9999$,9999TRTXX[''..
#
 
 
 
 
 
 
 
 	
 
 
   v|!D!DEEErX   )
rH   rI   rJ   r   rK   rL   rG   rL   rM   rN   )rY   r0   rZ   r3   rM   r#   )rY   ro   rZ   r3   rp   rq   rM   r#   )rY   r   rZ   r3   rp   rq   rM   r#   )r   r   rM   r   )rY   rI   rZ   r3   rM   r#   )rY   r<   rZ   r3   rp   r   rM   r#   )rM   r*   )rM   r"   )rM   r#   )rJ   r   rM   r#   )r   rI   rK   rL   rM   r#   )rM   r   )rM   r   )r   r   rM   r   )r   r   rM   r   )r   r   rM   r   )r   rL   rM   r   )rM   r   )r   rL   r   r   rM   r   )r   r   rM   r   )r   r	   r   r   rM   r<   )r   r   rM   r#   )r   r   rM   r#   )r   r>   rM   r#   )r   r   rM   r#   )r   r   rM   r#   )r   r   rM   r#   )rM   r  )r	  r9   rM   r
  )rM   r  )rQ   r   rM   r#   )r  r&   rM   r#   )r"  r   rM   r+   )r3  r4  r5  rL   rM   r(   )r"  r#   r9  r6   r:  r;  r<  r;  r=  r   rM   r#   )r   r   rT  rL   rM   r#   )rX  r;  rM   r#   )ra  r   rb  rc  rd  rL   rM   r#   )rt  r   ra  ru  rv  rc  rM   r#   )rM   r~  )rM   r  rP   )r  r   rM   r  )r  r   rM   r  )r  rL   rM   r  )r   r   r  r;  rM   r#   )r  r&   rM   r#   )r  r   rM   r#   )r  r  r  r  rM   r.   )r  r  r  r	   rM   r-   )r   r  r+  r  rM   r	   )r  r  rM   r#   )r  r  rM   rN   )r  rN   rM   r   )r  r  rM   r  )rM   r   )
rX  r;  r  r:   r  r   r  r;  rM   r#   )r  r   r$  r   rM   r#   )rM   rI   )
r  r  r(  r)  r*  rL   r+  r  rM   r#   )
r5  r;  r   r;  r6  r   r7  r   rM   r#   )Mrf   
__module____qualname__r   r   r_   rW   classmethodrn   r~   r   staticmethodra   ri   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   _iter_columnsr   r   r   r   r   r   r   r   r   rp   r  r  r   exploder   r  r   r)  r2  r8  rO  	join_asofrP  r`  rs  r}  r  r  r  r  r  r^  r  r  r  r  r  r  r  r  r  r  r  r&  rx   r4  r@  pivotr   rX   rV   rF   rF   L   s        %,O */            8 8 8 [8 8 8 8 [8" 8 8 8 [8" ) ) ) \) O O O [O 8 8 8 [8"5 5 5 5
" " " "      Y Y Y Y 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! ! ! !
 
 
 
"
 
 
 
' ' ' '* * * *
       QQQ XQPPP XP7 7 7 71 1 1 1
 
 
 

 
 
 
P P P P ,0; (,	; ; ; ; ; ;z!" !" !" !"FK K K KV V V V(D D D D* * * *
 /// X/@@@ X@   = = = =. '+1= 1= 1= 1= 1= 1=fV V V V   V V V V$F F F F, OEEErX   rF   )r   r&   rI   r+   )^
__future__r   collections.abcr   r   r   r   typingr   r	   r
   r   r   pyarrowrc   pyarrow.computecomputer{  r  r   narwhals._arrow.utilsr   r   r   narwhals._compliantr   narwhals._expression_parsingr   narwhals._utilsr   r   r   r   r   r   r   r   r   r   narwhals.dependenciesr   narwhals.exceptionsr   r   ior    pathlibr!   typesr"   pandaspdr  r  typing_extensionsr#   r$   r%   narwhals._arrow.exprr&   r7  r(   r   r*   narwhals._arrow.typingr+   r,   narwhals._compliant.typingr-   r.   narwhals._spark_like.utilsr/   narwhals._translater0   narwhals._typingr1   r2   r3   narwhals.dtypesr4   narwhals.typingr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   rD   __annotations__rF   r   rX   rV   <module>re     s   " " " " " " " C C C C C C C C C C C C > > > > > > > > > > > > > >           . . . . . . Q Q Q Q Q Q Q Q Q Q . . . . . . 1 1 1 1 1 1                        4 3 3 3 3 3 * * * * * * -((((((      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777777222222DDDDDDDD88888888%%%%%%                        "		H 	 	 	 	Z Z Z Z ZLMZ Z Z Z ZrX   