
    h0B                       % S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  S SKJ"r"  S SKJ#r#  S SKJ$r$  S SKJ%r%  S S KJ&r&  S S!KJ'r'  \(       a  S S"K(J)r)  S S#K*J+r+  S S$K,r-S S$K.r/S S$K0r1S S%K2J3r3  S S&K2J4r4  S S'K5J6r6  S S(K5J7r7  S S)K8J9r9  S S*KJ:r:  S S+K;J<r<  S S,K=J>r>  S S-K?J@r@  S S.K?JArA  S S/K?JBrB  S S0K?JCrC  S S1K?JDrD  S S2K?JErE  S S3K?JFrF  S S4K?JGrG  S S5K?JHrH  S S6K?JIrI  S S7K?JJrJ  S S8K?JKrK  S S9K?JLrL  S S:K?JMrM  S S;KJNrN  S S<KJOrO  \rPS=\QS>'   / S?QrR\" S@5      rSSArTS=\QSB'    " SC SD\SE   \SF\	\U\4   4   \SG   \\   \\   \\
\\\4   5	      rV " SH SI\\   \\   \
\\4   5      rW " SJ SK\V\\\4   \W\\4   \
\\\\4   5      rXg$)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                     \ rS rSr% S\S'   S\S'   S\S'   S\S	'   SES
 jrSFS jr\SGS j5       r\        SHS j5       r	\SIS j5       r
\        SJS j5       rSKS jr    SLS jrSMS jrSNS jrSOS jr\SPS j5       r\SQS j5       r\SRS j5       r\SSS j5       rSES jr      STS jrSRS jrSUS jrSVS jrSWS jrSXS jrSYS  jrSZS! jrS[S" jr      S\S# jr S]S$ jr!S^S% jr"S_S& jr#      S`S' jr$SaS( jr%            SbS) jr&                ScS* jr'SdS+ jr(              SeS, jr)SfS- jr*SgS. jr+    ShS/ jr,          SiS0 jr-SNS1 jr.        SjS2 jr/S]S3 jr0SkS4 jr1SlS5 jr2SmS6 jr3\4SnS7 j5       r5\4SoS8 j5       r5    SpS9 jr5S:S;.       SqS< jjr6          SrS= jr7SNS> jr8SsS? jr9\4StS@ j5       r:\4SuSA j5       r:SvSB jr:SuSC jr;SDr<g:)wr?   O   r   _native_framer<   _implementationtuple[int, ...]_backend_versionr   _versionc                    g N selfs    O/var/www/html/env/lib/python3.13/site-packages/narwhals/_compliant/dataframe.py__narwhals_dataframe__)CompliantDataFrame.__narwhals_dataframe__]       c    c                    g rM   rN   rO   s    rQ   __narwhals_namespace__)CompliantDataFrame.__narwhals_namespace__^       SrU   c                  g rM   rN   clsdatacontexts      rQ   
from_arrowCompliantDataFrame.from_arrow_   s    TWrU   c                  g rM   rN   r\   r]   r^   schemas       rQ   	from_dictCompliantDataFrame.from_dicta        rU   c                  g rM   rN   r[   s      rQ   from_nativeCompliantDataFrame.from_nativej       SVrU   c                  g rM   rN   rb   s       rQ   
from_numpyCompliantDataFrame.from_numpyl   rf   rU   c                   g rM   rN   )rP   dtypecopys      rQ   	__array__CompliantDataFrame.__array__u   s    srU   c                    g rM   rN   )rP   items     rQ   __getitem__CompliantDataFrame.__getitem__v        rU   c                    gz)`select` where all args are column names.NrN   rP   column_namess     rQ   simple_select CompliantDataFrame.simple_select}       rU   c                     U R                   " U6 $ )[`select` where all args are aggregations or literals.

