o
    hir                     @  s  U 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 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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 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$ 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* d dl m+Z+ d dl m,Z, erd d l-m.Z. d d!l/m0Z0 d d"l1m2Z2 d dl3Z4d dl5Z6d d#l7m8Z8 d d$l7m9Z9 d d%l7m:Z: d d&l;m<Z< d d'l=m>Z> d d(l?m@Z@ d d)lAmBZB d d*lAmCZC d d+lAmDZD d d,lEmFZF d d-lGmHZH d d.lImJZJ d d/lKmLZL d d0lKmMZM d d1lKmNZN d d2lKmOZO d d3lKmPZP d d4lKmQZQ d d5lKmRZR d d6lKmSZS d d7lKmTZT d d8lKmUZU d d9lKmVZV d dl m"Z" d d:l mWZW e	d; ZXd<eYd=< e	d> ZZd<eYd?< G d@dA dAedB Z[dS )C    )annotations)partial)TYPE_CHECKING)Any)
Collection)Iterator)Literal)Mapping)Sequence)cast)overloadN)ArrowSeries)align_series_full_broadcast)native_to_narwhals_dtype)EagerDataFrame)ExprKind)is_numpy_array)
ShapeError)Implementation)Version)check_column_exists)check_column_names_are_unique)convert_str_slice_to_int_slice)generate_temporary_column_name)not_implemented)parse_columns_to_drop)parse_version)scale_bytes)supports_arrow_c_stream)validate_backend_version)BytesIO)Path)
ModuleType)Self)	TypeAlias)TypeIs)	ArrowExprArrowGroupByArrowNamespace)ArrowChunkedArray)Mask)Order)IntoArrowTable)DTypeSchema)CompliantDataFrame)CompliantLazyFrame)JoinStrategy)SizedMultiIndexSelector)SizedMultiNameSelector)SizeUnit)UniqueKeepStrategy)_1DArray)_2DArray)_SliceIndex)
_SliceName)_FullContext)	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dddZedddZedddZedddZedddZ	edd"d#Z
dd%d&Zdd(d)Zd d*d+Zd d,d-Zdd.d/Zd0d1dd3d4Zedd6d7Zdd9d:Zdd=d>ZeddBdCZeddFdCZeddHdCZddIdCZd	dKdLZeZd
dOdPZddTdUZddZd[Zdd^d_ZddadbZddedfZddgdhZddidjZ ddldmZ!eddodpZ"ddqdrZ#ddvdwZ$e% Z&eddydzZ'dd|d}Z(dddZ)dddZ*dddZ+dddZ,dddZ-e% Z.dddZ/dddZ0dddZ1dddZ2dddZ3d dddddZ4ed!ddZ5ed"ddZ5d#ddZ5d$ddZ6d%ddZ7d&ddZ8d&ddZ9ddd'ddńZ:d(ddɄZ;d dd˄Z<d)ddфZ=d*ddՄZ>d+ddلZ?ed,ddۄZ@ed+ddۄZ@d-ddۄZ@d.ddZAddd/ddZBd0ddZCd1ddZDd2ddZEd3ddZFe% ZGdS (4  ArrowDataFramenative_dataframepa.Tablebackend_versiontuple[int, ...]versionr   validate_column_namesboolreturnNonec                C  s:   |rt |j || _tj| _|| _|| _t| j| j d S N)	r   column_names_native_framer   PYARROW_implementation_backend_version_versionr   )selfrI   rK   rM   rN    rZ   M/var/www/vscode/kcb/lib/python3.10/site-packages/narwhals/_arrow/dataframe.py__init__W   s   
zArrowDataFrame.__init__datar.   contextr=   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)   z@PyArrow>=14.0.0 is required for `from_arrow` for object of type .z1`from_arrow` is not supported for object of type r^   )rW   
_is_native
isinstancer   patabler   type__name__ModuleNotFoundError	TypeErrorfrom_native)clsr]   r^   rK   nativemsgrZ   rZ   r[   
from_arrowg   s   
zArrowDataFrame.from_arrowMapping[str, Any]schema#Mapping[str, DType] | Schema | Nonec               C  sB   ddl m} |d ur|| n|}tjj||d}| j||dS )Nr   r0   rp   ra   )narwhals.schemar1   to_arrowrd   Tablefrom_pydictrj   )rk   r]   r^   rp   r1   	pa_schemarl   rZ   rZ   r[   	from_dictv   s   	zArrowDataFrame.from_dictobjpa.Table | AnyTypeIs[pa.Table]c                 C  s   t | tjS rR   )rc   rd   ru   )ry   rZ   rZ   r[   rb      s   zArrowDataFrame._is_nativec               C  s   | ||j |jddS )NTrK   rM   rN   )rW   rX   )rk   r]   r^   rZ   rZ   r[   rj      s   zArrowDataFrame.from_nativer:   3Mapping[str, DType] | Schema | 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   r0   c                 S  s   g | ]}t |qS rZ   )rd   array).0valrZ   rZ   r[   
<listcomp>   s    z-ArrowDataFrame.from_numpy.<locals>.<listcomp>rr   ra   )rs   r1   Trc   r	   rd   ru   from_arraysrt   _numpy_column_namesrj   )rk   r]   r^   rp   r1   arraysrl   rZ   rZ   r[   
from_numpy   s   	zArrowDataFrame.from_numpyr*   c                 C  s   ddl m} || j| jdS )Nr   r)   rK   rM   )narwhals._arrow.namespacer*   rW   rX   )rY   r*   rZ   rZ   r[   __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: )rV   r   rU   to_native_namespacerf   AssertionError)rY   rm   rZ   rZ   r[   __native_namespace__   s   
z#ArrowDataFrame.__native_namespace__c                 C     | S rR   rZ   rY   rZ   rZ   r[   __narwhals_dataframe__      z%ArrowDataFrame.__narwhals_dataframe__c                 C  r   rR   rZ   r   rZ   rZ   r[   __narwhals_lazyframe__   r   z%ArrowDataFrame.__narwhals_lazyframe__c                 C  s   | j | j| j|ddS )NFr|   )	__class__rl   rW   )rY   rM   rZ   rZ   r[   _with_version   s   zArrowDataFrame._with_versionTrN   dfc                C  s   | j || j| j|dS )Nr|   )r   rW   rX   )rY   r   rN   rZ   rZ   r[   _with_native   s   zArrowDataFrame._with_nativetuple[int, int]c                 C  s   | j jS rR   )rl   shaper   rZ   rZ   r[   r      s   zArrowDataFrame.shapeintc                 C  s
   t | jS rR   )lenrl   r   rZ   rZ   r[   __len__      
zArrowDataFrame.__len__indextuple[Any, ...]c                   s   t  fdd| j D S )Nc                 3  s    | ]}|  V  qd S rR   rZ   r   colr   rZ   r[   	<genexpr>   s    z%ArrowDataFrame.row.<locals>.<genexpr>)tuplerl   itercolumns)rY   r   rZ   r   r[   row   s   zArrowDataFrame.rownamedLiteral[True]list[dict[str, Any]]c                C     d S rR   rZ   rY   r   rZ   rZ   r[   rows   r   zArrowDataFrame.rowsLiteral[False]list[tuple[Any, ...]]c                C  r   rR   rZ   r   rZ   rZ   r[   r      r   ,list[tuple[Any, ...]] | list[dict[str, Any]]c                C  r   rR   rZ   r   rZ   rZ   r[   r      r   c                C  s    |st | jdddS | j S )NFi   )r   buffer_size)list	iter_rowsrl   	to_pylistr   rZ   rZ   r[   r      s   
Iterator[ArrowSeries]c                 c  s4    t | j| j D ]\}}tj|| |dV  q
d S )Nr^   name)zipcolumnsrl   r   r   rj   )rY   r   seriesrZ   rZ   r[   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   )rl   num_rowsrange	to_pydictvaluesr   r   )rY   r   r   r   r   ir   rZ   rZ   r[   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   )rc   r   rf   ri   r   rj   rl   )rY   r   rm   rZ   rZ   r[   
get_column   s   
zArrowDataFrame.get_columndtyper   copybool | Nonec                C  s   | j j||dS )Nr   )rl   	__array__)rY   r   r   rZ   rZ   r[   r         zArrowDataFrame.__array__r   *SizedMultiIndexSelector[ArrowChunkedArray]c                 C  sN   t |dkr| | jddS | jdk rt|trt|}| | j|S )Nr   )   )	r   r   rl   slicerW   rc   r   r   take)rY   r   rZ   rZ   r[   _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   rl   stepNotImplementedErrorr   r   )rY   r   r   r   rm   rZ   rZ   r[   _gather_slice  s   
zArrowDataFrame._gather_slicer   r<   c                 C  s0   t || j\}}}| | j| j||| S rR   )r   r   r   rl   select)rY   r   r   r   r   rZ   rZ   r[   _select_slice_name  s   z!ArrowDataFrame._select_slice_namec                 C  s$   |  | j| j|j|j|j S rR   )r   rl   r   r   r   r   r   )rY   r   rZ   rZ   r[   _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])
rc   rd   ChunkedArrayr   r   r   tolistr   rl   r   rY   r   selectorrZ   rZ   r[   _select_multi_index  s   
z"ArrowDataFrame._select_multi_index)SizedMultiNameSelector[ArrowChunkedArray]c                 C  s2   t |tjrtd| }n|}| | j|S )NSequence[str])rc   rd   r   r   r   r   rl   r   r   rZ   rZ   r[   _select_multi_name(  s   z!ArrowDataFrame._select_multi_namedict[str, DType]c                   s$    j j} fddt|j|jD S )Nc                   s   i | ]\}}|t | jqS rZ   )r   rX   )r   r   r   r   rZ   r[   
<dictcomp>8  s    z)ArrowDataFrame.schema.<locals>.<dictcomp>)rl   rp   r   namestypes)rY   rp   rZ   r   r[   rp   5  s   
zArrowDataFrame.schemac                 C     | j S rR   rr   r   rZ   rZ   r[   collect_schema=     zArrowDataFrame.collect_schemaunitr7   int | floatc                 C  s   | j j}t||S rR   )rl   nbytesr   )rY   r   szrZ   rZ   r[   estimated_size@  s   
zArrowDataFrame.estimated_size	list[str]c                 C  s
   | j jjS rR   )rl   rp   r   r   rZ   rZ   r[   r   F  s   
zArrowDataFrame.columnsrS   c                 G  s   | j | jt|ddS NFr   )r   rl   r   r   )rY   rS   rZ   rZ   r[   simple_selectJ  s   zArrowDataFrame.simple_selectrY   exprsr&   c                 G  sd   | j | }|s| j| jjg ddS dd |D }t| }tjjdd |D |d}| j|ddS )NFr   c                 S     g | ]}|j qS rZ   )r   r   srZ   rZ   r[   r   V      z)ArrowDataFrame.select.<locals>.<listcomp>c                 S  r   rZ   rl   r   rZ   rZ   r[   r   X  r   r   T)_evaluate_into_exprsr   rl   r   r   r   rd   ru   )rY   r   
new_seriesr   reshapedr   rZ   rZ   r[   r   O  s   
zArrowDataFrame.selectotherr+   c                 C  s   t | }|jst | }|krd| d| d}t||jS dd l}|jd }| jdk r6t|dr6| }t	|j
||dgS )NzExpected object of length z, got: r`   r   )   as_py)r   
fill_value)r   
_broadcastr   rl   numpyrW   hasattrr   rd   chunked_arrayfull)rY   r   length	len_otherrm   npvaluerZ   rZ   r[   _extract_comparand[  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)field_columnFr   )	rl   r   r   r   r  
set_columnr   append_columnr   )rY   r   native_framenew_columnsr   	col_valuecol_namer  rZ   rZ   r[   with_columnsj  s   


zArrowDataFrame.with_columnskeysdrop_null_keysr(   c                G  s   ddl m} || ||dS )Nr   r'   )r  )narwhals._arrow.group_byr(   )rY   r  r  r(   rZ   rZ   r[   group_by  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@   rA   rB   )antisemir@   leftr  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   LITERALrl   joindrop)
rY   r   r  r  r  r  how_to_join_mapplx	key_tokenr#  rZ   rZ   r[   r(    sL   
zArrowDataFrame.joinr   strictc                C  s$   t | ||d}| j| j|ddS )N)compliant_framer   r-  Fr   )r   r   rl   r)  )rY   r   r-  to_droprZ   rZ   r[   r)    s   zArrowDataFrame.dropsubsetc                 C  s@   |d u r| j | j ddS |  }| ||j|   S r   )r   rl   	drop_nullr   filterany_horizontalr   is_null)rY   r0  r+  rZ   rZ   r[   
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 )Nr7  	ascendingc                   s   g | ]}| fqS rZ   rZ   )r   keyorderrZ   r[   r         z'ArrowDataFrame.sort.<locals>.<listcomp>c                 S  s    g | ]\}}||rd ndfqS )r7  r:  rZ   )r   r;  is_descendingrZ   rZ   r[   r     s    at_endat_start)null_placementFr   )rc   rO   r   r   rl   sort_by)rY   r7  r9  r6  sortingrB  rZ   r<  r[   sort  s   
zArrowDataFrame.sortpd.DataFramec                 C  s
   | j  S rR   )rl   	to_pandasr   rZ   rZ   r[   rG    r   zArrowDataFrame.to_pandaspl.DataFramec                 C  s   dd l }|| jS r   )polarsrn   rl   )rY   plrZ   rZ   r[   	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 rZ   )to_numpyr   rZ   rZ   r[   r     r>  z+ArrowDataFrame.to_numpy.<locals>.<listcomp>)r   column_stackrl   r   )rY   r   r   r  arrrZ   rZ   r[   rL    s   zArrowDataFrame.to_numpy	as_seriesdict[str, ArrowSeries]c                C  r   rR   rZ   rY   rO  rZ   rZ   r[   to_dict  r   zArrowDataFrame.to_dictdict[str, list[Any]]c                C  r   rR   rZ   rQ  rZ   rZ   r[   rR    r   -dict[str, ArrowSeries] | dict[str, list[Any]]c                  s8    j }t|j|j}|r fdd|D S dd |D S )Nc                   s"   i | ]\}}|t j| |d qS )r   )r   rj   r   r   r   r   rZ   r[   r     s    z*ArrowDataFrame.to_dict.<locals>.<dictcomp>c                 S  s   i | ]	\}}||  qS rZ   )r   rU  rZ   rZ   r[   r     s    )rl   r   rS   r   )rY   rO  r   names_and_valuesrZ   r   r[   rR    s   
c                 C  s:   | j }| j}tt|j}| ||||g|S rR   )	rl   r   rd   r~   r   r   r   r
  r   )rY   r   r   colsrow_indicesrZ   rZ   r[   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   )rc   r   r   rl   r   r2  )rY   rZ  mask_nativerZ   rZ   r[   r2    s   
zArrowDataFrame.filternc                 C  sJ   | j }|dkr| j|d|ddS |j}| j|dtd|| ddS r\  )rl   r   r   r   maxrY   r^  r   r   rZ   rZ   r[   head  s   zArrowDataFrame.headc                 C  sJ   | j }|dkr|j}| j|td|| ddS | j|t|ddS r\  )rl   r   r   r   r_  absr`  rZ   rZ   r[   tail  s   zArrowDataFrame.tail)backendrd  Implementation | NoneCompliantLazyFrame[Any, Any]c          
      C  s   |d u r| S |t ju r%dd l}ddlm} | j}||dt|| jdS |t j	u rGdd l
}ddlm} |td|| j t|| jdS |t ju rldd l}dd lm} ddlm}	 |	|| j t|| jdS t)Nr   )DuckDBLazyFramer   r   )PolarsLazyFramerH  )DaskLazyFrame)r   DUCKDBduckdbnarwhals._duckdb.dataframerg  rl   re   r   rX   POLARSrI  narwhals._polars.dataframerh  r   rn   lazyDASKdaskdask.dataframe	dataframenarwhals._dask.dataframeri  from_pandasrG  r   )
rY   rd  rk  rg  r   rJ  rh  rq  ddri  rZ   rZ   r[   ro  &  s:   


zArrowDataFrame.lazykwargs!CompliantDataFrame[Any, Any, Any]c           	      K  s   |t ju s	|d u rddlm} || j| j| jddS |t ju r9dd l}ddl	m
} || j t jt|| jddS |t ju rYdd l}ddlm} |td|| jt|| jd	S d
| }t|)Nr   )rH   Fr|   )PandasLikeDataFrame)implementationrK   rM   rN   )PolarsDataFramerH  r   zUnsupported `backend` value: )r   rU   narwhals._arrow.dataframerH   rl   rW   rX   PANDASpandasnarwhals._pandas_like.dataframery  rG  r   rm  rI  rn  r{  r   rn   r   )	rY   rd  rw  rH   pdry  rJ  r{  rm   rZ   rZ   r[   collectM  s8   


zArrowDataFrame.collectc                 C  s   | j | jddS r   r   rl   r   rZ   rZ   r[   clonew  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   
ValueErrorrl   rc   r   r   r   )rY   r   r  r  rm   _colrZ   rZ   r[   itemz  s   
zArrowDataFrame.itemmappingMapping[str, str]c                   s*   | j } fdd|jD }| ||S )Nc                   s   g | ]}  ||qS rZ   )getr   cr  rZ   r[   r         z)ArrowDataFrame.rename.<locals>.<listcomp>)rl   rS   r   rename_columns)rY   r  r   new_colsrZ   r  r[   rename  s   zArrowDataFrame.renamefilestr | Path | BytesIOc                 C  s   dd l m} || j| d S r   )pyarrow.parquetparquetwrite_tablerl   )rY   r  pprZ   rZ   r[   write_parquet  s   zArrowDataFrame.write_parquetc                 C  r   rR   rZ   rY   r  rZ   rZ   r[   	write_csv  r   zArrowDataFrame.write_csvc                 C  r   rR   rZ   r  rZ   rZ   r[   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csvrd   BufferOutputStreamr  rl   getvalue
to_pybytesdecode)rY   r  pa_csv
csv_bufferrZ   rZ   r[   r    s   c                 C  s   t d| jd}ttt| }| j||| j	|df|dfg}t
tt||| d t||| d }tj|| dS )Nr  r  minr_  _min_maxra   )r   r   rd   r~   r   r   rl   r
  r  	aggregater   pcand_is_inr   rj   )rY   	col_token	row_indexkeep_idxrl   rZ   rZ   r[   	is_unique  s   zArrowDataFrame.is_unique)maintain_orderkeepr8   r  c             	   C  s   dd l }t| j| t|p| j}|dv rQdddd}|| }td| jd}| j|t|	t
