o
    $&]i[y                     @  s
  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mZ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 ded  Z]dS )!    )annotations)
CollectionIteratorMappingSequence)TYPE_CHECKINGAnyLiteralcastoverloadN)ArrowSeries)arangeconcat_tablesnarwhals_to_native_dtypenative_to_narwhals_dtyperepeat)EagerDataFrame)
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                   @  s  e Zd ZejZdddddZedddZedddZ	edddZ
edd d!Zed	d"d#Zed
d&d'Zdd)d*Zdd,d-Zdd.d/Zdd0d1Zdd2d3Zd4d5dd7d8Zedd:d;Zdd=d>ZddAdBZeddFdGZeddJdGZeddLdGZddMdGZddOdPZeZddSdTZddXdYZdd^d_ZddbdcZ ddedfZ!ddidjZ"ddkdlZ#ddmdnZ$ddpdqZ%ed dsdtZ&d dudvZ'd!dzd{Z(e) Z*ed"d}d~Z+d#ddZ,d$ddZ-d%ddZ.d$ddZ/d&ddZ0d'ddZ1e) Z2d(ddZ3d)ddZ4d*ddZ5d+ddZ6d,ddZ7d-ddZ8d.dddddZ9ed/ddZ:ed0ddZ:d1ddZ:d2ddZ;d3ddÄZ<d4ddƄZ=d4ddȄZ>	d.ddɜd5ddЄZ?d6ddՄZ@dddׄZAd7dd݄ZBd8ddZCd9ddZDed:ddZEed9ddZEd;ddZEd<ddZFddd=ddZGd>ddZHd?ddZId@ddZJdAddZKe) ZLdS (B  ArrowDataFrameF)validate_backend_versionnative_dataframepa.Tableversionr   validate_column_namesboolrF   returnNonec                C  s*   |rt |j |r|   || _|| _d S N)r   column_names_validate_backend_version_native_frame_version)selfrG   rI   rJ   rF    rT   W/var/www/html/IGF-ODF-V3/venv/lib/python3.10/site-packages/narwhals/_arrow/dataframe.py__init__V   s   

zArrowDataFrame.__init__datar0   contextr3   r#   c               C  s   |j  }| |r|}n-|dkst|trt|}nt|r-dt|j	d}t
|dt|j	d}t|| j||d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 rX   )_implementation_backend_version
_is_native
isinstancer   patabler   type__name__ModuleNotFoundError	TypeErrorfrom_native)clsrW   rX   backend_versionnativemsgrT   rT   rU   
from_arrowe   s   

zArrowDataFrame.from_arrowMapping[str, Any]schema.IntoSchema | Mapping[str, DType | None] | Nonec         	        s   |ss| j ti  dS |s| j t dS tdd | D sLddlm} |td| }|r=s=|	 }ntj
j|d}| j | dS  j dk rYd	}t|t fd
d| D }| j t| dS )Nr\   c                 s      | ]}|d u V  qd S rN   rT   .0dtyperT   rT   rU   	<genexpr>       z+ArrowDataFrame.from_dict.<locals>.<genexpr>r   Schemar5   rn   rY   z8Passing `None` dtype in `from_dict` requires PyArrow>=14c              	     sD   i | ]\}}|t jr| ng g|d urt| jdnd dqS )NrI   )rc   )ra   chunked_arrayr   rR   )rr   namenw_dtyperX   rW   rT   rU   
<dictcomp>   s    z,ArrowDataFrame.from_dict.<locals>.<dictcomp>)rg   ra   rb   anyvaluesnarwhals.schemarw   r
   to_arrowempty_tableTablefrom_pydictr]   r^   NotImplementedErroritems)	rh   rW   rX   rn   rw   	pa_schemarj   rk   resrT   r}   rU   	from_dictt   s(   	
zArrowDataFrame.from_dictSequence[Mapping[str, Any]]c               C  s   ddl m} |rtdd | D rd}t||d ur&|td| n|}|r1|s1| }ntj	j
||d}| j||dS )	Nr   rv   c                 s  rp   rN   rT   rq   rT   rT   rU   rt      ru   z,ArrowDataFrame.from_dicts.<locals>.<genexpr>zR`from_dicts` with `schema` where any dtype is `None` is not supported for PyArrow.r5   rx   r\   )r   rw   r   r   r   r
   r   r   ra   r   from_pylistrg   )rh   rW   rX   rn   rw   rk   r   rj   rT   rT   rU   
