o
    Lhp                     @  s  U d dl mZ d dl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 d dlZd dlmZ d dlmZ d dl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
rd 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@mAZAmBZBmCZC d dlDmEZEmFZF d dlGmHZH d dlImJZJmKZK d dlmZmLZL d dlMmNZN d dlOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY ed ZZde[d< ed Z\de[d < G d!d" d"ed# Z]dS )$    )annotations)
CollectionIteratorMappingSequence)partial)TYPE_CHECKINGAnyLiteralcastoverloadN)ArrowSeries)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scale_bytessupports_arrow_c_stream
zip_strict)is_numpy_array_1d)
ShapeError)Iterable)BytesIO)Path)
ModuleType)Self	TypeAliasTypeIs)	ArrowExprArrowGroupByArrowNamespace)ChunkedArrayAnyMaskOrder)CompliantDataFrameAnyCompliantLazyFrameAny)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"   JoinType)nonedefault
permissivePromoteOptionsc                   @  s  e Zd ZejZdddd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d-d.Zdd/d0Zd1d2d	d4d5Zed
d7d8Zdd:d;Zdd>d?ZeddCdDZeddGdDZeddIdDZddJdDZddLdMZeZddPdQZddUdVZdd[d\Zdd_d`ZddbdcZ ddfdgZ!ddhdiZ"ddjdkZ#ddmdnZ$eddpdqZ%ddrdsZ&ddwdxZ'e( Z)eddzd{Z*dd}d~Z+dddZ,dddZ-dddZ.d ddZ/d!ddZ0e( Z1d"ddZ2d#ddZ3d$ddZ4d%ddZ5d&ddZ6d'ddZ7d(dddddZ8ed)ddZ9ed*ddZ9d+ddZ9d,ddZ:d-ddZ;d.ddĄZ<d.ddƄZ=d(d/dd˄Z>d0ddЄZ?ddd҄Z@d1dd؄ZAd2dd܄ZBd3ddZCed4ddZDed3ddZDd5ddZDd6ddZEddd7ddZFd8ddZGd9ddZHd:ddZId;ddZJe( ZKdS (<  ArrowDataFrameF)validate_backend_versionnative_dataframepa.Tableversionr   validate_column_namesboolrH   returnNonec                C  s*   |rt |j |r|   || _|| _d S N)r   column_names_validate_backend_version_native_frame_version)selfrI   rK   rL   rH    rV   Z/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/narwhals/_arrow/dataframe.py__init__S   s   

zArrowDataFrame.__init__datar.   contextr1   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 rZ   )_implementation_backend_version
_is_native
isinstancer   patabler   type__name__ModuleNotFoundError	TypeErrorfrom_native)clsrY   rZ   backend_versionnativemsgrV   rV   rW   
from_arrowb   s   

zArrowDataFrame.from_arrowMapping[str, Any]schemaIntoSchema | Nonec               C  sT   ddl m} |d ur|| n|}|r|s| }ntjj||d}| j||dS )Nr   Schemaro   r]   )narwhals.schemarr   to_arrowempty_tablerb   Tablefrom_pydictrh   )ri   rY   rZ   ro   rr   	pa_schemark   rV   rV   rW   	from_dictq   s   	
zArrowDataFrame.from_dictobjpa.Table | AnyTypeIs[pa.Table]c                 C  s   t | tjS rP   )ra   rb   rw   )r{   rV   rV   rW   r`      s   zArrowDataFrame._is_nativec               C  s   | ||j ddS )NTrK   rL   )rT   )ri   rY   rZ   rV   rV   rW   rh      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   rq   c                 S  s   g | ]}t |qS rV   )rb   array).0valrV   rV   rW   
<listcomp>   s    z-ArrowDataFrame.from_numpy.<locals>.<listcomp>rs   r]   )rt   rr   Tra   r   rb   rw   from_arraysru   _numpy_column_namesrh   )ri   rY   rZ   ro   rr   arraysrk   rV   rV   rW   
from_numpy   s   	zArrowDataFrame.from_numpyr(   c                 C  s   ddl m} || jdS )Nr   r'   )rK   )narwhals._arrow.namespacer(   rT   )rU   r(   rV   rV   rW   __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_namespacerd   AssertionError)rU   rl   rV   rV   rW   __native_namespace__   s   
z#ArrowDataFrame.__native_namespace__c                 C     | S rP   rV   rU   rV   rV   rW   __narwhals_dataframe__      z%ArrowDataFrame.__narwhals_dataframe__c                 C  r   rP   rV   r   rV   rV   rW   __narwhals_lazyframe__   r   z%ArrowDataFrame.__narwhals_lazyframe__c                 C  s   | j | j|ddS )NFr~   )	__class__rk   )rU   rK   rV   rV   rW   _with_version   s   zArrowDataFrame._with_versionTrL   dfc                C  s   | j || j|dS )Nr~   )r   rT   )rU   r   rL   rV   rV   rW   _with_native   s   zArrowDataFrame._with_nativetuple[int, int]c                 C     | j jS rP   )rk   shaper   rV   rV   rW   r         zArrowDataFrame.shapeintc                 C  s
   t | jS rP   )lenrk   r   rV   rV   rW   __len__      
