
    }i+I              
         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 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 d dl 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e.d<   	 ed          Z/de.d<   ed         Z0de.d<   ee/e0f         Z1de.d<   d Z2de.d<   dZ3de.d<    G d deeeeeef                   Z4 G d deeef                   Z5dS )    )annotationsNreduce)chain)TYPE_CHECKINGAnyLiteralProtocoloverload)EagerNamespace)combine_alias_output_namescombine_evaluate_output_namesPandasLikeDataFramePandasLikeExpr)PandasSelectorNamespacePandasLikeSeries)NativeDataFrameTNativeSeriesT)is_non_nullable_boolean)
zip_strict)IterableSequence)	TypeAlias)ImplementationVersion)CorrelationMethod	IntoDTypePythonLiteralr   
Incomplete	_Vertical   _HorizontalAxisVERTICAL
HORIZONTALc                     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
dAdZd?dZdBdZdBdZd?dZd?dZd?d ZedCd"            ZdDd&ZdEd(ZdDd)ZdFd,Zd?d-Z	 dGdHd4ZdId9Zd.S )JPandasLikeNamespacereturntype[PandasLikeDataFrame]c                    t           S Nr   selfs    S/home/jrussi/.local/lib/python3.11/site-packages/narwhals/_pandas_like/namespace.py
_dataframezPandasLikeNamespace._dataframe4   s    ""    type[PandasLikeExpr]c                    t           S r.   r   r/   s    r1   _exprzPandasLikeNamespace._expr8   s    r3   type[PandasLikeSeries]c                    t           S r.   r   r/   s    r1   _serieszPandasLikeNamespace._series<   s    r3   r   c                *    t          j        |           S r.   )r   from_namespacer/   s    r1   	selectorszPandasLikeNamespace.selectors@   s    &5d;;;r3   implementationr   versionr   Nonec                "    || _         || _        d S r.   )_implementation_version)r0   r=   r>   s      r1   __init__zPandasLikeNamespace.__init__D   s    -r3   exprsr   c                h    dfd}| j                             |t           t           |           S )Ndfr   r+   list[PandasLikeSeries]c                F      fdD             }t          d |          gS )Nc              3  8   K   | ]} |          D ]}|V  d S r.    .0r6   srF   s      r1   	<genexpr>z=PandasLikeNamespace.coalesce.<locals>.func.<locals>.<genexpr>J   s8      >>EEE"II>>qa>>>>>>>r3   c                2    |                      |d d           S )Nstrategylimit	fill_null)xys     r1   <lambda>z<PandasLikeNamespace.coalesce.<locals>.func.<locals>.<lambda>L   s    AKKDK$M$M r3   r   )rF   seriesrD   s   ` r1   funcz*PandasLikeNamespace.coalesce.<locals>.funcI   s8    >>>>U>>>FMMvVV r3   rY   evaluate_output_namesalias_output_namescontextrF   r   r+   rG   r6   _from_callabler   r   r0   rD   rY   s    ` r1   coalescezPandasLikeNamespace.coalesceH   sX    	 	 	 	 	 	 z(("?"G95A	 ) 
 
 	
r3   valuer!   dtypeIntoDType | Nonec                ^     d	 fdt          fdd d  j         j                  S )
NrF   r   r+   r   c                   t          t          t          t          f          r	 dd l}dd l}n$# t          $ r}d}t          |          |d }~ww xY wddlm} t          t                    rt                    n}r |j	                  nd }|
                    |g|          }j                                        }	|	                    |j                            |          d| j        j        dd                   }