| |||fg| d| }| j| j|d	d
S | j|  }	|  }
| |
j|	S )Nr   >   anylastfirstr  r_  )r  r  r  r  r  _Fr   )r   r   r   r   r   rl   r
  rd   r~   aranger   r  r  r  r   r   r   r  r   r2  _expr_from_series)rY   r0  r  r  r  agg_func_mapagg_funcr  keep_idx_nativer  r+  rZ   rZ   r[   unique  s$   	zArrowDataFrame.uniqueoffsetc                 C  s   | j | j|d | ddS r   r  )rY   r^  r  rZ   rZ   r[   gather_every  s   zArrowDataFrame.gather_everyc                 C  r   rR   r   r   rZ   rZ   r[   rt     r   zArrowDataFrame.to_arrowfractionfloat | Nonewith_replacementseedc          
      C  sl   dd l }t| }|d u r|d urt|| }|jj|d}|d|}|j|||d}	| j| j	|	ddS )Nr   )r  )sizereplaceFr   )
r   r   r   randomdefault_rngr  choicer   rl   r   )
rY   r^  r  r  r  r  r   rngidxmaskrZ   rZ   r[   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 rZ   rZ   r  )index_rZ   r[   r     r  z*ArrowDataFrame.unpivot.<locals>.<listcomp>)r_   r   r   rF   )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 rR   )rl   r  )r   idx_colr   rZ   r[   r     s    z4ArrowDataFrame.unpivot.<locals>.<listcomp>.<genexpr>r+   r   )rd   ru   r   r   r~   stringrl   r  )r   on_colr  n_rowsr   rY   rZ   r[   r     s     
)r   r   rW   r   rd   concat_tablesr   )rY   r  r   r  r  on_concatrZ   r  r[   unpivot  s    
zArrowDataFrame.unpivot)
rI   rJ   rK   rL   rM   r   rN   rO   rP   rQ   )r]   r.   r^   r=   rP   r#   )r]   ro   r^   r=   rp   rq   rP   r#   )ry   rz   rP   r{   )r]   rJ   r^   r=   rP   r#   )r]   r:   r^   r=   rp   r}   rP   r#   )rP   r*   )rP   r"   )rP   r#   )rM   r   rP   r#   )r   rJ   rN   rO   rP   r#   )rP   r   )rP   r   )r   r   rP   r   )r   r   rP   r   )r   r   rP   r   )r   rO   rP   r   )rP   r   )r   rO   r   r   rP   r   )r   r   rP   r   )r   r   r   r   rP   r:   )r   r   rP   r#   )r   r   rP   r#   )r   r<   rP   r#   )r   r   rP   r#   )r   r   rP   r#   )r   r   rP   r#   )rP   r   )r   r7   rP   r   )rP   r   )rS   r   rP   r#   )rY   rH   r   r&   rP   rH   )r   r   rP   r+   )r  r   r  rO   rP   r(   )r   r#   r  r4   r  r  r  r  r  r   rP   r#   )r   r   r-  rO   rP   r#   )rY   rH   r0  r  rP   rH   )r6  r   r7  r8  r9  rO   rP   r#   )rP   rF  )rP   rH  rR   )rO  r   rP   rP  )rO  r   rP   rS  )rO  rO   rP   rT  )r   r   rP   r#   )rY   rH   rZ  r[  rP   rH   )r^  r   rP   r#   )rd  re  rP   rf  )rd  re  rw  r   rP   rx  )r   r  r  r  rP   r   )r  r  rP   r#   )r  r  rP   rQ   )r  rQ   rP   r   )r  r  rP   r  )rP   r   )
rY   rH   r0  r  r  r8   r  r   rP   rH   )r^  r   r  r   rP   r#   )rP   rJ   )
r^  r  r  r  r  rO   r  r  rP   r#   )
r  r  r   r  r  r   r  r   rP   r#   )Hrg   
__module____qualname__r\   classmethodrn   rx   staticmethodrb   rj   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  r  r  r(  	join_asofr)  r5  rE  rG  rK  rL  rR  rY  r2  ra  rc  ro  r  r  r  r  r  r  r  r  r  rt   r  r  pivotrZ   rZ   rZ   r[   rH   T   s    


3	
'*
!
%rH   )r   r&   rJ   zpa.ChunkedArray[Any])\
__future__r   	functoolsr   typingr   r   r   r   r   r	   r
   r   r   pyarrowrd   pyarrow.computecomputer  r  r   narwhals._arrow.utilsr   r   narwhals._compliantr   narwhals._expression_parsingr   narwhals.dependenciesr   narwhals.exceptionsr   narwhals.utilsr   r   r   r   r   r   r   r   r   r   r   r   ior    pathlibr!   r   r"   r~  r  rI  rJ  typing_extensionsr#   r$   r%   narwhals._arrow.exprr&   r  r(   r   r*   narwhals._arrow.typingr+   r,   r-   narwhals._translater.   narwhals.dtypesr/   rs   r1   narwhals.typingr2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   rC   __annotations__rG   rH   rZ   rZ   rZ   r[   <module>   s    