(so, no broadcasting is necessary).
)selectrP   exprss     rQ   	aggregateCompliantDataFrame.aggregate   s     {{E""rU   c                    g rM   rN   rP   versions     rQ   _with_version CompliantDataFrame._with_version       srU   c                    U R                   $ rM   rG   rO   s    rQ   nativeCompliantDataFrame.native       !!!rU   c                    g rM   rN   rO   s    rQ   columnsCompliantDataFrame.columns       (+rU   c                    g rM   rN   rO   s    rQ   rc   CompliantDataFrame.schema       -0rU   c                    g rM   rN   rO   s    rQ   shapeCompliantDataFrame.shape   r   rU   c                    g rM   rN   rO   s    rQ   cloneCompliantDataFrame.clone   s    SrU   c                    g rM   rN   rP   backendkwargss      rQ   collectCompliantDataFrame.collect       ,/rU   c                    g rM   rN   rO   s    rQ   collect_schema!CompliantDataFrame.collect_schema       SrU   c                   g rM   rN   rP   r   stricts      rQ   dropCompliantDataFrame.drop       SrU   c                    g rM   rN   rP   subsets     rQ   
drop_nullsCompliantDataFrame.drop_nulls       rU   c                    g rM   rN   )rP   units     rQ   estimated_size!CompliantDataFrame.estimated_size       SrU   c                    g rM   rN   rP   r   s     rQ   explodeCompliantDataFrame.explode   r   rU   c                    g rM   rN   rP   	predicates     rQ   filterCompliantDataFrame.filter       SrU   c                    g rM   rN   rP   noffsets      rQ   gather_everyCompliantDataFrame.gather_every       rU   c                    g rM   rN   rP   names     rQ   
get_columnCompliantDataFrame.get_column   r   rU   c                   g rM   rN   rP   drop_null_keyskeyss      rQ   group_byCompliantDataFrame.group_by       &)rU   c                    g rM   rN   rP   r   s     rQ   headCompliantDataFrame.head       CrU   c                    g rM   rN   )rP   rowcolumns      rQ   rt   CompliantDataFrame.item   s    crU   c                    g rM   rN   rO   s    rQ   iter_columnsCompliantDataFrame.iter_columns       #rU   c                   g rM   rN   )rP   namedbuffer_sizes      rQ   	iter_rowsCompliantDataFrame.iter_rows       BErU   c                    g rM   rN   rO   s    rQ   	is_uniqueCompliantDataFrame.is_unique   rY   rU   c                   g rM   rN   rP   otherhowleft_onright_onsuffixs         rQ   joinCompliantDataFrame.join   rf   rU   c                   g rM   rN   rP   r   r   r   by_leftby_rightstrategyr   s           rQ   	join_asofCompliantDataFrame.join_asof        rU   c                   g rM   rN   )rP   r   s     rQ   lazyCompliantDataFrame.lazy   s    WZrU   c                   g rM   rN   )rP   onindexvaluesaggregate_functionsort_columns	separators          rQ   pivotCompliantDataFrame.pivot   s     rU   c                    g rM   rN   rP   mappings     rQ   renameCompliantDataFrame.rename   r   rU   c                    g rM   rN   )rP   r  s     rQ   r   CompliantDataFrame.row   s    #rU   c                   g rM   rN   )rP   r   s     rQ   rowsCompliantDataFrame.rows   r   rU   c                   g rM   rN   )rP   r   fractionwith_replacementseeds        rQ   sampleCompliantDataFrame.sample   s     rU   c                    g rM   rN   r   s     rQ   r   CompliantDataFrame.select   r   rU   c                   g rM   rN   rP   
descending
nulls_lastbys       rQ   sortCompliantDataFrame.sort       rU   c                    g rM   rN   r   s     rQ   tailCompliantDataFrame.tail   r   rU   c                    g rM   rN   rO   s    rQ   to_arrowCompliantDataFrame.to_arrow   r   rU   c                    g rM   rN   rO   s    rQ   	to_pandasCompliantDataFrame.to_pandas       rU   c                    g rM   rN   rO   s    rQ   	to_polarsCompliantDataFrame.to_polars   r-  rU   c                   g rM   rN   rP   	as_seriess     rQ   to_dictCompliantDataFrame.to_dict   rj   rU   c                   g rM   rN   r2  s     rQ   r4  r5     s    MPrU   c                   g rM   rN   r2  s     rQ   r4  r5     s    =@rU   N)maintain_orderc                   g rM   rN   )rP   r   keepr8  s       rQ   uniqueCompliantDataFrame.unique   rw   rU   c                    g rM   rN   rP   r  r  variable_name
value_names        rQ   unpivotCompliantDataFrame.unpivot   rw   rU   c                    g rM   rN   r   s     rQ   with_columnsCompliantDataFrame.with_columns       3rU   c                    g rM   rN   r   s     rQ   with_row_index!CompliantDataFrame.with_row_index       rU   c                    g rM   rN   rP   files     rQ   	write_csvCompliantDataFrame.write_csv   s    ,/rU   c                    g rM   rN   rL  s     rQ   rN  rO     s    =@rU   c                    g rM   rN   rL  s     rQ   rN  rO     s    #rU   c                    g rM   rN   rL  s     rQ   write_parquet CompliantDataFrame.write_parquet   s    rU   rN   returnr&   rV  r   )r]   r+   r^   r=   rV  r&   )r]   zMapping[str, Any]r^   r=   rc   z#Mapping[str, DType] | Schema | NonerV  r&   r]   r   r^   r=   rV  r&   )r]   r9   r^   r=   rc   z3Mapping[str, DType] | Schema | Sequence[str] | NonerV  r&   )ro   r   rp   bool | NonerV  r9   )rt   ztuple[SingleIndexSelector | MultiIndexSelector[CompliantSeriesT], MultiIndexSelector[CompliantSeriesT] | MultiColSelector[CompliantSeriesT]]rV  r&   r{   strrV  r&   r   r   rV  r&   r   r   rV  r&   rV  r   rV  Sequence[str]rV  zMapping[str, DType])rV  ztuple[int, int]r   Implementation | Noner   r   rV  z!CompliantDataFrame[Any, Any, Any]r   r`  r   boolrV  r&   r   Sequence[str] | NonerV  r&   )r   r7   rV  zint | floatr   r`  rV  r&   r   z"CompliantExprT_contra | IncompleterV  r&   r   intr   rk  rV  r&   )r   r[  rV  r   )r   r[  r   re  rV  zDataFrameGroupBy[Self, Any]r   rk  rV  r&   )r   
int | Noner   zint | str | NonerV  r   )rV  zIterator[CompliantSeriesT])r   re  r   rk  rV  z7Iterator[tuple[Any, ...]] | Iterator[Mapping[str, Any]])rV  r   )r   r&   r   r/   r   rg  r   rg  r   r[  rV  r&   r   r&   r   
str | Noner   ro  r   rg  r   rg  r   r.   r   r[  rV  r&   )r   rc  rV  zCompliantLazyFrame[Any, Any])r  r`  r  rg  r  rg  r  zPivotAgg | Noner  re  r  r[  rV  r&   r  zMapping[str, str]rV  r&   )r  rk  rV  ztuple[Any, ...])r   re  rV  z7Sequence[tuple[Any, ...]] | Sequence[Mapping[str, Any]])
r   rm  r  zfloat | Noner  re  r  rm  rV  r&   r   r[  r  zbool | Sequence[bool]r  re  rV  r&   )rV  pa.Table)rV  zpd.DataFrame)rV  zpl.DataFrame)r3  zLiteral[True]rV  zdict[str, CompliantSeriesT])r3  zLiteral[False]rV  zdict[str, list[Any]])r3  re  rV  rC   )r   rg  r:  r8   r8  rY  rV  r&   
r  rg  r  rg  r?  r[  r@  r[  rV  r&   r   r[  rV  r&   )rM  NonerV  r[  )rM  zstr | Path | BytesIOrV  ru  )rM  zstr | Path | BytesIO | NonerV  ro  )=__name__
__module____qualname____firstlineno____annotations__rR   rW   classmethodr_   rd   rh   rl   rq   ru   r|   r   r   propertyr   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   r   r   r   r   r   r   r  r  r   r  r  r   r!  r%  r(  r+  r/  r   r4  r;  rA  rD  rH  rN  rS  __static_attributes__rN   rU   rQ   r?   r?   O   s     ##%%10W W
  4 
  V V
  D 
  K
 
# ;" " + +0 0+ + 0,08;0	*0 9HC@:P<<***.*	$* (I=FF+.F	@F 1 	
 & '  


 	

 
 &
 '
 #
 
 

 [		 $		
 %	 ,	 	 	 
	 >5FF	@F 	
   
 A$9GK	 (',,V VP PA A	;A '+$ !	
 $ 
  $ 	
  
 G4/ /@ @MDrU   r?   )r9   r9   z_ToDict[CompliantSeriesT])rr  r+   c                  >   \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S,S
 jrS-S jr\S.S j5       rS/S jr	S0S jr
S1S jr\S2S j5       r\S3S j5       r\S4S j5       rS5S jr      S6S jrS4S jrS7S jrS8S jrS9S jrS:S jr\" S5      S;S j5       r      S<S jrS=S jr            S>S jr                S?S jrS@S  jrS0S! jr        SAS" jr\" S#5      S=S$ j5       r       SBS% jr!          SCS& jr"S0S' jr#SDS( jr$SES) jr%S*r&g+)Fr@      r   rG   r<   rH   rI   rJ   r   rK   c                    g rM   rN   rO   s    rQ   __narwhals_lazyframe__)CompliantLazyFrame.__narwhals_lazyframe__  rT   rU   c                    g rM   rN   rO   s    rQ   rW   )CompliantLazyFrame.__narwhals_namespace__	  rY   rU   c                  g rM   rN   r[   s      rQ   rh   CompliantLazyFrame.from_native  rj   rU   c                    gry   rN   rz   s     rQ   r|    CompliantLazyFrame.simple_select  r~   rU   c                    g)r   NrN   r   s     rQ   r   CompliantLazyFrame.aggregate  s    
 	rU   c                    g rM   rN   r   s     rQ   r    CompliantLazyFrame._with_version  r   rU   c                    U R                   $ rM   r   rO   s    rQ   r   CompliantLazyFrame.native  r   rU   c                    g rM   rN   rO   s    rQ   r   CompliantLazyFrame.columns  r   rU   c                    g rM   rN   rO   s    rQ   rc   CompliantLazyFrame.schema!  r   rU   c                    g rM   rN   rO   s    rQ   _iter_columns CompliantLazyFrame._iter_columns#  rT   rU   c                    g rM   rN   r   s      rQ   r   CompliantLazyFrame.collect$  r   rU   c                    g rM   rN   rO   s    rQ   r   !CompliantLazyFrame.collect_schema'  r   rU   c                   g rM   rN   r   s      rQ   r   CompliantLazyFrame.drop(  r   rU   c                    g rM   rN   r   s     rQ   r   CompliantLazyFrame.drop_nulls)  r   rU   c                    g rM   rN   r   s     rQ   r   CompliantLazyFrame.explode*  r   rU   c                    g rM   rN   r   s     rQ   r   CompliantLazyFrame.filter+  r   rU   zO`LazyFrame.gather_every` is deprecated and will be removed in a future version.c                    g rM   rN   r   s      rQ   r   CompliantLazyFrame.gather_every,  s     :=rU   c                   g rM   rN   r   s      rQ   r   CompliantLazyFrame.group_by0  r   rU   c                    g rM   rN   r   s     rQ   r   CompliantLazyFrame.head3  r   rU   c                   g rM   rN   r   s         rQ   r   CompliantLazyFrame.join4  rf   rU   c                   g rM   rN   r   s           rQ   r   CompliantLazyFrame.join_asof=  r   rU   c                    g rM   rN   r  s     rQ   r  CompliantLazyFrame.renameH  r   rU   c                    g rM   rN   r   s     rQ   r   CompliantLazyFrame.selectI  r   rU   c                   g rM   rN   r  s       rQ   r!  CompliantLazyFrame.sortJ  r#  rU   zG`LazyFrame.tail` is deprecated and will be removed in a future version.c                    g rM   rN   r   s     rQ   r%  CompliantLazyFrame.tailM  s    $'rU   c                   g rM   rN   )rP   r   r:  s      rQ   r;  CompliantLazyFrame.uniqueO  r#  rU   c                    g rM   rN   r>  s        rQ   rA  CompliantLazyFrame.unpivotR  rw   rU   c                    g rM   rN   r   s     rQ   rD  CompliantLazyFrame.with_columnsY  rF  rU   c                    g rM   rN   r   s     rQ   rH  !CompliantLazyFrame.with_row_indexZ  rJ  rU   c               >    U" U 5      n[        U5      S:X  d   eUS   $ )N   r   lenrP   exprresults      rQ   _evaluate_expr!CompliantLazyFrame._evaluate_expr[  s'    d6{aayrU   rN   NrU  rW  rX  rZ  r\  r]  r^  r_  ra  )rV  zIterator[Any]rb  rd  rf  rh  ri  rj  )r   r[  r   re  rV  zCompliantGroupBy[Self, Any]rl  )r   r&   r   z1Literal['left', 'inner', 'cross', 'anti', 'semi']r   rg  r   rg  r   r[  rV  r&   rn  rp  rq  )r   rg  r:  r0   rV  r&   rs  rt  )r  r   rV  r   )'rv  rw  rx  ry  rz  r  rW   r{  rh   r|   r   r   r|  r   r   rc   r  r   r   r   r   r   r   r   r   r   r   r   r   r  r   r!  r%  r;  rA  rD  rH  r  r}  rN   rU   rQ   r@   r@      s   
  ##%%10V V ;" " + +0 010,08;0	*0 9HC:PY = =***.*	$* ( ?	
 & '  


 	

 
 &
 '
 #
 
 

 >@$9GK	 YZ' ['*5K	  $ 	
  
 G4rU   r@   c                      \ rS rSr  SS jrSS jrSS jrSS jrSS jr\	      SS j5       r
SS jrSS	 jr    SS
 jr    SS jrSS jrSS jr    SS jrSrg)rA   ia  c                    g rM   rN   rO   s    rQ   rW   %EagerDataFrame.__narwhals_namespace__f  s    VYrU   c               >    U" U 5      n[        U5      S:X  d   eUS   $ )z6Evaluate `expr` and ensure it has a **single** output.r  r   r  r  s      rQ   r  EagerDataFrame._evaluate_exprj  s'    )-d6{aayrU   c                V   ^  [        [        R                  " U 4S jU 5       5      5      $ )Nc              3  F   >#    U  H  nTR                  U5      v   M     g 7frM   )_evaluate_into_expr).0r  rP   s     rQ   	<genexpr>6EagerDataFrame._evaluate_into_exprs.<locals>.<genexpr>r  s!     'YSX4(@(@(F(FSXs   !)listr   from_iterabler   s   ` rQ   _evaluate_into_exprs#EagerDataFrame._evaluate_into_exprsp  s     E'''YSX'YYZZrU   c                   [        X/ 5      u  p#U" U 5      n[        U5      U Vs/ s H  oUR                  PM     sn=n:w  a  SU SU 3n[        U5      eU$ s  snf )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.
