o
    h0B                     @  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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% d d lm&Z& d d!lm'Z' erxd d"l(m)Z) d d#l*m+Z+ d d$l,Z-d d$l.Z/d d$l0Z1d d%l2m3Z3 d d&l2m4Z4 d d'l5m6Z6 d d(l5m7Z7 d d)l8m9Z9 d d*lm:Z: d d+l;m<Z< d d,l=m>Z> d d-l?m@Z@ d d.l?mAZA d d/l?mBZB d d0l?mCZC d d1l?mDZD d d2l?mEZE d d3l?mFZF d d4l?mGZG d d5l?mHZH d d6l?mIZI d d7l?mJZJ d d8l?mKZK d d9l?mLZL d d:l?mMZM d d;lmNZN d d<lmOZO eZPd=eQd>< g d?ZRed@ZSdAZTd=eQdB< G dCdD dDedE edFe	eUef f edG ee ee ee
eeef 	ZVG dHdI dIee ee e
eef ZWG dJdK dKeVeeef eWeef e
eeeef ZXd$S )L    )annotations)chain)TYPE_CHECKING)Any)Iterator)Literal)Mapping)Protocol)Sequence)Sized)TypeVar)overload)CompliantExprT_contra)CompliantSeriesT)
EagerExprT)EagerSeriesT)NativeFrameT)NativeSeriesT)!evaluate_output_names_and_aliases)ArrowConvertible)DictConvertible)
FromNative)NumpyConvertible)Version)_StoresNative)
deprecated)is_compliant_series)is_index_selector)is_range)is_sequence_like)is_sized_multi_index_selector)is_slice_index)is_slice_none)BytesIO)PathN)Self)	TypeAlias)CompliantGroupBy)DataFrameGroupBy)EagerNamespace)IntoArrowTable)DType)Schema)AsofJoinStrategy)JoinStrategy)LazyUniqueKeepStrategy)MultiColSelector)MultiIndexSelector)PivotAgg)SingleIndexSelector)SizedMultiIndexSelector)SizedMultiNameSelector)SizeUnit)UniqueKeepStrategy)_2DArray)_SliceIndex)
_SliceName)Implementation)_FullContextr&   
Incomplete)CompliantDataFrameCompliantLazyFrameEagerDataFrameT2dict[str, CompliantSeriesT] | dict[str, list[Any]]_ToDictc                   @  s  e Zd ZU ded< ded< ded< ded< dddZ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dd,d-Zdd0d1Zdd3d4Zedd5d6Zedd8d9Zedd;d<Zedd>d?Zdd@dAZddFdGZddHdIZddMdNZddQdRZddVdWZddXdYZdd\d]ZddadbZddedfZddjdkZddldmZ ddrdsZ!ddudvZ"ddzd{Z#dd|d}Z$dddZ%dddZ&dddZ'dddZ(d ddZ)dddZ*dddZ+dddZ,dddZ-dddZ.dddZ/dddZ0dddZ1dddZ2e3dddZ4e3d	ddZ4d
ddZ4ddǜddd̄Z5dddЄZ6ddd҄Z7dddԄZ8e3ddd؄Z9e3ddd؄Z9ddd؄Z9dddބZ:dS (  r>   r   _native_framer;   _implementationtuple[int, ...]_backend_versionr   _versionreturnr%   c                 C     d S N selfrL   rL   Q/var/www/vscode/kcb/lib/python3.10/site-packages/narwhals/_compliant/dataframe.py__narwhals_dataframe__]       z)CompliantDataFrame.__narwhals_dataframe__r   c                 C  rJ   rK   rL   rM   rL   rL   rO   __narwhals_namespace__^   rQ   z)CompliantDataFrame.__narwhals_namespace__datar*   contextr<   c               C  rJ   rK   rL   clsrS   rT   rL   rL   rO   
from_arrow_      zCompliantDataFrame.from_arrowMapping[str, Any]schema#Mapping[str, DType] | Schema | Nonec               C  rJ   rK   rL   rV   rS   rT   rZ   rL   rL   rO   	from_dicta      zCompliantDataFrame.from_dictc               C  rJ   rK   rL   rU   rL   rL   rO   from_nativej   rX   zCompliantDataFrame.from_nativer8   3Mapping[str, DType] | Schema | Sequence[str] | Nonec               C  rJ   rK   rL   r\   rL   rL   rO   
from_numpyl   r^   zCompliantDataFrame.from_numpydtypecopybool | Nonec                C  rJ   rK   rL   )rN   rb   rc   rL   rL   rO   	__array__u   rQ   zCompliantDataFrame.__array__itemtuple[SingleIndexSelector | MultiIndexSelector[CompliantSeriesT], MultiIndexSelector[CompliantSeriesT] | MultiColSelector[CompliantSeriesT]]c                 C  rJ   rK   rL   )rN   rf   rL   rL   rO   __getitem__v      zCompliantDataFrame.__getitem__column_namesstrc                 G     dS z)`select` where all args are column names.NrL   rN   rj   rL   rL   rO   simple_select}      z CompliantDataFrame.simple_selectexprsr   c                 G  s
   | j | S )k`select` where all args are aggregations or literals.

        (so, no broadcasting is necessary).
        )selectrN   rq   rL   rL   rO   	aggregate   s   