zArrowDataFrame.__len__indextuple[Any, ...]c                   s   t  fdd| j D S )Nc                 3  s    | ]}|  V  qd S rP   rV   r   colr   rV   rW   	<genexpr>   s    z%ArrowDataFrame.row.<locals>.<genexpr>)tuplerk   itercolumns)rU   r   rV   r   rW   row   s   zArrowDataFrame.rownamedLiteral[True]list[dict[str, Any]]c                C     d S rP   rV   rU   r   rV   rV   rW   rows   r   zArrowDataFrame.rowsLiteral[False]list[tuple[Any, ...]]c                C  r   rP   rV   r   rV   rV   rW   r      r   ,list[tuple[Any, ...]] | list[dict[str, Any]]c                C  r   rP   rV   r   rV   rV   rW   r      r   c                C  s    |st | jdddS | j S )NFi   )r   buffer_size)list	iter_rowsrk   	to_pylistr   rV   rV   rW   r      s   
Iterator[ArrowSeries]c                 c  s4    t | j| j D ]\}}tj|| |dV  q
d S )NrZ   name)r   columnsrk   r   r   rh   )rU   r   seriesrV   rV   rW   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 Nr   )rk   num_rowsrange	to_pydictvaluesr   r   )rU   r   r   r   r   ir   rV   rV   rW   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   )ra   r   rd   rg   r   rh   rk   )rU   r   rl   rV   rV   rW   
get_column   s   
zArrowDataFrame.get_columndtyper	   copybool | Nonec                C  s   | j j||dS )Nr   )rk   	__array__)rU   r   r   rV   rV   rW   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   rk   slicer_   ra   r   r   take)rU   r   rV   rV   rW   _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   rk   stepNotImplementedErrorr   r   )rU   r   r   r   rl   rV   rV   rW   _gather_slice   s   
zArrowDataFrame._gather_slicer   r<   c                 C  s0   t || j\}}}| | j| j||| S rP   )r   r   r   rk   select)rU   r   r   r   r   rV   rV   rW   _select_slice_name   s   z!ArrowDataFrame._select_slice_namec                 C  s$   |  | j| j|j|j|j S rP   )r   rk   r   r   r   r   r   )rU   r   rV   rV   rW   _select_slice_index  s   z"ArrowDataFrame._select_slice_indexc                 C  sD   t |tjrtd| }nt|r| }n|}| | j	|S )NzSequence[int])
ra   rb   ChunkedArrayr   r   r   tolistr   rk   r   rU   r   selectorrV   rV   rW   _select_multi_index  s   
z"ArrowDataFrame._select_multi_index'SizedMultiNameSelector[ChunkedArrayAny]c                 C  s2   t |tjrtd| }n|}| | j|S )NSequence[str])ra   rb   r   r   r   r   rk   r   r   rV   rV   rW   _select_multi_name  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 rV   )r   r   rd   rT   )r   fieldr   rV   rW   
<dictcomp>%  s    z)ArrowDataFrame.schema.<locals>.<dictcomp>)rk   ro   r   rV   r   rW   ro   #  s   
zArrowDataFrame.schemac                 C     | j S rP   rs   r   rV   rV   rW   collect_schema*     zArrowDataFrame.collect_schemaunitr7   int | floatc                 C  s   | j j}t||S rP   )rk   nbytesr   )rU   r   szrV   rV   rW   estimated_size-  s   
zArrowDataFrame.estimated_size	list[str]c                 C  r   rP   )rk   rQ   r   rV   rV   rW   r   3  r   zArrowDataFrame.columnsrQ   c                 G  s   | j | jt|ddS NFr   )r   rk   r   r   )rU   rQ   rV   rV   rW   simple_select7  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 rV   r   r   srV   rV   rW   r   C      z)ArrowDataFrame.select.<locals>.<listcomp>r   c                 S  r   rV   rk   r   rV   rV   rW   r   F  r   namesT)_evaluate_into_exprsr   rk   r   r   _align_full_broadcastrb   rw   )rU   r   
new_seriesr   alignreshapedr   rV   rV   rW   r   <  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   rk   rb   chunked_arrayrepeat)rU   r   length	len_otherrl   valuerV   rV   rW   _extract_comparandI  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   )	rk   r   r   r   r  
set_columnr   append_columnr   )rU   r   native_framenew_columnsr   	col_valuecol_namer  rV   rV   rW   with_columnsT  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&   )rU   r  r  r&   rV   rV   rW   group_byf  s   zArrowDataFrame.group_byhowr4   left_onSequence[str] | Noneright_onsuffixc          
   
   C  s   dddddd}|dkrK|   }tdg | j|jd	}| | |d