z"Safety assertion failed, expected z, got )r   r  r   AssertionError)rP   r  _aliasesr  sresult_aliasesmsgs           rQ   r  "EagerDataFrame._evaluate_into_exprt  sj     7t2F
d=/56v!vvv66N
 7wivnEUVC %%	 7s   Ac                   g)z@Extract native Series, broadcasting to `len(self)` if necessary.NrN   )rP   r   s     rQ   _extract_comparand!EagerDataFrame._extract_comparand  r~   rU   c               d    [        U=(       d    S [        U R                  S   5       5       5      $ )Nc              3  ,   #    U  H
  nS U 3v   M     g7f)column_NrN   )r  xs     rQ   r  5EagerDataFrame._numpy_column_names.<locals>.<genexpr>  s     L7K!'!7Ks   r  )r  ranger   )r]   r   s     rQ   _numpy_column_names"EagerDataFrame._numpy_column_names  s'     GLLuTZZ]7KLMMrU   c                    g rM   rN   rP   r  s     rQ   _gatherEagerDataFrame._gather  r   rU   c                    g rM   rN   r  s     rQ   _gather_sliceEagerDataFrame._gather_slice  r   rU   c                    g rM   rN   r   s     rQ   _select_multi_index"EagerDataFrame._select_multi_index  r#  rU   c                    g rM   rN   r   s     rQ   _select_multi_name!EagerDataFrame._select_multi_name  r#  rU   c                    g rM   rN   r   s     rQ   _select_slice_index"EagerDataFrame._select_slice_index  s    rU   c                    g rM   rN   r   s     rQ   _select_slice_name!EagerDataFrame._select_slice_name  s    srU   c                X   Uu  p#U n[        U5      (       GdB  [        U[        5      (       a  [        U5      S:X  a  UR	                  5       $ [        U5      (       ap  [        U5      (       d  [        U5      (       a  UR                  U5      nO[        U5      (       a  U R                  UR                  5      nOUR                  U5      nO[        U[        5      (       a  UR                  U5      nOg[        U5      (       a  U R                  UR                  5      nO;[        U5      (       a  U R                  U5      nOS[!        U5       3n[#        U5      e[        U5      (       d  [        U[$        5      (       a  UR'                  U/5      nU$ [        U[        [(        45      (       a  UR+                  U5      nU$ [        U5      (       a  UR'                  UR                  5      nU$ [-        U5      (       a  UR'                  U5      nU$ S[!        U5       3n[#        U5      eU$ )Nr   z'Unreachable code, got unexpected type: )r#   