j                            |
          S j                            gd| j        j        dd         	          }r|                              S |S )
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)r]   )datarl   rm   r]   )
isinstancelisttupledictpandaspyarrowImportErrornarwhals._arrow.utilsrh   rB   arrayrA   to_native_namespaceSeriesarraysArrowExtensionArray_native_framerm   r9   from_nativefrom_iterablecast)rF   pdpaexcmsg_to_arrow_dtypearray_valuepa_dtypepa_arraynspandas_series_nativepandas_like_seriesrd   r0   rc   s               r1   _lit_pandas_seriesz3PandasLikeNamespace.lit.<locals>._lit_pandas_seriesW   s   %$t!455 T4''''(((((" 4 4 4F  &c**34      .8u-E-EPd5kkk5DIS??5$-@@@t88[M8AA )==??')yyI11(;;"*015 (1 ( ($ |//0Dd/SSS!%!;!;W&,QqS1	 "< " "  6)..u555%%s   . 
AA

Ac                     |           gS r.   rJ   )rF   r   s    r1   rW   z)PandasLikeNamespace.lit.<locals>.<lambda>   s    **2../ r3   c                    dgS )Nrj   rJ   _dfs    r1   rW   z)PandasLikeNamespace.lit.<locals>.<lambda>   s    yk r3   r[   r\   r=   r>   )rF   r   r+   r   r   rA   rB   )r0   rc   rd   r   s   ```@r1   litzPandasLikeNamespace.litV   sh    &	& &	& &	& &	& &	& &	& &	& &	&P ////"9"9#/M
 
 
 	
r3   c                H     t           fdd d  j         j                  S )Nc                j    j                             t          | j                  gddg          gS )Nlenr   )rl   rm   r]   )r9   r~   r   r|   )rF   r0   s    r1   rW   z)PandasLikeNamespace.len.<locals>.<lambda>   s=    **)**+%sD +   r3   c                    dgS )Nr   rJ   r   s    r1   rW   z)PandasLikeNamespace.len.<locals>.<lambda>   s    ug r3   r   r   r/   s   `r1   r   zPandasLikeNamespace.len   sD       
 #6"5#/M

 

 

 
	
r3   c                h    dfd}| j                             |t           t           |           S )NrF   r   r+   rG   c                     t          j         fdD                       }d |D             }t          t          j        |          gS )Nc              3  .   K   | ]} |          V  d S r.   rJ   rL   exprrF   s     r1   rN   zCPandasLikeNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   s+      $@$@$TT"XX$@$@$@$@$@$@r3   c              3  D   K   | ]}|                     d dd          V  dS )r   NrS   rL   rM   s     r1   rN   zCPandasLikeNamespace.sum_horizontal.<locals>.func.<locals>.<genexpr>   s2      DDAQ[[D$77DDDDDDr3   )r   r~   r   operatoradd)rF   itnative_seriesrD   s   `  r1   rY   z0PandasLikeNamespace.sum_horizontal.<locals>.func   sQ    $$@$@$@$@%$@$@$@@@BDDDDDM8<7788r3   rZ   r^   r_   ra   s    ` r1   sum_horizontalz"PandasLikeNamespace.sum_horizontal   sX    	9 	9 	9 	9 	9 	9
 z(("?"G95A	 ) 
 
 	
r3   ignore_nullsboolc               l    dfd}| j                             |t           t           |           S )NrF   r   r+   rG   c                      fdD             }s*t          d |D                       rd}t          |          rd |D             nt          |          }t          t          j        |          gS )Nc                0    g | ]} |          D ]}|S rJ   rJ   rK   s      r1   
<listcomp>zDPandasLikeNamespace.all_horizontal.<locals>.func.<locals>.<listcomp>   .    >>>EEE"II>>qa>>>>r3   c              3     K   | ]:}|j         j        d k    o%|                                                                V  ;dS objectNnativerd   is_nullanyr   s     r1   rN   zCPandasLikeNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>   S       ( (EF(*@qyy{{/@/@( ( ( ( ( (r3   zwCannot use `ignore_nulls=False` in `all_horizontal` for non-nullable NumPy-backed pandas Series when nulls are present.c              3  f   K   | ],}t          |          r|n|                    d dd          V  -dS )TNr   rT   r   s     r1   rN   zCPandasLikeNamespace.all_horizontal.<locals>.func.<locals>.<genexpr>   sZ          133VAAT4QU9V9V     r3   )r   
ValueErroriterr   r   and_rF   rX   r   r   rD   r   s   `   r1   rY   z0PandasLikeNamespace.all_horizontal.<locals>.func   s    >>>>U>>>F &C ( (JP( ( ( % % &
 P oo%  "   $    &\\  8="--..r3   rZ   r^   r_   r0   r   rD   rY   s    `` r1   all_horizontalz"PandasLikeNamespace.all_horizontal   s^    	/ 	/ 	/ 	/ 	/ 	/ 	/( z(("?"G95A	 ) 
 
 	
r3   c               l    dfd}| j                             |t           t           |           S )NrF   r   r+   rG   c                      fdD             }s*t          d |D                       rd}t          |          rd |D             nt          |          }t          t          j        |          gS )Nc                0    g | ]} |          D ]}|S rJ   rJ   rK   s      r1   r   zDPandasLikeNamespace.any_horizontal.<locals>.func.<locals>.<listcomp>   r   r3   c              3     K   | ]:}|j         j        d k    o%|                                                                V  ;dS r   r   r   s     r1   rN   zCPandasLikeNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>   r   r3   zwCannot use `ignore_nulls=False` in `any_horizontal` for non-nullable NumPy-backed pandas Series when nulls are present.c              3  f   K   | ],}t          |          r|n|                    d dd          V  -dS )FNr   r   s     r1   rN   zCPandasLikeNamespace.any_horizontal.<locals>.func.<locals>.<genexpr>   sZ          133WAAUDRV9W9W     r3   )r   r   r   r   r   or_r   s   `   r1   rY   z0PandasLikeNamespace.any_horizontal.<locals>.func   s    >>>>U>>>F &C ( (JP( ( ( % % &
 P oo%  "   $    &\\  8<,,--r3   rZ   r^   r_   r   s    `` r1   any_horizontalz"PandasLikeNamespace.any_horizontal   s^    	. 	. 	. 	. 	. 	. 	.( z(("?"G95A	 ) 
 
 	
r3   c                h    dfd}| j                             |t           t           |           S )NrF   r   r+   rG   c                      fdD             }d |D             }d |D             }t          t          j        |          t          t          j        |          z  gS )Nc                0    g | ]} |          D ]}|S rJ   rJ   rK   s      r1   r   zEPandasLikeNamespace.mean_horizontal.<locals>.func.<locals>.<listcomp>   .    DDD%%%))DDQADDDDr3   c              3  F   K   | ]}|                     d dd          V  dS )r   NrP   rS   r   s     r1   rN   zDPandasLikeNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s4      VVAakk!d$k??VVVVVVr3   c              3  D   K   | ]}d |                                 z
  V  dS )r$   Nr   r   s     r1   rN   zDPandasLikeNamespace.mean_horizontal.<locals>.func.<locals>.<genexpr>   s.      <<!a!))++o<<<<<<r3   )r   r   r   )rF   expr_resultsrX   non_narD   s   `   r1   rY   z1PandasLikeNamespace.mean_horizontal.<locals>.func   si    DDDD5DDDLVVVVVF<<|<<<F8<006(,3O3OOPPr3   rZ   r^   r_   ra   s    ` r1   mean_horizontalz#PandasLikeNamespace.mean_horizontal   s^    	Q 	Q 	Q 	Q 	Q 	Q z(("?"G95A	 ) 
 
 	
r3   c                l     d fd} j                             |t           t                      S )NrF   r   r+   rG   c                F    t          t          j         fdD                                 }t                              d |D             d          j                            d          j        j                  	                    |d         j
                  gS )	Nc              3  .   K   | ]} |          V  d S r.   rJ   r   s     r1   rN   zCPandasLikeNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   +      -I-I4dd2hh-I-I-I-I-I-Ir3   c              3  >   K   | ]}|                                 V  d S r.   to_framer   s     r1   rN   zCPandasLikeNamespace.min_horizontal.<locals>.func.<locals>.<genexpr>   *      66!666666r3   
horizontalhowr$   axisr=   r>   r   )rp   r   r~   r   concatr|   minrA   rB   aliasrl   rF   rX   rD   r0   s   ` r1   rY   z0PandasLikeNamespace.min_horizontal.<locals>.func   s    %--I-I-I-I5-I-I-IIIJJF KK66v666L    #CCQCKK#'#7 M   %q	'' r3   rZ   r^   r_   ra   s   `` r1   min_horizontalz"PandasLikeNamespace.min_horizontal   ^    
	 
	 
	 
	 
	 
	 
	 z(("?"G95A	 ) 
 
 	
r3   c                l     d fd} j                             |t           t                      S )NrF   r   r+   rG   c                F    t          t          j         fdD                                 }t                              d |D             d          j                            d          j        j                  	                    |d         j
                  gS )	Nc              3  .   K   | ]} |          V  d S r.   rJ   r   s     r1   rN   zCPandasLikeNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>  r   r3   c              3  >   K   | ]}|                                 V  d S r.   r   r   s     r1   rN   zCPandasLikeNamespace.max_horizontal.<locals>.func.<locals>.<genexpr>  r   r3   r   r   r$   r   r   r   )rp   r   r~   r   r   r   maxrA   rB   r   rl   r   s   ` r1   rY   z0PandasLikeNamespace.max_horizontal.<locals>.func  s    %--I-I-I-I5-I-I-IIIJJF KK66v666L    SSaS[[#'#7 M   %q	'' r3   rZ   r^   r_   ra   s   `` r1   max_horizontalz"PandasLikeNamespace.max_horizontal   r   r3   ._NativeConcat[NativeDataFrameT, NativeSeriesT]c                >    | j                                         j        S )zvConcatenate pandas objects along a particular axis.

        Return the **native** equivalent of `pd.concat`.
        )rA   rx   r   r/   s    r1   _concatzPandasLikeNamespace._concat  s     #7799@@r3   dfsSequence[NativeDataFrameT]r   c                   | j                                         r(| j        dk     r|                     |t          d          S |                     |t                    S )N   Fr   copyr   )rA   	is_pandas_backend_versionr   r'   r0   r   s     r1   _concat_diagonalz$PandasLikeNamespace._concat_diagonal  sU    ))++ 	@0E0L0L<<(<???||Ch|///r3   *Sequence[NativeDataFrameT | NativeSeriesT]c                  | j                                         rdt          j                    5  t          j        ddt
                     |                     |t                    cd d d            S # 1 swxY w Y   nA| j                                         r(| j	        dk     r|                     |t          d          S |                     |t                    S )NignorezDThe behavior of array concatenation with empty entries is deprecated)messagecategoryr   r   Fr   )
rA   is_cudfwarningscatch_warningsfilterwarningsFutureWarningr   r(   r   r   r   s     r1   _concat_horizontalz&PandasLikeNamespace._concat_horizontal!  s    '')) 		B(** : :'b*   
 ||Cj|99: : : : : : : : : : : : : : : : : !++-- 	B$2G$2N2N<<*5<AAA||Cj|111s   8A22A69A6c                  |d         j         }t          |dd          d          D ]\  }}|j         }t          |          t          |          k    r||k                                    s?d|                                 d| d|                                 d}t          |          | j                                        r(| j        dk     r| 	                    |t          d	
          S | 	                    |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	TypeErrorrA   r   r   r   r'   )r0   r   cols_0irF   cols_currentr   s          r1   _concat_verticalz$PandasLikeNamespace._concat_vertical0  s'   Qs122wa000 
	% 
	%EAr:L\""c&kk118N7S7S7U7U1F)/)9)9F F&'F F+7+?+?+A+AF F F 
  nn$ 2 ))++ 	@0E0L0L<<(<???||Ch|///r3   	separatorstrc                   | j         j                                        dfd}| j                            |t           t           |           S )NrF   r   r+   rG   c                V   	  fd
D             }fd|D             }d |D             }sCt          t          j        |          }t          fd|                              | d           }nd t	          ||          D             ^}}|                    |                                                    d|j        j	        |j        j
                            		fd|d d	         D             }t          t          j        d
 t	          ||          D             |          }|gS )Nc                0    g | ]} |          D ]}|S rJ   rJ   rK   s      r1   r   z@PandasLikeNamespace.concat_str.<locals>.func.<locals>.<listcomp>G  r   r3   c                :    g | ]}|                               S rJ   )r   )rL   rM   strings     r1   r   z@PandasLikeNamespace.concat_str.<locals>.func.<locals>.<listcomp>H  s#    ;;;affVnn;;;r3   c                6    g | ]}|                                 S rJ   r   r   s     r1   r   z@PandasLikeNamespace.concat_str.<locals>.func.<locals>.<listcomp>I  s     ;;;;;;r3   c                    | z   |z   S r.   rJ   )rU   rV   r
  s     r1   rW   z>PandasLikeNamespace.concat_str.<locals>.func.<locals>.<lambda>M  s    Q]Q-> r3   c              3  J   K   | ]\  }}|                     | d           V  dS  Nzip_with)rL   rM   nms      r1   rN   z?PandasLikeNamespace.concat_str.<locals>.func.<locals>.<genexpr>T  sG       ' ',1ArAJJsB''' ' ' ' ' 'r3   sep)rl   rm   rd   c              3  F   K   | ]}                     | d           V  dS r  r  )rL   r  	sep_arrays     r1   rN   z?PandasLikeNamespace.concat_str.<locals>.func.<locals>.<genexpr>_  s5      SSbi00"b99SSSSSSr3   c              3  &   K   | ]\  }}||z   V  d S r.   rJ   )rL   rM   vs      r1   rN   z?PandasLikeNamespace.concat_str.<locals>.func.<locals>.<genexpr>b  s*      FFtq!QUFFFFFFr3   )r   r   r   r  r   _with_native__native_namespace__ry   r   rm   rd   r   )rF   r   rX   	null_masknull_mask_resultresult