from_dicts   s   	
zArrowDataFrame.from_dictsobjpa.Table | AnyTypeIs[pa.Table]c                 C  s   t | tjS rN   )r`   ra   r   )r   rT   rT   rU   r_      s   zArrowDataFrame._is_nativec               C  s   | ||j ddS )NTrI   rJ   )rR   )rh   rW   rX   rT   rT   rU   rg      s   zArrowDataFrame.from_nativer<   !IntoSchema | Sequence[str] | Nonec               C  sh   ddl m} dd |jD }t|t|fr"tjj||| d}ntj|| 	||}| j
||dS )Nr   rv   c                 S  s   g | ]}t |qS rT   )ra   array)rr   valrT   rT   rU   
<listcomp>   s    z-ArrowDataFrame.from_numpy.<locals>.<listcomp>rx   r\   )r   rw   Tr`   r   ra   r   from_arraysr   _numpy_column_namesrg   )rh   rW   rX   rn   rw   arraysrj   rT   rT   rU   
from_numpy   s   	zArrowDataFrame.from_numpyr*   c                 C  s   ddl m} || jdS )Nr   r)   ry   )narwhals._arrow.namespacer*   rR   )rS   r*   rT   rT   rU   __narwhals_namespace__   s   z%ArrowDataFrame.__narwhals_namespace__r"   c                 C  s.   | j tju r| j  S dt| j  }t|)NzExpected pyarrow, got: )r]   r   PYARROWto_native_namespacerc   AssertionError)rS   rk   rT   rT   rU   __native_namespace__   s   
z#ArrowDataFrame.__native_namespace__c                 C     | S rN   rT   rS   rT   rT   rU   __narwhals_dataframe__      z%ArrowDataFrame.__narwhals_dataframe__c                 C  r   rN   rT   r   rT   rT   rU   __narwhals_lazyframe__   r   z%ArrowDataFrame.__narwhals_lazyframe__c                 C  s   | j | j|ddS )NFr   )	__class__rj   )rS   rI   rT   rT   rU   _with_version   s   zArrowDataFrame._with_versionTrJ   dfc                C  s   | j || j|dS )Nr   )r   rR   )rS   r   rJ   rT   rT   rU   _with_native   s   zArrowDataFrame._with_nativetuple[int, int]c                 C     | j jS rN   )rj   shaper   rT   rT   rU   r         zArrowDataFrame.shapeintc                 C  s
   t | jS rN   )lenrj   r   rT   rT   rU   __len__      
