
    7^jS              
         U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZ d dlZd dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZm Z  d dl!m"Z"m#Z# e	r d dl$m%Z%m&Z& d dlm'Z' d dl(m)Z)m*Z* d dl+m,Z,m-Z-m.Z. e
Z/de0d<   	 ed    Z1de0d<   ed   Z2de0d<   ee1e2f   Z3de0d<   d Z4de0d<   dZ5de0d<    G d deeeeee f         Z6 G d deee f         Z7y)    )annotationsNreduce)chain)TYPE_CHECKINGAnyLiteralProtocolcastoverload)EagerNamespace)combine_alias_output_namescombine_evaluate_output_namesPandasLikeDataFramePandasLikeExpr)PandasSelectorNamespacePandasLikeSeries)NativeDataFrameTNativeSeriesT)is_dtype_pyarrowis_non_nullable_boolean)IterableSequence)	TypeAlias)ImplementationVersion)CorrelationMethod	IntoDTypePythonLiteralr   
Incomplete	_Vertical   _HorizontalAxisVERTICAL
HORIZONTALc                  P   e Zd Zedd       Zedd       Zedd       Zedd       ZddZddZ	d dZ
d!dZdd	Z	 	 	 	 	 	 d"d
Z	 	 	 	 	 	 d"dZddZddZddZed#d       Zd$dZ	 	 	 	 d%dZd$dZ	 	 	 	 	 	 	 	 d&dZddZddZ	 d'	 	 	 	 	 	 	 d(dZ	 	 	 	 	 	 	 	 d)dZd*dZy)+PandasLikeNamespacec                    t         S Nr   selfs    j/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/narwhals/_pandas_like/namespace.py
_dataframezPandasLikeNamespace._dataframe4   s    ""    c                    t         S r-   r   r.   s    r0   _exprzPandasLikeNamespace._expr8   s    r2   c                    t         S r-   r   r.   s    r0   _serieszPandasLikeNamespace._series<   s    r2   c                ,    t        j                  |       S r-   )r   from_namespacer.   s    r0   	selectorszPandasLikeNamespace.selectors@   s    &55d;;r2   c                     || _         || _        y r-   )_implementation_version)r/   implementationversions      r0   __init__zPandasLikeNamespace.__init__D   s    -r2   c                f    dfd}| j                   j                  |t         t         |       S )Nc                8      fdD        }t        d |      gS )Nc              3  <   K   | ]  } |      D ]  }|   y wr-    ).0r4   sdfs      r0   	<genexpr>z=PandasLikeNamespace.coalesce.<locals>.func.<locals>.<genexpr>J   s!     >EE"I>qa>a>s   c                *    | j                  |d d       S )Nstrategylimit	fill_null)xys     r0   <lambda>z<PandasLikeNamespace.coalesce.<locals>.func.<locals>.<lambda>L   s    AKKDK$M r2   r   )rF   seriesexprss   ` r0   funcz*PandasLikeNamespace.coalesce.<locals>.funcI   s"    >U>FMvV r2   rS   evaluate_output_namesalias_output_namescontextrF   r   returnzlist[PandasLikeSeries]r4   _from_callabler   r   r/   rR   rS   s    ` r0   coalescezPandasLikeNamespace.coalesceH   s<    	 zz(("?"G95A	 ) 
 	
r2   c                j     d fdt        fdd d  j                   j                        S )Nc                   t        t        t        t        f      r	 dd l}dd l}ddlm} t        t              rt              n}r |j                        nd }|j                  |g|      }j                  j                         }	|	j                  |j                  j                  |      d| j                   j"                  dd       }
j$                  j'                  |
      S j$                  j)                  gd| j                   j"                  dd 	      }r|j+                        S |S # t        $ r}d}t        |      |d }~ww xY w)
Nr   zqNested structures require pyarrow to be installed for pandas backend. Please install pyarrow: pip install pyarrow)narwhals_to_native_dtype)typeliteralr%   nameindex)rW   )datard   re   rW   )
isinstancelisttupledictpandaspyarrowImportErrornarwhals._arrow.utilsr`   r<   arrayr;   to_native_namespaceSeriesarraysArrowExtensionArray_native_framere   r6   from_nativefrom_iterabler   )rF   pdpaexcmsg_to_arrow_dtypearray_valuepa_dtypepa_arraynspandas_series_nativepandas_like_seriesdtyper/   values               r0   _lit_pandas_seriesz3PandasLikeNamespace.lit.<locals>._lit_pandas_seriesW   sX   %$t!454'( .8u-Ed5k5DI?5$--@t88[M8A ))==?')yyII11(;"**0015 (1 ($ ||//0Dd/SS!%!;!;W&&,,Qq1	 "< " )..u55%%C # 4F  &c*34s   D; ;	EEEc                     |       gS r-   rC   )rF   r   s    r0   rP   z)PandasLikeNamespace.lit.<locals>.<lambda>   s    *2./ r2   c                    dgS )Nrb   rC   _dfs    r0   rP   z)PandasLikeNamespace.lit.<locals>.<lambda>   s    yk r2   rU   rV   r=   r>   )rF   r   rY   r   r   r;   r<   )r/   r   r   r   s   ```@r0   litzPandasLikeNamespace.litV   s1    &	&P /"9#//MM
 	
r2   c                T     t         fdd d  j                   j                        S )Nc                n    j                   j                  t        | j                        gddg      gS )Nlenr   )rd   re   rW   )r6   rv   r   rt   )rF   r/   s    r0   rP   z)PandasLikeNamespace.len.<locals>.<lambda>   s:    **))*+%sD +  r2   c                    dgS )Nr   rC   r   s    r0   rP   z)PandasLikeNamespace.len.<locals>.<lambda>   s    ug r2   r   r   r.   s   `r0   r   zPandasLikeNamespace.len   s-    
 #6#//MM

 
	
r2   c                f    dfd}| j                   j                  |t         t         |       S )Nc                     t        j                   fdD              }d |D        }t        t        j                  |      gS )Nc              3  .   K   | ]  } |        y wr-   rC   rD   exprrF   s     r0   rG   zCPandasLikeNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   s     $@$T"X$@   c              3  B   K   | ]  }|j                  d dd        yw)r   NrL   rD   rE   s     r0   rG   zCPandasLikeNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   s     DAQ[[D$7D   )r   rv   r   operatoradd)rF   itnative_seriesrR   s   `  r0   rS   z0PandasLikeNamespace.sum_horizontal.<locals>.func   s7    $$$@%$@@BDDM8<<788r2   rT   rX   rZ   r\   s    ` r0   sum_horizontalz"PandasLikeNamespace.sum_horizontal   s<    	9
 zz(("?"G95A	 ) 
 	
r2   c               j    dfd}| j                   j                  |t         t         |       S )Nc                    D cg c]  } ||       D ]  }|  }}}st        d |D              rd}t        |      r	d |D        n
t        |      }t        t        j
                  |      gS c c}}w )Nc              3     K   | ]=  }|j                   j                  d k(  xr |j                         j                          ? ywobjectNnativer   is_nullanyr   s     r0   rG   zCPandasLikeNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>   7      (EF(*@qyy{/@@(   AAzwCannot use `ignore_nulls=False` in `all_horizontal` for non-nullable NumPy-backed pandas Series when nulls are present.c              3  \   K   | ]$  }t        |      r|n|j                  d dd       & yw)TNr   rM   r   s     r0   rG   zCPandasLikeNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>   s4        13AT4QU9VV   *,)r   
ValueErroriterr   r   and_rF   r4   rE   rQ   rz   r   rR   ignore_nullss         r0   rS   z0PandasLikeNamespace.all_horizontal.<locals>.func   s    %*>EE"I>qa>a>F>C (JP( %
 P o%   $ &\  8=="-..# ?   A2rT   rX   rZ   r/   r   rR   rS   s    `` r0   all_horizontalz"PandasLikeNamespace.all_horizontal   s<    	/( zz(("?"G95A	 ) 
 	
r2   c               j    dfd}| j                   j                  |t         t         |       S )Nc                    D cg c]  } ||       D ]  }|  }}}st        d |D              rd}t        |      r	d |D        n
t        |      }t        t        j
                  |      gS c c}}w )Nc              3     K   | ]=  }|j                   j                  d k(  xr |j                         j                          ? ywr   r   r   s     r0   rG   zCPandasLikeNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>   r   r   zwCannot use `ignore_nulls=False` in `any_horizontal` for non-nullable NumPy-backed pandas Series when nulls are present.c              3  \   K   | ]$  }t        |      r|n|j                  d dd       & yw)FNr   r   s     r0   rG   zCPandasLikeNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>   s4        13AUDRV9WWr   )r   r   r   r   r   or_r   s         r0   rS   z0PandasLikeNamespace.any_horizontal.<locals>.func   s    %*>EE"I>qa>a>F>C (JP( %
 P o%   $ &\  8<<,--# ?r   rT   rX   rZ   r   s    `` r0   any_horizontalz"PandasLikeNamespace.any_horizontal   s<    	.( zz(("?"G95A	 ) 
 	
r2   c                f    dfd}| j                   j                  |t         t         |       S )Nc                    D cg c]  } ||       D ]  }|  }}}d |D        }d |D        }t        t        j                  |      t        t        j                  |      z  gS c c}}w )Nc              3  D   K   | ]  }|j                  d dd        yw)r   NrI   rL   r   s     r0   rG   zDPandasLikeNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s     VAakk!d$k?Vs    c              3  B   K   | ]  }d |j                         z
    yw)r%   N)r   r   s     r0   rG   zDPandasLikeNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s     <!a!))+o<r   )r   r   r   )rF   r4   rE   expr_resultsrQ   non_narR   s         r0   rS   z1PandasLikeNamespace.mean_horizontal.<locals>.func   sd    +0D%%)DQADADLDVVF<|<F8<<06(,,3OOPP Es   A(rT   rX   rZ   r\   s    ` r0   mean_horizontalz#PandasLikeNamespace.mean_horizontal   s=    	Q zz(("?"G95A	 ) 
 	