init_valuevalues
separatorsr  rD   r   r
  r  s   `        @r1   rY   z,PandasLikeNamespace.concat_str.<locals>.funcF  sv   DDDD5DDDL;;;;l;;;F;;l;;;I #)(,	#B#B  > > > >GGPP%%t ' '5?	5R5R' ' '#
V '333355<<!"(/5(/5	 =   	 TSSSIcrcNSSS
LFFz*f'E'EFFF  8Or3   rZ   r^   )rB   dtypesStringr6   r`   r   r   )r0   r
  r   rD   rY   r  s    ``` @r1   
concat_strzPandasLikeNamespace.concat_strA  s     %,,.. 	  	  	  	  	  	  	  	  	D z(("?"G95A	 ) 
 
 	
r3   c                l     d fd} j                             |t           t                      S )NrF   r   r+   rG   c                P    	 dd l }dd ldd lm} n$# t          $ r}d}t	          |          |d }~ww xY wj        j        } |t          j         fdD                        }|d         j	        } |j
        fd|D             dd |D             i}                    |g          }	j        }
j        }|                                }|                    |j                            |	          ||d         j        j                  }                    |||
          gS )	Nr   zgstruct requires pyarrow to be installed for pandas backend. Please install pyarrow: pip install pyarrowc              3  .   K   | ]} |          V  d S r.   rJ   r   s     r1   rN   z;PandasLikeNamespace.struct.<locals>.func.<locals>.<genexpr>}  s+      /K/KTR/K/K/K/K/K/Kr3   c              3  P   K   | ] }                     |j        d           V  !dS )T)from_pandasN)rw   r   )rL   rM   r   s     r1   rN   z;PandasLikeNamespace.struct.<locals>.func.<locals>.<genexpr>  s5      GG1"((18(66GGGGGGr3   field_namesc                    g | ]	}|j         
S rJ   )rl   r   s     r1   r   z<PandasLikeNamespace.struct.<locals>.func.<locals>.<listcomp>  s    444QV444r3   rk   r   )rs   rt   pyarrow.computecomputeru   r9   _align_full_broadcastr   r~   rl   make_structchunked_arrayrB   rA   rx   ry   rz   r{   r   rm   )rF   r   pcr   r   alignrX   rl   struct_arrayr#  r>   implr   result_nativer   rD   r0   s   `             @r1   rY   z(PandasLikeNamespace.struct.<locals>.funcp  s   	0####$$$$,,,,,,, 0 0 0B  "#&&C/0 L6EUE//K/K/K/KU/K/K/KKKLF!9>D)2>GGGGGGG44V444 L %%|n55FmG'D))++BII	--f55Qi&, &  M
 LLtWLUUVVs    
505rZ   r^   r_   ra   s   `` r1   structzPandasLikeNamespace.structo  sf    	W 	W 	W 	W 	W 	W 	W@ z(("?"G95A	 ) 
 
 	
r3   Nwhenr   then	otherwiseNativeSeriesT | Nonec                B    |j         }| ||          n |||          S r.   )where)r0   r<  r=  r>  rA  s        r1   _if_then_elsez!PandasLikeNamespace._if_then_else  s.     !J'/uuT{{{UU45K5KKr3   abmethodr   c                    d fd} j                             |t                    t                               S )NrF   r   r+   rG   c                   |                                }|                                }                    |j        |j        g          }|                              j        ddgf         }t          |j        j                  gS )N)rE  r   r$   r   )_evaluate_single_output_exprr   r   corrilocr   rA   rB   )	rF   a_seriesb_seriesr   rI  rC  rD  rE  r0   s	        r1   rY   z&PandasLikeNamespace.corr.<locals>.func  s    66q99H66q99H))8?HO*LMMC8868**/A37D )=t}   r3   rZ   r^   r_   )r0   rC  rD  rE  rY   s   ```` r1   rI  zPandasLikeNamespace.corr  st    		 		 		 		 		 		 		 		 		 z(("?1"E"E9!Q??	 ) 
 
 	
r3   )r+   r,   )r+   r4   )r+   r7   )r+   r   )r=   r   r>   r   r+   r?   )rD   r   r+   r   )rc   r!   rd   re   r+   r   )r+   r   )rD   r   r   r   r+   r   )r+   r   )r   r   r+   r   )r   r   r+   r   )rD   r   r
  r  r   r   r+   r   r.   )r<  r   r=  r   r>  r?  r+   r   )rC  r   rD  r   rE  r   r+   r   )__name__