zArrowDataFrame.__len__indextuple[Any, ...]c                 C  s   t | j|g d  S Nr   )tuplerj   take	to_pylistr   )rS   r   rT   rT   rU   row   s   zArrowDataFrame.rownamedLiteral[True]list[dict[str, Any]]c                C     d S rN   rT   rS   r   rT   rT   rU   rows   r   zArrowDataFrame.rowsLiteral[False]list[tuple[Any, ...]]c                C  r   rN   rT   r   rT   rT   rU   r      r   ,list[tuple[Any, ...]] | list[dict[str, Any]]c                C  r   rN   rT   r   rT   rT   rU   r      r   c                C  s    |st | jdddS | j S )NFi   )r   buffer_size)list	iter_rowsrj   r   r   rT   rT   rU   r      s   
Iterator[ArrowSeries]c                 c  s4    t | j| j D ]\}}tj|| |dV  q
d S )NrX   r{   )r   columnsrj   itercolumnsr   rg   )rS   r{   seriesrT   rT   rU   iter_columns   s   zArrowDataFrame.iter_columnsr   4Iterator[tuple[Any, ...]] | Iterator[dict[str, Any]]c                c  s~    | j }|j}|s'td||D ]}||||    }t| E d H  qd S td||D ]}||||   E d H  q-d S r   )rj   num_rowsrange	to_pydictr   r   r   )rS   r   r   r   r   ir   rT   rT   rU   r     s   zArrowDataFrame.iter_rowsr{   strr   c                 C  s6   t |tsdt| }t|tj| j| | |dS )NzExpected str, got: r   )r`   r   rc   rf   r   rg   rj   )rS   r{   rk   rT   rT   rU   
get_column  s   
zArrowDataFrame.get_columnrs   r   copybool | Nonec                C  s   | j j||dS )Nr   )rj   	__array__)rS   rs   r   rT   rT   rU   r        zArrowDataFrame.__array__r   (SizedMultiIndexSelector[ChunkedArrayAny]c                 C  sN   t |dkr| | jddS | jdk rt|trt|}| | j|S )Nr   )   )	r   r   rj   slicer^   r`   r   r   r   )rS   r   rT   rT   rU   _gather  s
   zArrowDataFrame._gather_SliceIndex | rangec                 C  s   |j pd}|jd ur|jnt| j}|dk rt| j| }|dk r(t| j| }|jd ur8|jdkr8d}t|| | j||| S )Nr      z4Slicing with step is not supported on PyArrow tables)startstopr   rj   stepr   r   r   )rS   r   r   r   rk   rT   rT   rU   _gather_slice#  s   
zArrowDataFrame._gather_slicer   r>   c                 C  s0   t || j\}}}| | j| j||| S rN   )r   r   r   rj   select)rS   r   r   r   r   rT   rT   rU   _select_slice_name/  s   z!ArrowDataFrame._select_slice_namec                 C  s$   |  | j| j|j|j|j S rN   )r   rj   r   r   r   r   r   )rS   r   rT   rT   rU   _select_slice_index3  s   z"ArrowDataFrame._select_slice_indexc                 C  sD   t |tjrtd| }nt|r| }n|}| | j	|S )NzSequence[int])
r`   ra   ChunkedArrayr
   r   r   tolistr   rj   r   rS   r   selectorrT   rT   rU   _select_multi_index8  s   
z"ArrowDataFrame._select_multi_index'SizedMultiNameSelector[ChunkedArrayAny]c                 C  s2   t |tjrtd| }n|}| | j|S )NSequence[str])r`   ra   r   r
   r   r   rj   r   r   rT   rT   rU   _select_multi_nameG  s   z!ArrowDataFrame._select_multi_namedict[str, DType]c                   s    fdd j jD S )Nc                   s   i | ]}|j t|j jqS rT   )r{   r   rc   rR   )rr   fieldr   rT   rU   r~   U  s    z)ArrowDataFrame.schema.<locals>.<dictcomp>)rj   rn   r   rT   r   rU   rn   S  s   
zArrowDataFrame.schemac                 C     | j S rN   rx   r   rT   rT   rU   collect_schemaZ     zArrowDataFrame.collect_schemaunitr9   int | floatc                 C  s   | j j}t||S rN   )rj   nbytesr   )rS   r   szrT   rT   rU   estimated_size]  s   
zArrowDataFrame.estimated_size	list[str]c                 C  r   rN   )rj   rO   r   rT   rT   rU   r   c  r   zArrowDataFrame.columnsrO   c                 G  s   | j | jt|ddS NFr   )r   rj   r   r   )rS   rO   rT   rT   rU   simple_selectg  s   zArrowDataFrame.simple_selectexprsr&   c                 G  sn   | j | }|s| j| jjg ddS dd |D }|d j}|| }tjjdd |D |d}| j|ddS )	NFr   c                 S     g | ]}|j qS rT   r{   rr   srT   rT   rU   r   s      z)ArrowDataFrame.select.<locals>.<listcomp>r   c                 S  r   rT   rj   r   rT   rT   rU   r   v  r   )namesT)_evaluate_exprsr   rj   r   r   _align_full_broadcastra   r   )rS   r   
new_seriesr  alignreshapedr   rT   rT   rU   r   l  s   