r2   c                j     d fd} j                   j                  |t         t                S )Nc                6    t        t        j                   fdD                    }t        j	                  d |D        d      j
                  j                  d      j                  j                        j                  |d   j                        gS )	Nc              3  .   K   | ]  } |        y wr-   rC   r   s     r0   rG   zCPandasLikeNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>        -I4d2h-Ir   c              3  <   K   | ]  }|j                           y wr-   to_framer   s     r0   rG   zCPandasLikeNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>        6!6   
horizontalhowr%   axisr=   r>   r   )rh   r   rv   r   concatrt   minr;   r<   aliasrd   rF   rQ   rR   r/   s   ` r0   rS   z0PandasLikeNamespace.min_horizontal.<locals>.func   s~    %---I5-IIJF KK6v6L   #mCCQCK#'#7#7 MM %q	' r2   rT   rX   rZ   r\   s   `` r0   min_horizontalz"PandasLikeNamespace.min_horizontal   <    
	 zz(("?"G95A	 ) 
 	
r2   c                j     d fd} j                   j                  |t         t                S )Nc                6    t        t        j                   fdD                    }t        j	                  d |D        d      j
                  j                  d      j                  j                        j                  |d   j                        gS )	Nc              3  .   K   | ]  } |        y wr-   rC   r   s     r0   rG   zCPandasLikeNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>  r   r   c              3  <   K   | ]  }|j                           y wr-   r   r   s     r0   rG   zCPandasLikeNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>  r   r   r   r   r%   r   r   r   )rh   r   rv   r   r   r   maxr;   r<   r   rd   r   s   ` r0   rS   z0PandasLikeNamespace.max_horizontal.<locals>.func  s~    %---I5-IIJF KK6v6L   fSSaS[#'#7#7 MM %q	' r2   rT   rX   rZ   r\   s   `` r0   max_horizontalz"PandasLikeNamespace.max_horizontal   r   r2   c                J    | j                   j                         j                  S )zvConcatenate pandas objects along a particular axis.

        Return the **native** equivalent of `pd.concat`.
        )r;   rp   r   r.   s    r0   _concatzPandasLikeNamespace._concat  s     ##779@@@r2   c                   | j                   j                         r'| j                  dk  r| j                  |t        d      S | j                  |t              S )N   Fr   copyr   )r;   	is_pandas_backend_versionr   r(   r/   dfss     r0   _concat_diagonalz$PandasLikeNamespace._concat_diagonal  sI    ))+0E0E0L<<(<??||Ch|//r2   c                  | j                   j                         rQt        j                         5  t        j                  ddt
               | j                  |t              cd d d        S | j                   j                         r'| j                  dk  r| j                  |t        d      S | j                  |t              S # 1 sw Y    xY w)NignorezDThe behavior of array concatenation with empty entries is deprecated)messagecategoryr   r   Fr   )
