o
    Lhw@                     @  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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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.m/Z/ e
rd d	l0m1Z1 d d
l2m3Z3 d dl4Z5d dl6Z7d dl8Z9d dl:m;Z;m<Z< d dl=m>Z>m?Z? d dl@mAZA d dlmBZB d dlCmDZDmEZE d dl$mFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZM d dlNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z] eZ^de_d< g dZ`edZadZbde_d< G dd ded edeecef f ed  e'e ee e e! eeeeee!f 
ZdG d!d" d"e'e ee e e! eeee!f ZeG d#d$ d$edeeed%f eeedd%f e%eeeeef ZfdS )&    )annotations)IteratorMappingSequenceSized)chain)TYPE_CHECKINGAnyLiteralProtocolTypeVaroverload)
CompliantDataFrameAnyCompliantExprT_contraCompliantLazyFrameAnyCompliantSeriesT
EagerExprTEagerSeriesTNativeDataFrameTNativeFrameTNativeLazyFrameTNativeSeriesT)ArrowConvertibleDictConvertible
FromNativeNumpyConvertible
ToNarwhalsToNarwhalsT_co)assert_never)ValidateBackendVersionVersion_StoresNativecheck_columns_exist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)_EagerAllowedImpl_LazyAllowedImpl)Implementation_LimitedContext)	DataFrame)DType)ColumnNotFoundError)AsofJoinStrategy
IntoSchemaJoinStrategyLazyUniqueKeepStrategyMultiColSelectorMultiIndexSelectorPivotAggSingleIndexSelectorSizedMultiIndexSelectorSizedMultiNameSelectorSizeUnitUniqueKeepStrategy_2DArray_SliceIndex
_SliceNamer-   
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< 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dd.d/Zdd1d2Zedd3d4Zedd6d7Zedd9d:Zedd<d=Zdd>d?ZddDdEZddFdGZddKdLZddOdPZddTdUZddVdWZddZd[Zdd_d`ZddcddZddidjZddkdlZ ddqdrZ!ddtduZ"ddydzZ#dd{d|Z$dddZ%dddZ&dddZ'd dd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 (  rI   r   _native_framer4   _implementationr    _versionreturnr,   c                 C     d S N selfrU   rU   ^/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/narwhals/_compliant/dataframe.py__narwhals_dataframe__d       z)CompliantDataFrame.__narwhals_dataframe__r	   c                 C  rS   rT   rU   rV   rU   rU   rX   __narwhals_namespace__e   rZ   z)CompliantDataFrame.__narwhals_namespace__datar1   contextr5   c               C  rS   rT   rU   clsr\   r]   rU   rU   rX   
from_arrowf      zCompliantDataFrame.from_arrowMapping[str, Any]schemaIntoSchema | Nonec               C  rS   rT   rU   r_   r\   r]   rc   rU   rU   rX   	from_dicth      zCompliantDataFrame.from_dictc               C  rS   rT   rU   r^   rU   rU   rX   from_nativeq   ra   zCompliantDataFrame.from_nativerE   !IntoSchema | Sequence[str] | Nonec               C  rS   rT   rU   re   rU   rU   rX   
from_numpys   rg   zCompliantDataFrame.from_numpydtypecopybool | Nonec                C  rS   rT   rU   )rW   rk   rl   rU   rU   rX   	__array__}   rZ   zCompliantDataFrame.__array__itemetuple[SingleIndexSelector | MultiIndexSelector[CompliantSeriesT], MultiColSelector[CompliantSeriesT]]c                 C  rS   rT   rU   )rW   ro   rU   rU   rX   __getitem__~      zCompliantDataFrame.__getitem__column_namesstrc                 G     dS z)`select` where all args are column names.NrU   rW   rs   rU   rU   rX   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rW   rz   rU   rU   rX   	aggregate   s   
zCompliantDataFrame.aggregateversionc                 C  rS   rT   rU   rW   r   rU   rU   rX   _with_version   rZ   z CompliantDataFrame._with_versionc                 C     | j S rT   rO   rV   rU   rU   rX   native      zCompliantDataFrame.nativeSequence[str]c                 C  rS   rT   rU   rV   rU   rU   rX   columns   ra   zCompliantDataFrame.columnsMapping[str, DType]c                 C  rS   rT   rU   rV   rU   rU   rX   rc      ra   zCompliantDataFrame.schematuple[int, int]c                 C  rS   rT   rU   rV   rU   rU   rX   shape   ra   zCompliantDataFrame.shapec                 C  rS   rT   rU   rV   rU   rU   rX   clone   rZ   zCompliantDataFrame.clonebackend_EagerAllowedImpl | Nonekwargsr   c                 K  rS   rT   rU   rW   r   r   rU   rU   rX   collect   ry   zCompliantDataFrame.collectc                 C  rS   rT   rU   rV   rU   rU   rX   collect_schema   rZ   z!CompliantDataFrame.collect_schemar   strictboolc                C  rS   rT   rU   rW   r   r   rU   rU   rX   drop   rZ   zCompliantDataFrame.dropsubsetSequence[str] | Nonec                 C  rS   rT   rU   rW   r   rU   rU   rX   
drop_nulls   rZ   zCompliantDataFrame.drop_nullsunitrC   int | floatc                 C  rS   rT   rU   )rW   r   rU   rU   rX   estimated_size   rZ   z!CompliantDataFrame.estimated_sizec                 C  rS   rT   rU   rW   r   rU   rU   rX   explode   rZ   zCompliantDataFrame.explode	predicate"CompliantExprT_contra | Incompletec                 C  rS   rT   rU   rW   r   rU   rU   rX   filter   rZ   zCompliantDataFrame.filternintoffsetc                 C  rS   rT   rU   )rW   r   r   rU   rU   rX   gather_every   rZ   zCompliantDataFrame.gather_everynamer   c                 C  rS   rT   rU   )rW   r   rU   rU   rX   
get_column   rZ   zCompliantDataFrame.get_columnkeys/Sequence[str] | Sequence[CompliantExprT_contra]drop_null_keysDataFrameGroupBy[Self, Any]c                C  rS   rT   rU   rW   r   r   rU   rU   rX   group_by      zCompliantDataFrame.group_byc                 C  rS   rT   rU   rW   r   rU   rU   rX   head   rZ   zCompliantDataFrame.headrow
int | Nonecolumnint | str | Nonec                 C  rS   rT   rU   )rW   r   r   rU   rU   rX   ro      rZ   zCompliantDataFrame.itemIterator[CompliantSeriesT]c                 C  rS   rT   rU   rV   rU   rU   rX   iter_columns   rZ   zCompliantDataFrame.iter_columnsnamedbuffer_size7Iterator[tuple[Any, ...]] | Iterator[Mapping[str, Any]]c                C  rS   rT   rU   )rW   r   r   rU   rU   rX   	iter_rows   ry   zCompliantDataFrame.iter_rowsc                 C  rS   rT   rU   rV   rU   rU   rX   	is_unique   rZ   zCompliantDataFrame.is_uniqueotherhowr;   left_onright_onsuffixc                C  rS   rT   rU   rW   r   r   r   r   r   rU   rU   rX   join   rg   zCompliantDataFrame.joinby_leftby_rightstrategyr9   c                C  rS   rT   rU   rW   r   r   r   r   r   r   r   rU   rU   rX   	join_asof      
zCompliantDataFrame.join_asof_LazyAllowedImpl | Noner   c                 C  rS   rT   rU   )rW   r   rU   rU   rX   lazy   rZ   zCompliantDataFrame.lazyonindexvaluesaggregate_functionPivotAgg | Nonesort_columns	separatorc                C  rS   rT   rU   )rW   r   r   r   r   r   r   rU   rU   rX   pivot   s   	zCompliantDataFrame.pivotmappingMapping[str, str]c                 C  rS   rT   rU   rW   r   rU   rU   rX   rename   rZ   zCompliantDataFrame.renametuple[Any, ...]c                 C  rS   rT   rU   )rW   r   rU   rU   rX   r      rZ   zCompliantDataFrame.row7Sequence[tuple[Any, ...]] | Sequence[Mapping[str, Any]]c                C  rS   rT   rU   )rW   r   rU   rU   rX   rows   ry   zCompliantDataFrame.rowsfractionfloat | Nonewith_replacementseedc                C  rS   rT   rU   )rW   r   r   r   r   rU   rU   rX   sample   s   zCompliantDataFrame.samplec                 G  rS   rT   rU   r}   rU   rU   rX   r|      rZ   zCompliantDataFrame.selectby
descendingbool | Sequence[bool]
nulls_lastc                G  rS   rT   rU   rW   r   r   r   rU   rU   rX   sort   ry   zCompliantDataFrame.sortc                 C  rS   rT   rU   r   rU   rU   rX   tail   rZ   zCompliantDataFrame.tailpa.Tablec                 C  rS   rT   rU   rV   rU   rU   rX   to_arrow   rZ   zCompliantDataFrame.to_arrowpd.DataFramec                 C  rS   rT   rU   rV   rU   rU   rX   	to_pandas   rZ   zCompliantDataFrame.to_pandaspl.DataFramec                 C  rS   rT   rU   rV   rU   rU   rX   	to_polars   rZ   zCompliantDataFrame.to_polars	as_seriesLiteral[True]dict[str, CompliantSeriesT]c                C  rS   rT   rU   rW   r   rU   rU   rX   to_dict   ra   zCompliantDataFrame.to_dictLiteral[False]dict[str, list[Any]]c                C  rS   rT   rU   r   rU   rU   rX   r      ra   rM   c                C  rS   rT   rU   r   rU   rU   rX   r      ry   N)maintain_orderkeeprD   r   c                C  rS   rT   rU   )rW   r   r   r   rU   rU   rX   unique   rr   zCompliantDataFrame.uniquevariable_name
value_namec                 C  rS   rT   rU   rW   r   r   r   r   rU   rU   rX   unpivot   rr   zCompliantDataFrame.unpivotc                 G  rS   rT   rU   r}   rU   rU   rX   with_columns   rZ   zCompliantDataFrame.with_columnsorder_byc                 C  rS   rT   rU   rW   r   r   rU   rU   rX   with_row_index   rZ   z!CompliantDataFrame.with_row_indexfileNonec                 C  rS   rT   rU   rW   r   rU   rU   rX   	write_csv  ra   zCompliantDataFrame.write_csvstr | Path | BytesIOc                 C  rS   rT   rU   r  rU   rU   rX   r    ra   str | Path | BytesIO | None
str | Nonec                 C  rS   rT   rU   r  rU   rU   rX   r    rZ   c                 C  rS   rT   rU   r  rU   rU   rX   write_parquet  rZ   z CompliantDataFrame.write_parquetrR   r,   rR   r	   )r\   r1   r]   r5   rR   r,   )r\   rb   r]   r5   rc   rd   rR   r,   )r\   r   r]   r5   rR   r,   )r\   rE   r]   r5   rc   ri   rR   r,   )rk   r	   rl   rm   rR   rE   )ro   rp   rR   r,   rs   rt   rR   r,   rz   r   rR   r,   r   r    rR   r,   )rR   r   rR   r   rR   r   )rR   r   r   r   r   r	   rR   r   r   r   r   r   rR   r,   r   r   rR   r,   )r   rC   rR   r   r   r   rR   r,   r   r   rR   r,   )r   r   r   r   rR   r,   )r   rt   rR   r   )r   r   r   r   rR   r   r   r   rR   r,   )r   r   r   r   rR   r	   )rR   r   )r   r   r   r   rR   r   )rR   r   r   r,   r   r;   r   r   r   r   r   rt   rR   r,   r   r,   r   rt   r   rt   r   r   r   r   r   r9   r   rt   rR   r,   )r   r   rR   r   )r   r   r   r   r   r   r   r   r   r   r   rt   rR   r,   r   r   rR   r,   )r   r   rR   r   )r   r   rR   r   )
r   r   r   r   r   r   r   r   rR   r,   r   rt   r   r   r   r   rR   r,   )rR   r   )rR   r   )rR   r   )r   r   rR   r   )r   r   rR   r   )r   r   rR   rM   )r   r   r   rD   r   rm   rR   r,   
r   r   r   r   r   rt   r   rt   rR   r,   )r   rt   r   r   rR   r,   )r   r   rR   rt   r   r  rR   r   )r   r  rR   r  );__name__
__module____qualname____annotations__rY   r[   classmethodr`   rf   rh   rj   rn   rq   rx   r~   r   propertyr   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   ro   r   r   r   r   r   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r  r  rU   rU   rU   rX   rI   V   s   
 



	





















	




rI   )rE   rE   z_ToDict[CompliantSeriesT])r   r1   c                   @  sN  e Zd ZU ded< ded< ded< dzd	d
Zd{ddZed|ddZd}ddZd~ddZ	dddZ
edddZedd!d"Zedd$d%Zdd'd(Zdd-d.Zdd/d0Zdd4d5Zdd8d9Zdd:d;Zdd>d?ZddDdEZddHdIZddPdQZddVdWZddZd[Zd~d\d]ZddadbZddgdhZddkdlZddqdrZd~dsdtZ ddwdxZ!dyS )rJ   r   rO   r4   rP   r    rQ   rR   r,   c                 C  rS   rT   rU   rV   rU   rU   rX   __narwhals_lazyframe__  rZ   z)CompliantLazyFrame.__narwhals_lazyframe__r	   c                 C  rS   rT   rU   rV   rU   rU   rX   r[     rZ   z)CompliantLazyFrame.__narwhals_namespace__r\   r]   r5   c               C  rS   rT   rU   r^   rU   rU   rX   rh     s   zCompliantLazyFrame.from_nativers   rt   c                 G  ru   rv   rU   rw   rU   rU   rX   rx     ry   z CompliantLazyFrame.simple_selectrz   r   c                 G  ru   )r{   NrU   r}   rU   rU   rX   r~     r   zCompliantLazyFrame.aggregater   c                 C  rS   rT   rU   r   rU   rU   rX   r   &  rZ   z CompliantLazyFrame._with_versionc                 C  r   rT   r   rV   rU   rU   rX   r   (  r   zCompliantLazyFrame.nativer   c                 C  rS   rT   rU   rV   rU   rU   rX   r   ,  ra   zCompliantLazyFrame.columnsr   c                 C  rS   rT   rU   rV   rU   rU   rX   rc   .  ra   zCompliantLazyFrame.schemaIterator[Any]c                 C  rS   rT   rU   rV   rU   rU   rX   _iter_columns0  rZ   z CompliantLazyFrame._iter_columnsr   r   r   r   c                 K  rS   rT   rU   r   rU   rU   rX   r   1  ry   zCompliantLazyFrame.collectc                 C  rS   rT   rU   rV   rU   rU   rX   r   4  rZ   z!CompliantLazyFrame.collect_schemar   r   r   c                C  rS   rT   rU   r   rU   rU   rX   r   5  rZ   zCompliantLazyFrame.dropr   r   c                 C  rS   rT   rU   r   rU   rU   rX   r   6  rZ   zCompliantLazyFrame.drop_nullsc                 C  rS   rT   rU   r   rU   rU   rX   r   7  rZ   zCompliantLazyFrame.exploder   r   c                 C  rS   rT   rU   r   rU   rU   rX   r   8  rZ   zCompliantLazyFrame.filterr   r   r   -CompliantGroupBy[Self, CompliantExprT_contra]c                C  rS   rT   rU   r   rU   rU   rX   r   9  r   zCompliantLazyFrame.group_byr   r   c                 C  rS   rT   rU   r   rU   rU   rX   r   ?  rZ   zCompliantLazyFrame.headr   r   r;   r   r   r   c                C  rS   rT   rU   r   rU   rU   rX   r   @  rg   zCompliantLazyFrame.joinr   r   r   r9   c                C  rS   rT   rU   r   rU   rU   rX   r   I  r   zCompliantLazyFrame.join_asofr   r   c                 C  rS   rT   rU   r   rU   rU   rX   r   T  rZ   zCompliantLazyFrame.renamec                 G  rS   rT   rU   r}   rU   rU   rX   r|   U  rZ   zCompliantLazyFrame.selectr   r  r   c                 C  rS   rT   rU   r  rU   rU   rX   sink_parquetV  rZ   zCompliantLazyFrame.sink_parquetr   r   r   r   c                G  rS   rT   rU   r   rU   rU   rX   r   W  ry   zCompliantLazyFrame.sortr   r<   c                C  rS   rT   rU   )rW   r   r   rU   rU   rX   r   Z  ry   zCompliantLazyFrame.uniquer   r   r   r   c                 C  rS   rT   rU   r   rU   rU   rX   r   ]  rr   zCompliantLazyFrame.unpivotc                 G  rS   rT   rU   r}   rU   rU   rX   r   d  rZ   zCompliantLazyFrame.with_columnsr   r   c                 C  rS   rT   rU   r   rU   rU   rX   r   e  rZ   z!CompliantLazyFrame.with_row_indexNr  r  )r\   r   r]   r5   rR   r,   r	  r
  r  )rR   r   r  r  )rR   r!  r  r  r  r  r  )r   r   r   r   rR   r#  r  r  r  r  r  r  )r   r   r   r<   rR   r,   r  )r   rt   r   r   rR   r,   )"r  r  r  r  r   r[   r  rh   rx   r~   r   r  r   r   rc   r"  r   r   r   r   r   r   r   r   r   r   r   r|   r$  r   r   r   r   r   rU   rU   rU   rX   rJ   	  sH   
 















	






rJ   c                   @  s   e Zd ZedJddZdKddZdLd	d
ZdddMddZdNddZdOddZ	dPd d!Z
dQd"d#ZdRd&d'ZedSd-d.ZdTd1d2ZdUd4d5ZdVd6d7ZdWd9d:ZdXd;d<ZdYd>d?ZdZdBdCZd[dGdHZdIS )\rK   rR   tuple[int, ...]c                 C  s
   | j  S rT   )rP   _backend_versionrV   rU   rU   rX   r&  p  s   
zEagerDataFrame._backend_versionOEagerNamespace[Self, EagerSeriesT, EagerExprT, NativeDataFrameT, NativeSeriesT]c                 C  rS   rT   rU   rV   rU   rU   rX   r[   t  s   z%EagerDataFrame.__narwhals_namespace__DataFrame[NativeDataFrameT]c                 C  s   | j j| ddS )Nfull)level)rQ   	dataframerV   rU   rU   rX   to_narwhalsz  s   zEagerDataFrame.to_narwhalsT)validate_column_namesdfr   r-  r   r,   c                C  rS   rT   rU   )rW   r.  r-  rU   rU   rX   _with_native}  ry   zEagerDataFrame._with_nativer   r   ColumnNotFoundError | Nonec                 C  s   t || jdS )N)	available)r"   r   r   rU   rU   rX   _check_columns_exist  s   z#EagerDataFrame._check_columns_existexprr   r   c                C  s    || }t |dksJ |d S )z6Evaluate `expr` and ensure it has a **single** output.   r   )len)rW   r3  resultrU   rU   rX   _evaluate_expr  s   zEagerDataFrame._evaluate_exprrz   Sequence[EagerSeriesT]c                   s   t t fdd|D S )Nc                 3  s    | ]}  |V  qd S rT   )_evaluate_into_expr).0r3  rV   rU   rX   	<genexpr>      z6EagerDataFrame._evaluate_into_exprs.<locals>.<genexpr>)listr   from_iterabler}   rU   rV   rX   _evaluate_into_exprs  s   z#EagerDataFrame._evaluate_into_exprsc                C  sH   | | }|| }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 rU   )r   )r:  srU   rU   rX   
<listcomp>  s    z6EagerDataFrame._evaluate_into_expr.<locals>.<listcomp>z"Safety assertion failed, expected z, got )_evaluate_aliasesr=  AssertionError)rW   r3  aliasesr6  result_aliasesmsgrU   rU   rX   r9    s   

z"EagerDataFrame._evaluate_into_exprr   r	   c                C  ru   )z@Extract native Series, broadcasting to `len(self)` if necessary.NrU   )rW   r   rU   rU   rX   _extract_comparand  ry   z!EagerDataFrame._extract_comparandr\   rE   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_NrU   )r:  xrU   rU   rX   r;    r<  z5EagerDataFrame._numpy_column_names.<locals>.<genexpr>r4  )r=  ranger   )r\   r   rU   rU   rX   _numpy_column_names  s    z"EagerDataFrame._numpy_column_namesr   &SizedMultiIndexSelector[NativeSeriesT]c                 C  rS   rT   rU   rW   r   rU   rU   rX   _gather  rZ   zEagerDataFrame._gather_SliceIndex | rangec                 C  rS   rT   rU   rN  rU   rU   rX   _gather_slice  rZ   zEagerDataFrame._gather_slicec                 C  rS   rT   rU   r   rU   rU   rX   _select_multi_index  ry   z"EagerDataFrame._select_multi_index%SizedMultiNameSelector[NativeSeriesT]c                 C  rS   rT   rU   r   rU   rU   rX   _select_multi_name  ry   z!EagerDataFrame._select_multi_namec                 C  rS   rT   rU   r   rU   rU   rX   _select_slice_index  rZ   z"EagerDataFrame._select_slice_indexrG   c                 C  rS   rT   rU   r   rU   rU   rX   _select_slice_name  rZ   z!EagerDataFrame._select_slice_namero   ]tuple[SingleIndexSelector | MultiIndexSelector[EagerSeriesT], MultiColSelector[EagerSeriesT]]c                 C  s8  |\}}| }t |s`t|trt|dkr| S t|r<t|s%t|r+||}n5t	|r6| 
|j}n*|
|}n$t|trG||}nt	|rR| |j}nt|r\| |}nt| t |st|trq||g}|S t|ttfr||}|S t	|r||j}|S t|r||}|S t| |S )Nr   )r)   
isinstancer   r5  r|   r$   r(   r%   rU  r#   rR  r   slicerV  rT  r&   r   r   rO  rK  rQ  r'   )rW   ro   r   r   	compliantrU   rU   rX   rq     sB   




zEagerDataFrame.__getitem__r   r  r   c                 C  s
   |  |S rT   )r  r  rU   rU   rX   r$    s   