zArrowDataFrame.selectotherr+   c                 C  s\   t | }|jst | }|krd| d| d}t||jS |jd }tt||gS )NzExpected object of length z, got: r[   r   )r   
_broadcastr   rj   ra   rz   r   )rS   r  length	len_otherrk   valuerT   rT   rU   _extract_comparandy  s   
z!ArrowDataFrame._extract_comparandc                 G  sj   | j }| j| }| j}|D ] }|j}| |}||v r&|j||||dn|j||d}q| j|ddS )N)columnFr   )	rj   r  r   r{   r  
set_columnr   append_columnr   )rS   r   native_framenew_columnsr   	col_valuecol_namer  rT   rT   rU   with_columns  s   

zArrowDataFrame.with_columnskeys#Sequence[str] | Sequence[ArrowExpr]drop_null_keysr(   c                C  s   ddl m} || ||dS )Nr   r'   )r  )narwhals._arrow.group_byr(   )rS   r  r  r(   rT   rT   rU   group_by  s   zArrowDataFrame.group_byhowr6   left_onSequence[str] | Noneright_onsuffixc          
   
   C  s   dddddd}|dkrG|   }tdg | j|jd	}| | |d
d | jj	||d
d | j||d|d
|gS |dk}	| | jj	|j|pUg ||| ||	dS )Nr@   r?   rA   rB   rC   )antisemirA   leftfullcross   n_bytesr   r   )r  
right_keys	join_typeright_suffixr"  )r  r'  r(  r)  coalesce_keys)r   r   r   r   r  litalias	broadcastrj   joindrop)
rS   r  r  r  r  r  how_to_join_mapplx	key_tokenr*  rT   rT   rU   r.    sH   

zArrowDataFrame.joinr   strictc                C  s$   t | ||d}| j| j|ddS )Nr3  Fr   )r   r   rj   r/  )rS   r   r3  to_droprT   rT   rU   r/    s   zArrowDataFrame.dropsubsetc                 C  sH   |d u r| j | j ddS |  }|j|j|  dd }| |S )NFr   T)ignore_nulls)r   rj   	drop_nullr   any_horizontalcolis_nullfilter)rS   r6  r1  maskrT   rT   rU   
drop_nulls  s
   