r;   is_cudfwarningscatch_warningsfilterwarningsFutureWarningr   r)   r   r   r   s     r0   _concat_horizontalz&PandasLikeNamespace._concat_horizontal!  s     '')((* :''b*
 ||Cj|9: : !!++-$2G2G$2N<<*5<AA||Cj|11: :s   3CCc                  |d   j                   }t        |dd  d      D ]n  \  }}|j                   }t        |      t        |      k(  r||k(  j                         r=d|j	                          d| d|j	                          d}t        |       | j                  j                         r'| j                  dk  r| j                  |t        d	
      S | j                  |t              S )Nr   r%   )startz>unable to vstack, column names don't match:
   - dataframe 0: z
   - dataframe z: 
r   Fr   r   )columns	enumerater   allto_list	TypeErrorr;   r   r   r   r(   )r/   r   cols_0irF   cols_currentrz   s          r0   _concat_verticalz$PandasLikeNamespace._concat_vertical0  s    Qs12wa0 
	%EAr::L\"c&k18N7S7S7U))/)9(: ;&&'S<+?+?+A*B"F 
  n$
	% ))+0E0E0L<<(<??||Ch|//r2   c                   | j                   j                  j                         dfd}| j                  j	                  |t         t         |       S )Nc           	        D cg c]  } ||       D ]  }|  }}}|D cg c]  }|j                         }}|D cg c]  }|j                          }}s=t        t        j                  |      }t        fd|      j                  | d       }|gS d t        ||d      D        ^}}	|j                  |j                         j                  d|j                  j                  |j                  j                              fd|d d D        }
t        t        j                  d	 t        |
|	d      D        |      }|gS c c}}w c c}w c c}w )
Nc                    | z   |z   S r-   rC   )rN   rO   	separators     r0   rP   z>PandasLikeNamespace.concat_str.<locals>.func.<locals>.<lambda>M  s    Q]Q-> r2   c              3  H   K   | ]  \  }}|j                  | d         yw Nzip_with)rD   rE   nms      r0   rG   z?PandasLikeNamespace.concat_str.<locals>.func.<locals>.<genexpr>T  s&      ',1ArAJJsB''s    "T)strictsep)rd   re   r   c              3  D   K   | ]  }j                  | d         ywr  r  )rD   r  	sep_arrays     r0   rG   z?PandasLikeNamespace.concat_str.<locals>.func.<locals>.<genexpr>_  s      Sbi00"b9Ss    c              3  ,   K   | ]  \  }}||z     y wr-   rC   )rD   rE   vs      r0   rG   z?PandasLikeNamespace.concat_str.<locals>.func.<locals>.<genexpr>b  s     Ltq!QULs   )r   r   r   r   r   r  zip_with_native__native_namespace__rq   r   re   r   r   )rF   r4   rE   r   rQ   	null_masknull_mask_resultresult
init_valuevalues
separatorsr  rR   r   r  strings              @r0   rS   z,PandasLikeNamespace.concat_str.<locals>.funcF  sT   +0D%%)DQADADLD.:;affVn;F;.:;;I;#)(,,	#B  >GPP%%t2 8O%'58SW5X'#
V '33335<<!"(//55(//55	 = 	 TIcrNS
LLLs:vd'KL 8O? E;;s   EEErT   rX   )r<   dtypesStringr4   r[   r   r   )r/   r  r   rR   rS   r  s    ``` @r0   
concat_strzPandasLikeNamespace.concat_strA  s\     %%,,. 	  	D zz(("?"G95A	 ) 
 	
r2   c                j     d fd} j                   j                  |t         t                S )Nc                    	 dd l }dd ldd lm} j
                  j                  } |t        j                   fdD               }|d   j                  } |j                  fd|D        d|D cg c]  }|j                   c}i}	j                  |	g      }