isinstancer   r  r   r   r"   r   r  r   r  r   slicer  r  r    typer  rk  r  r  r  r!   )rP   rt   r  r   	compliantr  s         rQ   ru   EagerDataFrame.__getitem__  s    	W%%'5))c'la.? '')) ))!'**hw.?.? ) = =g FI(11 $ 8 8 HI ) = =g FIGU++%88A	$W-- 33GNNC	!'** 33G<	?WO$S))T""$$$%--tf5	  D5%.11%33D9	  %T**%--dkk:	  /t44%--d3	
  @T
|L$S))rU   rN   N)rV  zKEagerNamespace[Self, EagerSeriesT, EagerExprT, NativeFrameT, NativeSeriesT])r  r   rV  r   )r   r   rV  Sequence[EagerSeriesT])r  r   rV  r   )r   r   rV  r   )r]   r9   r   rg  rV  z	list[str])r  &SizedMultiIndexSelector[NativeSeriesT]rV  r&   )r  _SliceIndex | rangerV  r&   )r   r  rV  r&   )r   z%SizedMultiNameSelector[NativeSeriesT]rV  r&   )r   r  rV  r&   )r   r;   rV  r&   )rt   ztuple[SingleIndexSelector | MultiIndexSelector[EagerSeriesT], MultiIndexSelector[EagerSeriesT] | MultiColSelector[EagerSeriesT]]rV  r&   )rv  rw  rx  ry  rW   r  r  r  r  staticmethodr  r  r  r  r  r  r  ru   r}  rN   rU   rQ   rA   rA   a  s    
Z	TZ[& NN!5N	N N
 QC=	<	 MB*
* 
*rU   rA   )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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   rz  __all__rB   rD   r[  r?   r@   rA   rN   rU   rQ   <module>r     s   "             < 7 1 3 3 4 J 0 / * 0 " ( % . , # + 8 ) (&+==<2%&0,602(376(2(+*-+J	
HCLI IlE+,/c1BBC12,|	4lBClE^`,|"L01`Fd|Z=>z</0\:|]BCdrU   