zArrowDataFrame.drop_nullsby
descendingbool | Sequence[bool]
nulls_lastc                  sd   t |tr|r	dnd  fdd|D }n
dd t||D }|r#dnd}| j| jj||dd	d
S )Nr@  	ascendingc                      g | ]}| fqS rT   rT   rr   keyorderrT   rU   r         z'ArrowDataFrame.sort.<locals>.<listcomp>c                 S      g | ]\}}||rd ndfqS )r@  rC  rT   )rr   rF  is_descendingrT   rT   rU   r         at_endat_start)null_placementFr   )r`   rK   r   r   rj   sort_by)rS   r@  rB  r?  sortingrO  rT   rG  rU   sort  s   
zArrowDataFrame.sortkIterable[str]reversec                  s`   t |tr|r	dnd  fdd|D }n
dd t||D }| j| jt| j||ddS )NrC  r@  c                   rD  rT   rT   rE  rG  rT   rU   r     rI  z(ArrowDataFrame.top_k.<locals>.<listcomp>c                 S  rJ  )rC  r@  rT   )rr   rF  is_ascendingrT   rT   rU   r     rL  Fr   )r`   rK   r   r   rj   r   pcselect_k_unstable)rS   rS  r?  rU  rQ  rT   rG  rU   top_k  s   
zArrowDataFrame.top_kpd.DataFramec                 C  s
   | j  S rN   )rj   	to_pandasr   rT   rT   rU   r[    r   zArrowDataFrame.to_pandaspl.DataFramec                 C  s   dd l }|| jS r   )polarsrl   rj   )rS   plrT   rT   rU   	to_polars  s   zArrowDataFrame.to_polarsNr   c                C  s$   dd l }|dd | jjD }|S )Nr   c                 S  s   g | ]}|  qS rT   )to_numpy)rr   r:  rT   rT   rU   r     rI  z+ArrowDataFrame.to_numpy.<locals>.<listcomp>)numpycolumn_stackrj   r   )rS   rs   r   nparrrT   rT   rU   r`    s   zArrowDataFrame.to_numpy	as_seriesdict[str, ArrowSeries]c                C  r   rN   rT   rS   re  rT   rT   rU   to_dict  r   zArrowDataFrame.to_dictdict[str, list[Any]]c                C  r   rN   rT   rg  rT   rT   rU   rh    r   -dict[str, ArrowSeries] | dict[str, list[Any]]c                C  s(   |   }|rdd |D S dd |D S )Nc                 S  s   i | ]}|j |qS rT   r   rr   serrT   rT   rU   r~     rI  z*ArrowDataFrame.to_dict.<locals>.<dictcomp>c                 S  s   i | ]}|j | qS rT   )r{   to_listrk  rT   rT   rU   r~         )r   )rS   re  itrT   rT   rU   rh    s   order_byc                 C  s   |   }tdt| d}|d u r%|j|jj|| |d}| || S t	
| jdd |D }| jdk r?|t	
|}nt	||t }| | jd||S )Nr   r   r   c                 S  s   g | ]}|d fqS )rC  rT   )rr   r?  rT   rT   rU   r     rI  z1ArrowDataFrame.with_row_index.<locals>.<listcomp>)   )r   r   r   _expr_from_series_seriesfrom_iterabler   allrW  sort_indicesrj   r^   r   scatterr
   ra   int64r   
add_column)rS   r{   rp  r1  rW   	row_indexindicesnew_colrT   rT   rU   with_row_index  s   
zArrowDataFrame.with_row_index	predicatec                 C  s"   |  |j}| j| j|ddS r   )_evaluate_single_output_exprrj   r   r<  )rS   r  mask_nativerT   rT   rU   r<  %  s   zArrowDataFrame.filternc                 C  sJ   | j }|dkr| j|d|ddS |j}| j|dtd|| ddS Nr   Fr   )rj   r   r   r   maxrS   r  r   r   rT   rT   rU   head+  s   zArrowDataFrame.headc                 C  sJ   | j }|dkr|j}| j|td|| ddS | j|t|ddS r  )rj   r   r   r   r  absr  rT   rT   rU   tail4  s   zArrowDataFrame.tail)sessionbackend_LazyAllowedImpl | Noner  SparkSession | Noner.   c                C  s@  |d u r| S |t ju r#dd l}ddlm} | j}||dd| jdS |t ju rCdd l	}ddl
m} |td|| j d| jdS |t ju rbdd lm} ddlm}	 |	|| j d| jdS |t ju rdd l}
dd	lm} ||
j| j| jd
d| jdS | rddlm} |d u rd}t||j | ||| jdS t!)Nr   )DuckDBLazyFrame_dfTrF   rI   )PolarsLazyFramer\  )DaskLazyFrame)IbisLazyFrame)r   )SparkLikeLazyFramez5Spark like backends require `session` to be not None.)r  implementationrI   )"r   DUCKDBduckdbnarwhals._duckdb.dataframer  rj   rb   rR   POLARSr]  narwhals._polars.dataframer  r
   rl   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   )rS   r  r  r  r  r  r^  r  ddr  r  r  r  rk   rT   rT   rU   r  =  sT   




zArrowDataFrame.lazy_EagerAllowedImpl | Nonekwargsr-   c                 K  s   |t ju s	|d u rddlm} || j| jddS |t ju r1ddlm} || j	 t jd| jddS |t j
u rOdd l}ddlm} |td	|| jd| jd
S d| }t|)Nr   )rE   Fr   )PandasLikeDataFrameT)r  rF   rI   rJ   )PolarsDataFramer\  r  zUnsupported `backend` value: )r   r   narwhals._arrow.dataframerE   rj   rR   PANDASnarwhals._pandas_like.dataframer  r[  r  r]  r  r  r
   rl   r   )rS   r  r  rE   r  r^  r  rk   rT   rT   rU   collectz  s0   



zArrowDataFrame.collectc                 C  s   | j | jddS r   r   rj   r   rT   rT   rU   clone  r   zArrowDataFrame.cloner   
int | Noner  int | str | Nonec                 C  s   ddl m} |d u r)|d u r)| j }dkrd|}t||| jd d ddS |d u s1|d u r7d}t|t|trB| j|n|}|| j| | ddS )Nr   )maybe_extract_py_scalar)r   r   zfcan only call `.item()` without "row" or "column" values if the DataFrame has a single element; shape=T)return_py_scalarz8cannot call `.item()` with only one of `row` or `column`)	narwhals._arrow.seriesr  r   r  rj   r`   r   r   r   )rS   r   r  r  r   rk   _colrT   rT   rU   item  s   zArrowDataFrame.itemmappingMapping[str, str]c                   s<   | j dkrtd }n
 fdd| jD }| | j|S )N)   zdict[str, str]c                   s   g | ]}  ||qS rT   )getrr   cr  rT   rU   r     rn  z)ArrowDataFrame.rename.<locals>.<listcomp>)r^   r
   r   r   rj   rename_columns)rS   r  r  rT   r  rU   rename  s   