j                  }j                  }|j                         }|j                  |j                   j#                  |
      ||d   j$                  j&                        }j                  |||      gS # t        $ r}d}t	        |      |d }~ww xY wc c}w )Nr   zgstruct requires pyarrow to be installed for pandas backend. Please install pyarrow: pip install pyarrowc              3  .   K   | ]  } |        y wr-   rC   r   s     r0   rG   z;PandasLikeNamespace.struct.<locals>.func.<locals>.<genexpr>}       /KTR/Kr   c              3  X   K   | ]!  }j                  |j                  d        # yw)Tfrom_pandasN)ro   r   )rD   rE   rx   s     r0   rG   z;PandasLikeNamespace.struct.<locals>.func.<locals>.<genexpr>  s"     G1"((188(6Gs   '*field_namesrc   r   )rk   rl   pyarrow.computecomputerm   r6   _align_full_broadcastr   rv   rd   make_structchunked_arrayr<   r;   rp   rq   rr   rs   r   re   )rF   rw   pcry   rz   alignrQ   rd   rE   struct_arrayr  r>   implr   result_nativerx   rR   r/   s   `              @r0   rS   z(PandasLikeNamespace.struct.<locals>.funcp  s4   	0#$, LL66EE///KU/KKLF!9>>D)2>>GG-34QVV4L %%|n5FmmG''D))+BII		--f5Qi&&,, & M
 LLtWLUVV3  0B  "#&C/0 5s   D 4D>	D;(D66D;rT   rX   rZ   r\   s   `` r0   structzPandasLikeNamespace.structo  s>    	W@ zz(("?"G95A	 ) 
 	