zEagerDataFrame.sink_parquetN)rR   r%  )rR   r'  )rR   r(  )r.  r   r-  r   rR   r,   )r   r   rR   r0  )r3  r   rR   r   )rz   r   rR   r8  )r3  r   rR   r8  )r   r   rR   r	   )r\   rE   r   r   rR   rH  )r   rM  rR   r,   )r   rP  rR   r,   )r   rM  rR   r,   )r   rS  rR   r,   )r   rP  rR   r,   )r   rG   rR   r,   )ro   rW  rR   r,   r  )r  r  r  r  r&  r[   r,  r/  r2  r7  r?  r9  rG  staticmethodrL  rO  rQ  rR  rT  rU  rV  rq   r$  rU   rU   rU   rX   rK   h  s,    













*rK   r(  )g
__future__r   collections.abcr   r   r   r   	itertoolsr   typingr   r	   r
   r   r   r   narwhals._compliant.typingr   r   r   r   r   r   r   r   r   r   narwhals._translater   r   r   r   r   r   narwhals._typing_compatr   narwhals._utilsr   r    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.namespacer0   r1   narwhals._typingr2   r3   r4   r5   narwhals.dataframer6   narwhals.dtypesr7   narwhals.exceptionsr8   narwhals.typingr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r  __all__rL   rN   rt   rI   rJ   rK   rU   rU   rU   rX   <module>   sj     0 4D
 
4
_