zArrowDataFrame.renamefilestr | Path | BytesIOc                 C  s   dd l m} || j| d S r   )pyarrow.parquetparquetwrite_tablerj   )rS   r  pprT   rT   rU   write_parquet  s   zArrowDataFrame.write_parquetc                 C  r   rN   rT   rS   r  rT   rT   rU   	write_csv  r   zArrowDataFrame.write_csvc                 C  r   rN   rT   r  rT   rT   rU   r    r   str | Path | BytesIO | None
str | Nonec                 C  sL   dd l m} |d u rt }|| j| |   S || j| d S r   )	pyarrow.csvcsvra   BufferOutputStreamr  rj   getvalue
to_pybytesdecode)rS   r  pa_csv
csv_bufferrT   rT   rU   r    s   c                 C  s   dd l }td| jd}t|t| }| j||	| j
|df|dfg}ttt||| d t||| d }tj|| dS )	Nr   r$  r%  minr  _min_maxr\   )ra  r   r   ra   r   r   r   rj   r  r  	aggregaterz   rW  and_is_inr   rg   )rS   rc  	col_tokenr{  keep_idxrj   rT   rT   rU   	is_unique  s   zArrowDataFrame.is_unique)maintain_orderkeepr:   r  c             	   C  sV  dd l }|r| | }r|t|p| j}|dv rddlm} |j| }td| jd}	|r^|r^tdg | j|	d}
| j|
d dj	|dddj
||dd d	}|j	|
ddd
j|
gddS |rk| j	|dddj}n| j}||	t|t| ||	|fg|	 d| }| j||ddS | j|  }|  }| |j|S )Nr   >   r   lastfirstr'   r$  r%  )rp  F)rB  r@  )r6  r  r  rp  )r@  rB  r4  _r   )ra  _check_columns_existr   r   r  r(   _REMAP_UNIQUEr   r~  rR  uniquer/  rj   r  ra   r   r   r   r  r  r  r   r   r   r  r   r<  rr  rs  )rS   r6  r  r  rp  rc  errorr(   agg_funcr  	idx_tokenr   rj   keep_idx_nativer  r1  rT   rT   rU   r    sF   



zArrowDataFrame.uniqueoffsetc                 C  s   | j | j|d | ddS r   r  )rS   r  r  rT   rT   rU   gather_every  s   zArrowDataFrame.gather_everyc                 C  r   rN   r   r   rT   rT   rU   r     r   zArrowDataFrame.to_arrowfractionfloat | Nonewith_replacementseedc          
      C  sj   dd l }t| }|d u r|d urt|| }|jj|d}||}|j|||d}	| j| j	|	ddS )Nr   )r  )sizereplaceFr   )