r2   c                j     d fd} j                   j                  |t         t                S )Nc                    	 dd l }ddlm} j                  j
                  } |t        j                   fdD               }|D cg c]l  }t        |j                  j                        r.|j                  j                  j                  j                         n|j                  |j                  d      n }} ||      }	j                  }
|
j                         j!                  t"        j$                  j'                  |	      |d   j(                  |d   j                  j*                        }j	                  ||
j,                        gS # t        $ r}d}t        |      |d }~ww xY wc c}w )	Nr   zelist requires pyarrow to be installed for pandas backend. Please install pyarrow: pip install pyarrow)build_list_arrayc              3  .   K   | ]  } |        y wr-   rC   r   s     r0   rG   z9PandasLikeNamespace.list.<locals>.func.<locals>.<genexpr>  r  r   Tr!  rc   r   )rl   rm   rn   r1  r6   r&  r   rv   r   r   r   ro   	_pa_arraycombine_chunksr;   rp   rq   rw   rr   rs   rd   re   r<   )rF   rx   ry   rz   r1  r*  rQ   rE   rr   r  r,  r-  rR   r/   s   `           r0   rS   z&PandasLikeNamespace.list.<locals>.func  sT   0$ ?LL66EE///KU/KKLF    (7 HHNN,,;;=!((=>F  &f-F''D 446==		--f5AY^^Qi&&,, > M ]4W 7  0B  "#&C/0s   E 	A1E1	E.E))E.rT   rX   rZ   r\   s   `` r0   rh   zPandasLikeNamespace.list  s=     	D zz(("?"G95A	 ) 
 	
r2   Nc                @    |j                   }| ||      S  |||      S r-   )where)r/   whenthen	otherwiser6  s        r0   _if_then_elsez!PandasLikeNamespace._if_then_else  s(     !JJ'/uT{KU45KKr2   c                    d fd} j                   j                  |t              t                     S )Nc                    | j                        }| j                        }j                  |j                  |j                  g      }|j                        j                  ddgf   }t        |j                  j                        gS )N)methodr   r%   r   )_evaluate_single_output_exprr   r   corrilocr   r;   r<   )	rF   a_seriesb_seriesr   r?  abr=  r/   s	        r0   rS   z&PandasLikeNamespace.corr.<locals>.func  s    66q9H66q9H))8??HOO*LMC8868*//A37D )=)=t}} r2   rT   rX   rZ   )r/   rC  rD  r=  rS   s   ```` r0   r?  zPandasLikeNamespace.corr  sE    		 		 zz(("?1"E9!Q?	 ) 
 	
r2   c                    d fd} j                   j                  |t              t                     S )Nc                   | j                        }| j                        }t        d	j                  |j                  |j                  g            }|j	                  d      j                  d      j                         }dk(  r|dk(  rd}n3|z
  dk  rt        d      }n|j                        j                  d	   }t        j                  |g	|j                  
      gS )Nzpd.DataFramer%   r      r   g        nan)ddof)r   r%   )rW   rd   )r>  r   r   r   counteqsumfloatcovr@  r   rv   rd   )