d |tj	j
j||d
d |tj	j
||d|d|gS |dk}	| | j
j|j
|pYg ||| ||	dS )Nr>   r=   r?   r@   rA   )antisemir?   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	broadcastr   LITERALrk   joindrop)
rU   r   r  r  r  r  how_to_join_mapplx	key_tokenr$  rV   rV   rW   r)  m  sL   
zArrowDataFrame.joinr   strictc                C  s$   t | ||d}| j| j|ddS )N)r.  Fr   )r   r   rk   r*  )rU   r   r.  to_droprV   rV   rW   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   rk   	drop_nullr   any_horizontalr   is_nullfilter)rU   r0  r,  maskrV   rV   rW   
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 )Nr9  	ascendingc                      g | ]}| fqS rV   rV   r   keyorderrV   rW   r         z'ArrowDataFrame.sort.<locals>.<listcomp>c                 S      g | ]\}}||rd ndfqS )r9  r<  rV   )r   r?  is_descendingrV   rV   rW   r         at_endat_start)null_placementFr   )ra   rM   r   r   rk   sort_by)rU   r9  r;  r8  sortingrH  rV   r@  rW   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 )Nr<  r9  c                   r=  rV   rV   r>  r@  rV   rW   r     rB  z(ArrowDataFrame.top_k.<locals>.<listcomp>c                 S  rC  )r<  r9  rV   )r   r?  is_ascendingrV   rV   rW   r     rE  Fr   )ra   rM   r   r   rk   r   pcselect_k_unstable)rU   rL  r8  rN  rJ  rV   r@  rW   top_k  s   
zArrowDataFrame.top_kpd.DataFramec                 C  s
   | j  S rP   )rk   	to_pandasr   rV   rV   rW   rT    r   zArrowDataFrame.to_pandaspl.DataFramec                 C  s   dd l }|| jS r   )polarsrm   rk   )rU   plrV   rV   rW   	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 rV   )to_numpyr   rV   rV   rW   r     rB  z+ArrowDataFrame.to_numpy.<locals>.<listcomp>)numpycolumn_stackrk   r   )rU   r   r   nparrrV   rV   rW   rY    s   zArrowDataFrame.to_numpy	as_seriesdict[str, ArrowSeries]c                C  r   rP   rV   rU   r^  rV   rV   rW   to_dict  r   zArrowDataFrame.to_dictdict[str, list[Any]]c                C  r   rP   rV   r`  rV   rV   rW   ra    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 rV   r   r   serrV   rV   rW   r     rB  z*ArrowDataFrame.to_dict.<locals>.<dictcomp>c                 S  s   i | ]}|j | qS rV   )r   to_listrd  rV   rV   rW   r         )r   )rU   r^  itrV   rV   rW   ra    s   order_byc                 C  s   |   }|d u r'dd l}t|jt| |jd}|j|j	j
|| |d}n||d jddd}|jg |dd |}| || S )	Nr   )r   r   ordinalF)r9  )partition_byri  r   )r   rZ  rb   r   aranger   int64_expr_from_series_seriesfrom_iterabler   rankoverr&  r   all)rU   r   ri  r,  r\  rY   	row_indexrr  rV   rV   rW   with_row_index  s   zArrowDataFrame.with_row_index	predicateArrowExpr | list[bool | None]c                 C  s6   t |tr|}n| |d j}| j| j|ddS Nr   Fr   )ra   r   r   rk   r   r5  )rU   rw  mask_nativerV   rV   rW   r5    s   
zArrowDataFrame.filternc                 C  sJ   | j }|dkr| j|d|ddS |j}| j|dtd|| ddS ry  )rk   r   r   r   maxrU   r{  r   r   rV   rV   rW   head   s   zArrowDataFrame.headc                 C  sJ   | j }|dkr|j}| j|td|| ddS | j|t|ddS ry  )rk   r   r   r   r|  absr}  rV   rV   rW   tail	  s   zArrowDataFrame.tailbackend_LazyAllowedImpl | 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 | rdd l}	dd	lm}
 |
|	j| j| jd
d| jdS t)Nr   )DuckDBLazyFramer   TrH   rK   )PolarsLazyFramerU  )DaskLazyFrame)IbisLazyFrame)r   )r   DUCKDBduckdbnarwhals._duckdb.dataframer  rk   rc   rT   POLARSrV  narwhals._polars.dataframer  r   rm   lazyDASKdask.dataframe	dataframenarwhals._dask.dataframer  from_pandasrT  is_ibisibisnarwhals._ibis.dataframer  memtabler   r   )rU   r  r  r  r   rW  r  ddr  r  r  rV   rV   rW   r    sD   


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   )rG   Fr~   )PandasLikeDataFrameT)implementationrH   rK   rL   )PolarsDataFramerU  r  zUnsupported `backend` value: )r   r   narwhals._arrow.dataframerG   rk   rT   PANDASnarwhals._pandas_like.dataframer  rT  r  rV  r  r  r   rm   r   )rU   r  r  rG   r  rW  r  rl   rV   rV   rW   collect?  s0   



zArrowDataFrame.collectc                 C  s   | j | jddS r   r   rk   r   rV   rV   rW   cloneb  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| j}t||| jd d ddS |d u s0|d u r6d}t|t|trA| j|n|}|| j| | d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   
ValueErrorrk   ra   r   r   r   )rU   r   r  r  rl   _colrV   rV   rW   iteme  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 rV   )getr   cr  rV   rW   r   ~  rg  z)ArrowDataFrame.rename.<locals>.<listcomp>)r_   r   r   r   rk   rename_columns)rU   r  r   rV   r  rW   renamey  s   
zArrowDataFrame.renamefilestr | Path | BytesIOc                 C  s   dd l m} || j| d S r   )pyarrow.parquetparquetwrite_tablerk   )rU   r  pprV   rV   rW   write_parquet  s   zArrowDataFrame.write_parquetc                 C  r   rP   rV   rU   r  rV   rV   rW   	write_csv  r   zArrowDataFrame.write_csvc                 C  r   rP   rV   r  rV   rV   rW   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csvrb   BufferOutputStreamr  rk   getvalue
to_pybytesdecode)rU   r  pa_csv
csv_bufferrV   rV   rW   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]   )rZ  r   r   rb   r   rl  r   rk   r	  r  	aggregater  rP  and_is_inr   rh   )rU   r\  	col_tokenru  keep_idxrk   rV   rV   rW   	is_unique  s   zArrowDataFrame.is_unique)maintain_orderkeepr8   r  c             	   C  s   dd l }|r| | }r|t|p| j}|dv rWddlm} |j| }td| jd}| j	|t
|t| |||fg| d| }	| j| j|	ddS | j|  }
|  }| |j|
S )	Nr   >   anylastfirstr%   r  r  _Fr   )rZ  _check_columns_existr   r   r  r&   _REMAP_UNIQUEr   rk   r	  rb   r   rl  r   r  r  r  r   r   r   r  r   r5  rn  ro  )rU   r0  r  r  r\  errorr&   agg_funcr  keep_idx_nativer  r,  rV   rV   rW   unique  s&   	
zArrowDataFrame.uniqueoffsetc                 C  s   | j | j|d | ddS r   r  )rU   r{  r  rV   rV   rW   gather_every  s   zArrowDataFrame.gather_everyc                 C  r   rP   r   r   rV   rV   rW   ru     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   )
rZ  r   r   randomdefault_rngrl  choicer   rk   r   )
rU   r{  r  r  r  r\  r   rngidxr6  rV   rV   rW   sample  s   
zArrowDataFrame.sampleonvariable_name
value_namec                   s   t |d u r
g n| |d u r fddjD n|}jdkr(ttjddntj}g  ||| fdd|D S )Nc                   s   g | ]}| vr|qS rV   rV   r  )index_rV   rW   r     rg  z*ArrowDataFrame.unpivot.<locals>.<listcomp>)r[   r   r   rE   )promote_optionsc                   sV   g | ]'}t jjg fd d D tdt |g t  j|dqS )c                 3  s    | ]	} j |V  qd S rP   )rk   r  )r   idx_colr   rV   rW   r     s    z4ArrowDataFrame.unpivot.<locals>.<listcomp>.<genexpr>r)   r   )rb   rw   r   r   r   stringrk   r  )r   on_colr  n_rowsr   rU   rV   rW   r     s     
)r   r   r_   r   rb   concat_tablesr   )rU   r  r   r  r  on_concatrV   r  rW   unpivot  s    
zArrowDataFrame.unpivot)
rI   rJ   rK   r   rL   rM   rH   rM   rN   rO   )rY   r.   rZ   r1   rN   r!   )rY   rn   rZ   r1   ro   rp   rN   r!   )r{   r|   rN   r}   )rY   rJ   rZ   r1   rN   r!   )rY   r:   rZ   r1   ro   r   rN   r!   )rN   r(   )rN   r    )rN   r!   )rK   r   rN   r!   )r   rJ   rL   rM   rN   r!   )rN   r   )rN   r   )r   r   rN   r   )r   r   rN   r   )r   r   rN   r   )r   rM   rN   r   )rN   r   )r   rM   r   r   rN   r   )r   r   rN   r   )r   r	   r   r   rN   r:   )r   r   rN   r!   )r   r   rN   r!   )r   r<   rN   r!   )r   r   rN   r!   )r   r   rN   r!   )r   r   rN   r!   )rN   r   )r   r7   rN   r   )rN   r   )rQ   r   rN   r!   )r   r$   rN   r!   )r   r   rN   r)   )r  r  r  rM   rN   r&   )r   r!   r  r4   r  r  r  r  r  r   rN   r!   )r   r   r.  rM   rN   r!   )r0  r  rN   r!   )r8  r   r9  r:  r;  rM   rN   r!   )rL  r   r8  rM  rN  r:  rN   r!   )rN   rS  )rN   rU  rP   )r^  r   rN   r_  )r^  r   rN   rb  )r^  rM   rN   rc  )r   r   ri  r  rN   r!   )rw  rx  rN   r!   )r{  r   rN   r!   )r  r  rN   r-   )r  r  r  r	   rN   r,   )r   r  r  r  rN   r	   )r  r  rN   r!   )r  r  rN   rO   )r  rO   rN   r   )r  r  rN   r  )rN   r   )r0  r  r  r8   r  r   rN   r!   )r{  r   r  r   rN   r!   )rN   rJ   )
r{  r  r  r  r  rM   r  r  rN   r!   )
r  r  r   r  r  r   r  r   rN   r!   )Lre   
__module____qualname__r   r   r^   rX   classmethodrm   rz   staticmethodr`   rh   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   _iter_columnsr   r   r   r   r   r   r   r   r   ro   r   r   r   exploder   r   r   r  r  r  r)  	join_asofr*  r7  rK  rR  rT  rX  rY  ra  rv  r5  r~  r  r  r  r  r  r  r  r  r  r  r  ru   r  r  pivotrV   rV   rV   rW   rG   N   s    3
		-#
"
%rG   )r   r$   rJ   r)   )^
__future__r   collections.abcr   r   r   r   	functoolsr   typingr   r	   r
   r   r   pyarrowrb   pyarrow.computecomputerP  r  r   narwhals._arrow.utilsr   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pdrV  rW  typing_extensionsr!   r"   r#   narwhals._arrow.exprr$   r  r&   r   r(   narwhals._arrow.typingr)   r*   r+   narwhals._compliant.typingr,   r-   narwhals._translater.   narwhals._typingr/   r0   r1   narwhals.dtypesr2   narwhals.typingr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   rB   __annotations__rF   rG   rV   rV   rV   rW   <module>   sL    00