ra  r   r   randomdefault_rngr   choicer   rj   r   )
rS   r  r  r  r  rc  r   rngidxr=  rT   rT   rU   sample  s   
zArrowDataFrame.sampleonvariable_name
value_namec                   s~   t | d u r
g nt|d u rfdd| jD nt|}| j| jj  fdd|D }| t|dS )Nc                 3  s    | ]	}| vr|V  qd S rN   rT   r  )r   rT   rU   rt   8  s    z)ArrowDataFrame.unpivot.<locals>.<genexpr>c                 3  s.    | ]} t|  |V  qd S rN   )r  r   )rr   r{   )r  
index_colsr  r  r  rT   rU   rt   ;  s    

permissive)	r   r   r   iterrj   r   r  r   r   )rS   r  r   r  r  on_tablesrT   )r  r   r  r  r  r  rU   unpivot-  s   	$zArrowDataFrame.unpivot)
rG   rH   rI   r   rJ   rK   rF   rK   rL   rM   )rW   r0   rX   r3   rL   r#   )rW   rm   rX   r3   rn   ro   rL   r#   )rW   r   rX   r3   rn   ro   rL   r#   )r   r   rL   r   )rW   rH   rX   r3   rL   r#   )rW   r<   rX   r3   rn   r   rL   r#   )rL   r*   )rL   r"   )rL   r#   )rI   r   rL   r#   )r   rH   rJ   rK   rL   r#   )rL   r   )rL   r   )r   r   rL   r   )r   r   rL   r   )r   r   rL   r   )r   rK   rL   r   )rL   r   )r   rK   r   r   rL   r   )r{   r   rL   r   )rs   r   r   r   rL   r<   )r   r   rL   r#   )r   r   rL   r#   )r   r>   rL   r#   )r   r   rL   r#   )r   r   rL   r#   )r   r   rL   r#   )rL   r   )r   r9   rL   r   )rL   r   )rO   r   rL   r#   )r   r&   rL   r#   )r  r   rL   r+   )r  r  r  rK   rL   r(   )r  r#   r  r6   r  r  r  r  r  r   rL   r#   )r   r   r3  rK   rL   r#   )r6  r  rL   r#   )r?  r   r@  rA  rB  rK   rL   r#   )rS  r   r?  rT  rU  rA  rL   r#   )rL   rZ  )rL   r\  rN   )re  r   rL   rf  )re  r   rL   ri  )re  rK   rL   rj  )r{   r   rp  r  rL   r#   )r  r&   rL   r#   )r  r   rL   r#   )r  r  r  r  rL   r.   )r  r  r  r   rL   r-   )r   r  r  r  rL   r   )r  r  rL   r#   )r  r  rL   rM   )r  rM   rL   r   )r  r  rL   r  )rL   r   )
r6  r  r  r:   r  r   rp  r  rL   r#   )r  r   r  r   rL   r#   )rL   rH   )
r  r  r  r  r  rK   r  r  rL   r#   )
r  r  r   r  r  r   r  r   rL   r#   )Mrd   
__module____qualname__r   r   r]   rV   classmethodrl   r   r   staticmethodr_   rg   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   _iter_columnsr   r   r   r   r   r   r   r   r   rn   r   r   r   exploder   r   r   r  r  r  r.  	join_asofr/  r>  rR  rY  r[  r_  r`  rh  r~  r<  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  pivotrT   rT   rT   rU   rE   Q   s    %1	=#
3
rE   )r   r&   rH   r+   )^
__future__r   collections.abcr   r   r   r   typingr   r   r	   r
   r   pyarrowra   pyarrow.computecomputerW  r  r   narwhals._arrow.utilsr   r   r   r   r   narwhals._compliantr   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&   r  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__rE   rT   rT   rT   rU   <module>   sH    00