zCompliantDataFrame.aggregateversionc                 C  rJ   rK   rL   rN   rv   rL   rL   rO   _with_version   rQ   z CompliantDataFrame._with_versionc                 C     | j S rK   rD   rM   rL   rL   rO   native      zCompliantDataFrame.nativeSequence[str]c                 C  rJ   rK   rL   rM   rL   rL   rO   columns   rX   zCompliantDataFrame.columnsMapping[str, DType]c                 C  rJ   rK   rL   rM   rL   rL   rO   rZ      rX   zCompliantDataFrame.schematuple[int, int]c                 C  rJ   rK   rL   rM   rL   rL   rO   shape   rX   zCompliantDataFrame.shapec                 C  rJ   rK   rL   rM   rL   rL   rO   clone   rQ   zCompliantDataFrame.clonebackendImplementation | Nonekwargs!CompliantDataFrame[Any, Any, Any]c                 K  rJ   rK   rL   rN   r   r   rL   rL   rO   collect   rp   zCompliantDataFrame.collectc                 C  rJ   rK   rL   rM   rL   rL   rO   collect_schema   rQ   z!CompliantDataFrame.collect_schemar~   strictboolc                C  rJ   rK   rL   rN   r~   r   rL   rL   rO   drop   rQ   zCompliantDataFrame.dropsubsetSequence[str] | Nonec                 C  rJ   rK   rL   rN   r   rL   rL   rO   
drop_nulls   rQ   zCompliantDataFrame.drop_nullsunitr6   int | floatc                 C  rJ   rK   rL   )rN   r   rL   rL   rO   estimated_size   rQ   z!CompliantDataFrame.estimated_sizec                 C  rJ   rK   rL   rN   r~   rL   rL   rO   explode   rQ   zCompliantDataFrame.explode	predicate"CompliantExprT_contra | Incompletec                 C  rJ   rK   rL   rN   r   rL   rL   rO   filter   rQ   zCompliantDataFrame.filternintoffsetc                 C  rJ   rK   rL   rN   r   r   rL   rL   rO   gather_every   rQ   zCompliantDataFrame.gather_everynamer   c                 C  rJ   rK   rL   rN   r   rL   rL   rO   
get_column   rQ   zCompliantDataFrame.get_columnkeysdrop_null_keysDataFrameGroupBy[Self, Any]c                G  rJ   rK   rL   rN   r   r   rL   rL   rO   group_by   rp   zCompliantDataFrame.group_byc                 C  rJ   rK   rL   rN   r   rL   rL   rO   head   rQ   zCompliantDataFrame.headrow
int | Nonecolumnint | str | Nonec                 C  rJ   rK   rL   )rN   r   r   rL   rL   rO   rf      rQ   zCompliantDataFrame.itemIterator[CompliantSeriesT]c                 C  rJ   rK   rL   rM   rL   rL   rO   iter_columns   rQ   zCompliantDataFrame.iter_columnsnamedbuffer_size7Iterator[tuple[Any, ...]] | Iterator[Mapping[str, Any]]c                C  rJ   rK   rL   )rN   r   r   rL   rL   rO   	iter_rows   rp   zCompliantDataFrame.iter_rowsc                 C  rJ   rK   rL   rM   rL   rL   rO   	is_unique   rQ   zCompliantDataFrame.is_uniqueotherhowr.   left_onright_onsuffixc                C  rJ   rK   rL   rN   r   r   r   r   r   rL   rL   rO   join   r^   zCompliantDataFrame.join
str | Noneby_leftby_rightstrategyr-   c                C  rJ   rK   rL   rN   r   r   r   r   r   r   r   rL   rL   rO   	join_asof      
zCompliantDataFrame.join_asofCompliantLazyFrame[Any, Any]c                C  rJ   rK   rL   )rN   r   rL   rL   rO   lazy   rQ   zCompliantDataFrame.lazyonindexvaluesaggregate_functionPivotAgg | Nonesort_columns	separatorc                C  rJ   rK   rL   )rN   r   r   r   r   r   r   rL   rL   rO   pivot   s   	zCompliantDataFrame.pivotmappingMapping[str, str]c                 C  rJ   rK   rL   rN   r   rL   rL   rO   rename   rQ   zCompliantDataFrame.renametuple[Any, ...]c                 C  rJ   rK   rL   )rN   r   rL   rL   rO   r      rQ   zCompliantDataFrame.row7Sequence[tuple[Any, ...]] | Sequence[Mapping[str, Any]]c                C  rJ   rK   rL   )rN   r   rL   rL   rO   rows   rp   zCompliantDataFrame.rowsfractionfloat | Nonewith_replacementseedc                C  rJ   rK   rL   )rN   r   r   r   r   rL   rL   rO   sample   s   zCompliantDataFrame.samplec                 G  rJ   rK   rL   rt   rL   rL   rO   rs      rQ   zCompliantDataFrame.selectby
descendingbool | Sequence[bool]
nulls_lastc                G  rJ   rK   rL   rN   r   r   r   rL   rL   rO   sort   rp   zCompliantDataFrame.sortc                 C  rJ   rK   rL   r   rL   rL   rO   tail   rQ   zCompliantDataFrame.tailpa.Tablec                 C  rJ   rK   rL   rM   rL   rL   rO   to_arrow   rQ   zCompliantDataFrame.to_arrowpd.DataFramec                 C  rJ   rK   rL   rM   rL   rL   rO   	to_pandas   rQ   zCompliantDataFrame.to_pandaspl.DataFramec                 C  rJ   rK   rL   rM   rL   rL   rO   	to_polars   rQ   zCompliantDataFrame.to_polars	as_seriesLiteral[True]dict[str, CompliantSeriesT]c                C  rJ   rK   rL   rN   r   rL   rL   rO   to_dict   rX   zCompliantDataFrame.to_dictLiteral[False]dict[str, list[Any]]c                C  rJ   rK   rL   r   rL   rL   rO   r      rX   rB   c                C  rJ   rK   rL   r   rL   rL   rO   r      rp   N)maintain_orderkeepr7   r   c                C  rJ   rK   rL   )rN   r   r   r   rL   rL   rO   unique   ri   zCompliantDataFrame.uniquevariable_name
value_namec                 C  rJ   rK   rL   rN   r   r   r   r   rL   rL   rO   unpivot   ri   zCompliantDataFrame.unpivotc                 G  rJ   rK   rL   rt   rL   rL   rO   with_columns   rQ   zCompliantDataFrame.with_columnsc                 C  rJ   rK   rL   r   rL   rL   rO   with_row_index   rQ   z!CompliantDataFrame.with_row_indexfileNonec                 C  rJ   rK   rL   rN   r   rL   rL   rO   	write_csv   rX   zCompliantDataFrame.write_csvstr | Path | BytesIOc                 C  rJ   rK   rL   r   rL   rL   rO   r      rX   str | Path | BytesIO | Nonec                 C  rJ   rK   rL   r   rL   rL   rO   r      rQ   c                 C  rJ   rK   rL   r   rL   rL   rO   write_parquet   rQ   z CompliantDataFrame.write_parquetrI   r%   rI   r   )rS   r*   rT   r<   rI   r%   )rS   rY   rT   r<   rZ   r[   rI   r%   rS   r   rT   r<   rI   r%   )rS   r8   rT   r<   rZ   r`   rI   r%   )rb   r   rc   rd   rI   r8   )rf   rg   rI   r%   rj   rk   rI   r%   rq   r   rI   r%   rv   r   rI   r%   rI   r   rI   r}   rI   r   )rI   r   r   r   r   r   rI   r   r~   r}   r   r   rI   r%   r   r   rI   r%   )r   r6   rI   r   r~   r}   rI   r%   r   r   rI   r%   r   r   r   r   rI   r%   )r   rk   rI   r   )r   rk   r   r   rI   r   r   r   rI   r%   )r   r   r   r   rI   r   )rI   r   )r   r   r   r   rI   r   )rI   r   )r   r%   r   r.   r   r   r   r   r   rk   rI   r%   r   r%   r   r   r   r   r   r   r   r   r   r-   r   rk   rI   r%   )r   r   rI   r   )r   r}   r   r   r   r   r   r   r   r   r   rk   rI   r%   r   r   rI   r%   )r   r   rI   r   )r   r   rI   r   )
r   r   r   r   r   r   r   r   rI   r%   r   rk   r   r   r   r   rI   r%   )rI   r   )rI   r   )rI   r   )r   r   rI   r   )r   r   rI   r   )r   r   rI   rB   )r   r   r   r7   r   rd   rI   r%   
r   r   r   r   r   rk   r   rk   rI   r%   r   rk   rI   r%   )r   r   rI   rk   )r   r   rI   r   )r   r   rI   r   );__name__
__module____qualname____annotations__rP   rR   classmethodrW   r]   r_   ra   re   rh   ro   ru   rx   propertyr{   r~   rZ   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   rL   rL   rO   r>   O   s   
 	
























	





r>   )r8   r8   z_ToDict[CompliantSeriesT])r   r*   c                   @  sz  e Zd ZU ded< ded< ded< ded< dddZdddZedddZdddZdddZ	dddZ
edd d!Zedd#d$Zedd&d'Zdd)d*Zdd/d0Zdd1d2Zdd6d7Zdd:d;Zdd<d=Zdd@dAZedBddFdGZddKdLZddMdNZddUdVZdd\d]Zdd`daZddbdcZddhdiZedjddkdlZddodpZ ddudvZ!ddwdxZ"ddzd{Z#dd}d~Z$dS )r?   r   rD   r;   rE   rF   rG   r   rH   rI   r%   c                 C  rJ   rK   rL   rM   rL   rL   rO   __narwhals_lazyframe__  rQ   z)CompliantLazyFrame.__narwhals_lazyframe__r   c                 C  rJ   rK   rL   rM   rL   rL   rO   rR   	  rQ   z)CompliantLazyFrame.__narwhals_namespace__rS   rT   r<   c               C  rJ   rK   rL   rU   rL   rL   rO   r_     rX   zCompliantLazyFrame.from_nativerj   rk   c                 G  rl   rm   rL   rn   rL   rL   rO   ro     rp   z CompliantLazyFrame.simple_selectrq   r   c                 G  rl   )rr   NrL   rt   rL   rL   rO   ru     s   zCompliantLazyFrame.aggregaterv   c                 C  rJ   rK   rL   rw   rL   rL   rO   rx     rQ   z CompliantLazyFrame._with_versionc                 C  ry   rK   rz   rM   rL   rL   rO   r{     r|   zCompliantLazyFrame.nativer}   c                 C  rJ   rK   rL   rM   rL   rL   rO   r~     rX   zCompliantLazyFrame.columnsr   c                 C  rJ   rK   rL   rM   rL   rL   rO   rZ   !  rX   zCompliantLazyFrame.schemaIterator[Any]c                 C  rJ   rK   rL   rM   rL   rL   rO   _iter_columns#  rQ   z CompliantLazyFrame._iter_columnsr   r   r   r   c                 K  rJ   rK   rL   r   rL   rL   rO   r   $  rp   zCompliantLazyFrame.collectc                 C  rJ   rK   rL   rM   rL   rL   rO   r   '  rQ   z!CompliantLazyFrame.collect_schemar~   r   r   c                C  rJ   rK   rL   r   rL   rL   rO   r   (  rQ   zCompliantLazyFrame.dropr   r   c                 C  rJ   rK   rL   r   rL   rL   rO   r   )  rQ   zCompliantLazyFrame.drop_nullsc                 C  rJ   rK   rL   r   rL   rL   rO   r   *  rQ   zCompliantLazyFrame.exploder   r   c                 C  rJ   rK   rL   r   rL   rL   rO   r   +  rQ   zCompliantLazyFrame.filterzO`LazyFrame.gather_every` is deprecated and will be removed in a future version.r   r   r   c                 C  rJ   rK   rL   r   rL   rL   rO   r   ,  s   zCompliantLazyFrame.gather_everyr   r   CompliantGroupBy[Self, Any]c                G  rJ   rK   rL   r   rL   rL   rO   r   0  rp   zCompliantLazyFrame.group_byc                 C  rJ   rK   rL   r   rL   rL   rO   r   3  rQ   zCompliantLazyFrame.headr   r   1Literal['left', 'inner', 'cross', 'anti', 'semi']r   r   r   c                C  rJ   rK   rL   r   rL   rL   rO   r   4  r^   zCompliantLazyFrame.joinr   r   r   r   r-   c                C  rJ   rK   rL   r   rL   rL   rO   r   =  r   zCompliantLazyFrame.join_asofr   r   c                 C  rJ   rK   rL   r   rL   rL   rO   r   H  rQ   zCompliantLazyFrame.renamec                 G  rJ   rK   rL   rt   rL   rL   rO   rs   I  rQ   zCompliantLazyFrame.selectr   r   r   r   c                G  rJ   rK   rL   r   rL   rL   rO   r   J  rp   zCompliantLazyFrame.sortzG`LazyFrame.tail` is deprecated and will be removed in a future version.c                 C  rJ   rK   rL   r   rL   rL   rO   r   M  rX   zCompliantLazyFrame.tailr   r/   c                C  rJ   rK   rL   )rN   r   r   rL   rL   rO   r   O  rp   zCompliantLazyFrame.uniquer   r   r   r   c                 C  rJ   rK   rL   r   rL   rL   rO   r   R  ri   zCompliantLazyFrame.unpivotc                 G  rJ   rK   rL   rt   rL   rL   rO   r   Y  rQ   zCompliantLazyFrame.with_columnsr   c                 C  rJ   rK   rL   r   rL   rL   rO   r   Z  rQ   z!CompliantLazyFrame.with_row_indexexprc                C      || }t |dksJ |d S )N   r   lenrN   r  resultrL   rL   rO   _evaluate_expr[  s   z!CompliantLazyFrame._evaluate_exprNr   r   r   r   r  r  r  r  r  )rI   r  r  r  r  r	  r
  r  )r   rk   r   r   rI   r  r  )r   r%   r   r  r   r   r   r   r   rk   rI   r%   r  r  r  )r   r   r   r/   rI   r%   r  r  )r  r   rI   r   )%r  r  r  r  r  rR   r  r_   ro   ru   rx   r  r{   r~   rZ   r  r   r   r   r   r   r   r   r   r   r   r   r   r   rs   r   r   r   r   r   r   r$  rL   rL   rL   rO   r?      sV   
 















	






r?   c                   @  s   e Zd Zd2ddZd3dd	Zd4ddZd5ddZd6ddZed7ddZ	d8ddZ
d9d!d"Zd:d#d$Zd;d&d'Zd<d(d)Zd=d+d,Zd>d/d0Zd1S )?r@   rI   KEagerNamespace[Self, EagerSeriesT, EagerExprT, NativeFrameT, NativeSeriesT]c                 C  rJ   rK   rL   rM   rL   rL   rO   rR   f  rp   z%EagerDataFrame.__narwhals_namespace__r  r   r   c                C  r  )z6Evaluate `expr` and ensure it has a **single** output.r  r   r   r"  rL   rL   rO   r$  j  s   zEagerDataFrame._evaluate_exprrq   Sequence[EagerSeriesT]c                   s   t t fdd|D S )Nc                 3  s    | ]}  |V  qd S rK   )_evaluate_into_expr).0r  rM   rL   rO   	<genexpr>r      z6EagerDataFrame._evaluate_into_exprs.<locals>.<genexpr>)listr   from_iterablert   rL   rM   rO   _evaluate_into_exprsp  s   z#EagerDataFrame._evaluate_into_exprsc                C  sN   t || g \}}|| }t|dd |D  }kr%d| d| }t||S )a  Return list of raw columns.

        For eager backends we alias operations at each step.

        As a safety precaution, here we can check that the expected result names match those
        we were expecting from the various `evaluate_output_names` / `alias_output_names` calls.

        Note that for PySpark / DuckDB, we are less free to liberally set aliases whenever we want.
        c                 S  s   g | ]}|j qS rL   )r   )r(  srL   rL   rO   
<listcomp>  s    z6EagerDataFrame._evaluate_into_expr.<locals>.<listcomp>z"Safety assertion failed, expected z, got )r   r+  AssertionError)rN   r  _aliasesr#  result_aliasesmsgrL   rL   rO   r'  t  s   
z"EagerDataFrame._evaluate_into_exprr   r   c                C  rl   )z@Extract native Series, broadcasting to `len(self)` if necessary.NrL   )rN   r   rL   rL   rO   _extract_comparand  rp   z!EagerDataFrame._extract_comparandrS   r8   r~   r   	list[str]c                C  s    t |pdd t| jd D S )Nc                 s  s    | ]}d | V  qdS )column_NrL   )r(  xrL   rL   rO   r)    r*  z5EagerDataFrame._numpy_column_names.<locals>.<genexpr>r  )r+  ranger   )rS   r~   rL   rL   rO   _numpy_column_names  s    z"EagerDataFrame._numpy_column_namesr   &SizedMultiIndexSelector[NativeSeriesT]r%   c                 C  rJ   rK   rL   rN   r   rL   rL   rO   _gather  rQ   zEagerDataFrame._gather_SliceIndex | rangec                 C  rJ   rK   rL   r<  rL   rL   rO   _gather_slice  rQ   zEagerDataFrame._gather_slicec                 C  rJ   rK   rL   r   rL   rL   rO   _select_multi_index  rp   z"EagerDataFrame._select_multi_index%SizedMultiNameSelector[NativeSeriesT]c                 C  rJ   rK   rL   r   rL   rL   rO   _select_multi_name  rp   z!EagerDataFrame._select_multi_namec                 C  rJ   rK   rL   r   rL   rL   rO   _select_slice_index  rQ   z"EagerDataFrame._select_slice_indexr:   c                 C  rJ   rK   rL   r   rL   rL   rO   _select_slice_name  rQ   z!EagerDataFrame._select_slice_namerf   tuple[SingleIndexSelector | MultiIndexSelector[EagerSeriesT], MultiIndexSelector[EagerSeriesT] | MultiColSelector[EagerSeriesT]]c                 C  sT  |\}}| }t |sgt|trt|dkr| S t|r<t|s%t|r+||}n<t	|r6| 
|j}n1|
|}n+t|trG||}n t	|rR| |j}nt|r\| |}ndt| }t|t |st|trx||g}|S t|ttfr||}|S t	|r||j}|S t|r||}|S dt| }t||S )Nr   z'Unreachable code, got unexpected type: )r"   
isinstancer   r!  rs   r   r!   r   rC  r   r@  r{   slicerD  rB  r   typer0  r   r=  r9  r?  r    )rN   rf   r   r~   	compliantr4  rL   rL   rO   rh     sF   


	
zEagerDataFrame.__getitem__N)rI   r%  )r  r   rI   r   )rq   r   rI   r&  )r  r   rI   r&  )r   r   rI   r   )rS   r8   r~   r   rI   r6  )r   r;  rI   r%   )r   r>  rI   r%   )r~   r;  rI   r%   )r~   rA  rI   r%   )r~   r>  rI   r%   )r~   r:   rI   r%   )rf   rE  rI   r%   )r  r  r  rR   r$  r-  r'  r5  staticmethodr:  r=  r?  r@  rB  rC  rD  rh   rL   rL   rL   rO   r@   a  s    










r@   )Y
__future__r   	itertoolsr   typingr   r   r   r   r   r	   r
   r   r   r   narwhals._compliant.typingr   r   r   r   r   r   narwhals._expression_parsingr   narwhals._translater   r   r   r   narwhals.utilsr   r   r   r   r   r   r   r    r!   r"   ior#   pathlibr$   pandaspdpolarsplpyarrowpatyping_extensionsr%   r&   narwhals._compliant.group_byr'   r(   narwhals._compliant.namespacer)   r*   narwhals.dtypesr+   narwhals.schemar,   narwhals.typingr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r  __all__rA   rC   rk   r>   r?   r@   rL   rL   rL   rO   <module>   s    
 
0

c