__module____qualname__propertyr2   r6   r9   r<   rC   rb   r   r   r   r   r   r   r   r   r   r   r   r	  r)  r;  rB  rI  rJ   r3   r1   r*   r*   +   s        # # # X#    X       X  < < < X<       
 
 
 
/
 /
 /
 /
b
 
 
 

 
 
 

 
 
 
<
 
 
 
<
 
 
 

 
 
 
(
 
 
 
( A A A XA0 0 0 0
2 2 2 20 0 0 0",
 ,
 ,
 ,
\&
 &
 &
 &
X +/	L L L L L
 
 
 
 
 
r3   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dS )_NativeConcat.)r   objsIterable[NativeDataFrameT]r   r#   r   bool | Noner+   r   c                   d S r.   rJ   r0   rS  r   r   s       r1   __call__z_NativeConcat.__call__  	     3r3   Iterable[NativeSeriesT]r   c                   d S r.   rJ   rW  s       r1   rX  z_NativeConcat.__call__  s	     r3   *Iterable[NativeDataFrameT | NativeSeriesT]r%   c                   d S r.   rJ   rW  s       r1   rX  z_NativeConcat.__call__  rY  r3   r&    NativeDataFrameT | NativeSeriesTc                   d S r.   rJ   rW  s       r1   rX  z_NativeConcat.__call__  s	     ,/3r3   Nc                   d S r.   rJ   rW  s       r1   rX  z_NativeConcat.__call__  s	     ,/3r3   )rS  rT  r   r#   r   rU  r+   r   )rS  rZ  r   r#   r   rU  r+   r   )rS  r\  r   r%   r   rU  r+   r   )rS  r\  r   r&   r   rU  r+   r^  )rM  rN  rO  r   rX  rJ   r3   r1   rR  rR    s               X UX     X        X   / / / / / X/ !/ / / / / / / /r3   rR  )6
__future__r   r   r   	functoolsr   	itertoolsr   typingr   r   r	   r
   r   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   narwhals._utilsr   collections.abcr   r   typing_extensionsr   r   r   narwhals.typingr   r    r!   r"   __annotations__r#   r%   r&   r'   r(   r*   rR  rJ   r3   r1   <module>rr     s   " " " " " " "               B B B B B B B B B B B B B B . . . . . .        @ ? ? ? ? ? 5 5 5 5 5 5 C C C C C C 9 9 9 9 9 9 H H H H H H H H ? ? ? ? ? ? & & & & & & L22222222++++++77777777KKKKKKKKKK 
     > qz	 ! ! ! !  # # # #)[01 1 1 1 1    
    H
 H
 H
 H
 H
		H
 H
 H
V$/ $/ $/ $/ $/H-}<= $/ $/ $/ $/ $/r3   