rF   rA  rB  r   nr   rC  rD  rI  r/   s
         r0   rS   z%PandasLikeNamespace.cov.<locals>.func  s    66q9H66q9H''(//(JKC 		q	!$$Q'++-AqyQ!VTQeT*//5 ..w8==Y r2   rT   rX   rZ   )r/   rC  rD  rI  rS   s   ```` r0   rN  zPandasLikeNamespace.cov  sE    	 	$ zz(("?1"E9!Q?	 ) 
 	
r2   )rY   ztype[PandasLikeDataFrame])rY   ztype[PandasLikeExpr])rY   ztype[PandasLikeSeries])rY   r   )r=   r   r>   r   rY   None)rR   r   rY   r   )r   r"   r   zIntoDType | NonerY   r   )rY   r   )rR   r   r   boolrY   r   )rY   z._NativeConcat[NativeDataFrameT, NativeSeriesT])r   zSequence[NativeDataFrameT]rY   r   )r   z*Sequence[NativeDataFrameT | NativeSeriesT]rY   r   )rR   r   r  strr   rQ  rY   r   r-   )r7  r   r8  r   r9  zNativeSeriesT | NonerY   r   )rC  r   rD  r   r=  r    rY   r   )rC  r   rD  r   rI  intrY   r   )__name__
__module____qualname__propertyr1   r4   r6   r9   r?   r]   r   r   r   r   r   r   r   r   r   r   r   r   r  r.  rh   r:  r?  rN  rC   r2   r0   r+   r+   +   s{    # #       < < 
/
b


$
48
	
<
$
48
	
<

(
( A A0
2=2	20",
$,
14,
DH,
	,
\&
P(
\ +/	LL L (	L
 
L

$2
?P
	
*
r2   r+   c                      e Zd Zedd	 	 	 	 	 	 	 d	d       Zedd	 	 	 	 	 	 	 d
d       Zedd	 	 	 	 	 	 	 dd       Zedd	 	 	 	 	 	 	 dd       Zdd	 	 	 	 	 	 	 ddZy)_NativeConcat.)r   c                    y r-   rC   r/   objsr   r   s       r0   __call__z_NativeConcat.__call__       r2   c                    y r-   rC   r[  s       r0   r]  z_NativeConcat.__call__  s     r2   c                    y r-   rC   r[  s       r0   r]  z_NativeConcat.__call__  r^  r2   c                    y r-   rC   r[  s       r0   r]  z_NativeConcat.__call__  s     ,/r2   Nc                    y r-   rC   r[  s       r0   r]  z_NativeConcat.__call__  s     ,/r2   )r\  zIterable[NativeDataFrameT]r   r$   r   bool | NonerY   r   )r\  zIterable[NativeSeriesT]r   r$   r   rc  rY   r   )r\  *Iterable[NativeDataFrameT | NativeSeriesT]r   r&   r   rc  rY   r   )r\  rd  r   r'   r   rc  rY   z NativeDataFrameT | NativeSeriesT)rT  rU  rV  r   r]  rC   r2   r0   rY  rY    s$     ( 	
  
  UX+6?GR	    8 	
  
    /8/ 	/
 / 
*/ / !/8/ 	/
 / 
*/r2   rY  )8
__future__r   r   r   	functoolsr   	itertoolsr   typingr   r   r	   r
   r   r   rk   rw   narwhals._compliantr   narwhals._expression_parsingr   r   narwhals._pandas_like.dataframer   narwhals._pandas_like.exprr   narwhals._pandas_like.selectorsr   narwhals._pandas_like.seriesr   narwhals._pandas_like.typingr   r   narwhals._pandas_like.utilsr   r   collections.abcr   r   r   narwhals._utilsr   r   narwhals.typingr    r!   r"   r#   __annotations__r$   r&   r'   r(   r)   r+   rY  rC   r2   r0   <module>ru     s    "     H H  . @ 5 C 9 H Q2 7KK 
I  > qz	9 ! Y #)[01i 1) 
K L
		L
^$/H-}<= $/r2   