
    g                       d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ er$d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  ddddddddZ! G d dee         Z" G d d      Z# G d  d!      Z$ G d" d#      Z% G d$ d%      Z& G d& d'      Z'y())    )annotations)TYPE_CHECKING)Any)Callable)Literal)Sequencereuse_series_implementation)%reuse_series_namespace_implementation)PandasLikeSeries)rename)	get_numpy)is_numpy_array)ColumnNotFoundError)CompliantExpr)Self)PandasLikeDataFramePandasLikeNamespace)DType)Implementation)Versioncumsumcummincummaxcumprodshiftrank)zcol->cum_sumzcol->cum_minzcol->cum_maxzcol->cum_prodcol->cum_count
col->shift	col->rankc                     e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d_dZd`dZdadZdbdZdcdZe	 	 	 	 	 	 	 	 	 	 	 	 ddd       Z	e	 	 	 	 	 	 	 	 	 	 	 	 ded       Z
	 	 	 	 dfdZdgd	Zdgd
ZdgdZdgdZdgdZdgdZdhdZdhdZdgdZdgdZdgdZdgdZdgdZdgdZdgdZdidZdidZdidZdidZdidZdidZ didZ!djdZ"djd Z#dkd!Z$did"Z%did#Z&did$Z'did%Z(did&Z)did'Z*dld(Z+	 dm	 	 	 	 	 	 	 dnd)Z,did*Z-did+Z.	 	 	 do	 	 	 	 	 	 	 dpd-Z/dqd.Z0did/Z1d,d,d,d,d0d1d2d3	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 drd4Z2dsd5Z3did6Z4	 	 	 	 	 	 	 	 dtd7Z5d2d2d8dud9Z6did:Z7dvd;Z8d2d<dwd=Z9did>Z:dxd?Z;	 dyd,d2d,d@	 	 	 	 	 	 	 	 	 	 	 dzdAZ<d{dBZ=d|dCZ>didDZ?didEZ@didFZAdidGZB	 	 	 	 	 	 d}dHZCdxdIZDdxdJZEd~dKZFdkdLZGdddMZHdkdNZI	 dy	 	 	 	 	 	 	 ddOZJdkdPZKdvdQZLdvdRZMdvdSZNdvdTZO	 	 	 	 	 	 	 	 	 	 ddUZP	 	 	 	 	 	 	 	 	 	 ddVZQ	 	 	 	 	 	 	 	 	 	 	 	 ddWZR	 	 	 	 	 	 	 	 	 	 	 	 ddXZS	 	 	 	 	 	 	 	 ddYZTeUddZ       ZVeUdd[       ZWeUdd\       ZXeUdd]       ZYeUdd^       ZZy,)PandasLikeExprc                   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        y N)	_call_depth_function_name_root_names_output_names_implementation_backend_version_version_kwargs)
selfcalldepthfunction_name
root_namesoutput_namesimplementationbackend_versionversionkwargss
             O/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_pandas_like/expr.py__init__zPandasLikeExpr.__init__*   sH     
+%)- /    c                $    | j                  |      S r%   )r&   )r/   dfs     r9   __call__zPandasLikeExpr.__call__A   s    zz"~r;   c           	     p    d| j                    d| j                   d| j                   d| j                   d	S )NzPandasLikeExpr(depth=z, function_name=z, root_names=z, output_names=))r'   r(   r)   r*   r/   s    r9   __repr__zPandasLikeExpr.__repr__D   sP    [[M "!001 2**+ , ../	
r;   c                `    ddl m}  || j                  | j                  | j                        S )Nr   r   )r7   )narwhals._pandas_like.namespacer   r+   r,   r-   )r/   r   s     r9   __narwhals_namespace__z%PandasLikeExpr.__narwhals_namespace__N   s)    G"  $"7"7
 	
r;   c                     y r%    rA   s    r9   __narwhals_expr__z PandasLikeExpr.__narwhals_expr__U   s    r;   c               V    dfd} | |ddt              t              |||i 	      S )Nc           	     N   	 D cg c]<  }t        | j                  |   | j                  | j                  | j                        > c}S c c}w # t
        $ rK}D cg c]  }|| j                  vs| nc c}w }}t        j                  || j                        |d }~ww xY w)Nr5   r6   r7   )missing_columnsavailable_columns)	r   _native_framer+   r,   r-   KeyErrorcolumnsr   'from_missing_and_available_column_names)r=   column_nameexrL   column_namess        r9   funcz.PandasLikeExpr.from_column_names.<locals>.func_   s     (4 (4 %((5')'9'9(*(;(; "	 (4    .:"Rlarzz>Q1l"R"R)QQ$3&(jj s;   A AAA A 	B$BA61A65*BB$r   colr1   r2   r3   r4   r5   r6   r7   r8   r=   r   returnzlist[PandasLikeSeries])list)clsr5   r6   r7   rU   rV   s       ` r9   from_column_namesz PandasLikeExpr.from_column_namesW   s<    	$ L)l+)+

 
	
r;   c               2    dfd} | |ddd d |||i 	      S )Nc           	         D cg c]J  }t        | j                  j                  d d |f   | j                  | j                  | j
                        L c}S c c}w )NrK   )r   rN   ilocr+   r,   r-   )r=   column_indexcolumn_indicess     r9   rV   z0PandasLikeExpr.from_column_indices.<locals>.func   sd     %3 %3L !$$))!\/:#%#5#5$&$7$7KK	 %3  s   AAr   nthrX   rY   rG   )r\   r5   r6   r7   rb   rV   s       ` r9   from_column_indicesz"PandasLikeExpr.from_column_indices}   s2    		 )+

 
	
r;   c                    t        | d|      S )Ncast)dtyper	   )r/   rg   s     r9   rf   zPandasLikeExpr.cast   s     +4uEEr;   c                    t        | d|      S )N__eq__otherr	   r/   rk   s     r9   ri   zPandasLikeExpr.__eq__       *4GGr;   c                    t        | d|      S )N__ne__rj   r	   rl   s     r9   ro   zPandasLikeExpr.__ne__   rm   r;   c                    t        | d|      S )N__ge__rj   r	   rl   s     r9   rq   zPandasLikeExpr.__ge__   rm   r;   c                    t        | d|      S )N__gt__rj   r	   rl   s     r9   rs   zPandasLikeExpr.__gt__   rm   r;   c                    t        | d|      S )N__le__rj   r	   rl   s     r9   ru   zPandasLikeExpr.__le__   rm   r;   c                    t        | d|      S )N__lt__rj   r	   rl   s     r9   rw   zPandasLikeExpr.__lt__   rm   r;   c                    t        | d|      S )N__and__rj   r	   rl   s     r9   ry   zPandasLikeExpr.__and__       *4%HHr;   c                    t        | d|      S )N__or__rj   r	   rl   s     r9   r|   zPandasLikeExpr.__or__   rm   r;   c                    t        | d|      S )N__add__rj   r	   rl   s     r9   r~   zPandasLikeExpr.__add__   rz   r;   c                    t        | d|      S )N__sub__rj   r	   rl   s     r9   r   zPandasLikeExpr.__sub__   rz   r;   c                    t        | d|      S )N__mul__rj   r	   rl   s     r9   r   zPandasLikeExpr.__mul__   rz   r;   c                    t        | d|      S )N__truediv__rj   r	   rl   s     r9   r   zPandasLikeExpr.__truediv__   s    *4eLLr;   c                    t        | d|      S )N__floordiv__rj   r	   rl   s     r9   r   zPandasLikeExpr.__floordiv__   s    *4uMMr;   c                    t        | d|      S )N__pow__rj   r	   rl   s     r9   r   zPandasLikeExpr.__pow__   rz   r;   c                    t        | d|      S )N__mod__rj   r	   rl   s     r9   r   zPandasLikeExpr.__mod__   rz   r;   c                    t        | d      S )N
__invert__r	   rA   s    r9   r   zPandasLikeExpr.__invert__       *4>>r;   c                    t        | dd      S )N
null_countTreturns_scalarr	   rA   s    r9   r   zPandasLikeExpr.null_count   s    *4dSSr;   c                    t        | dd      S )Nn_uniqueTr   r	   rA   s    r9   r   zPandasLikeExpr.n_unique   s    *4DQQr;   c                    t        | dd      S )NsumTr   r	   rA   s    r9   r   zPandasLikeExpr.sum       *4tLLr;   c                    t        | dd      S )NcountTr   r	   rA   s    r9   r   zPandasLikeExpr.count   s    *4NNr;   c                    t        | dd      S )NmeanTr   r	   rA   s    r9   r   zPandasLikeExpr.mean       *4MMr;   c                    t        | dd      S )NmedianTr   r	   rA   s    r9   r   zPandasLikeExpr.median   s    *4$OOr;   c                    t        | d|d      S )NstdTddofr   r	   r/   r   s     r9   r   zPandasLikeExpr.std       *4TRVWWr;   c                    t        | d|d      S )NvarTr   r	   r   s     r9   r   zPandasLikeExpr.var   r   r;   c                    t        | dd      S )NskewTr   r	   rA   s    r9   r   zPandasLikeExpr.skew   r   r;   c                    t        | dd      S )NanyTr   r	   rA   s    r9   r   zPandasLikeExpr.any   r   r;   c                    t        | dd      S )NallTr   r	   rA   s    r9   r   zPandasLikeExpr.all   r   r;   c                    t        | dd      S )NmaxTr   r	   rA   s    r9   r   zPandasLikeExpr.max   r   r;   c                    t        | dd      S )NminTr   r	   rA   s    r9   r   zPandasLikeExpr.min   r   r;   c                    t        | dd      S )Narg_minTr   r	   rA   s    r9   r   zPandasLikeExpr.arg_min       *44PPr;   c                    t        | dd      S )Narg_maxTr   r	   rA   s    r9   r   zPandasLikeExpr.arg_max   r   r;   c                     t        | d||      S )Nclip)lower_boundupper_boundr	   )r/   r   r   s      r9   r   zPandasLikeExpr.clip  s    *&k{
 	
r;   c                "    t        | d|||      S )N
is_between)r   r   closedr	   )r/   r   r   r   s       r9   r   zPandasLikeExpr.is_between  s      +##
 	
r;   c                    t        | d      S )Nis_nullr	   rA   s    r9   r   zPandasLikeExpr.is_null  s    *4;;r;   c                    t        | d      S )Nis_nanr	   rA   s    r9   r   zPandasLikeExpr.is_nan  s    *4::r;   Nc                "    t        | d|||      S )N	fill_null)valuestrategylimitr	   )r/   r   r   r   s       r9   r   zPandasLikeExpr.fill_null  s     ++UXU
 	
r;   c                    t        | d|      S )Nis_inrj   r	   rl   s     r9   r   zPandasLikeExpr.is_in#  s    *4FFr;   c                    t        | d      S )Narg_truer	   rA   s    r9   r   zPandasLikeExpr.arg_true&  s    *4<<r;   T   Fcomspan	half_lifealphaadjustmin_periodsignore_nullsc               *    t        | d|||||||	      S )Newm_meanr   r	   )r/   r   r   r   r   r   r   r   s           r9   r   zPandasLikeExpr.ewm_mean)  s,     +#%

 
	
r;   c                \    | j                         } |j                  | }t        | d|      S )Nfilterrj   )rE   all_horizontalr
   )r/   
predicatesplxrk   s       r9   r   zPandasLikeExpr.filter@  s1    ))+"""J/*4GGr;   c                    t        | d      S )N
drop_nullsr	   rA   s    r9   r   zPandasLikeExpr.drop_nullsE  r   r;   c               "    t        | d|||      S )Nreplace_strict)oldnewreturn_dtyper	   )r/   r   r   r   s       r9   r   zPandasLikeExpr.replace_strictH  s     +"<
 	
r;   
descending
nulls_lastc                    t        | d||      S )Nsortr   r	   )r/   r   r   s      r9   r   zPandasLikeExpr.sortO  s    *&ZJ
 	
r;   c                    t        | d      S )Nabsr	   rA   s    r9   r   zPandasLikeExpr.absT  s    *477r;   c                   t        | d|      S )Ncum_sumreverser	   r/   r   s     r9   r   zPandasLikeExpr.cum_sumW      *4GLLr;   maintain_orderc                   t        | d|      S )Nuniquer   r	   )r/   r   s     r9   r   zPandasLikeExpr.uniqueZ  s    *4.YYr;   c                    t        | d      S )Ndiffr	   rA   s    r9   r   zPandasLikeExpr.diff]      *488r;   c                    t        | d|      S )Nr   nr	   r/   r   s     r9   r   zPandasLikeExpr.shift`  s    *4A>>r;   )fractionwith_replacementseedc               $    t        | d||||      S )Nsample)r   r   r   r   r	   )r/   r   r   r   r   s        r9   r   zPandasLikeExpr.samplec  s#     +-
 	
r;   c                      j                   fd j                   j                   j                  g j                   j
                   j                  i  j                  di	      S )Nc                j    j                  |       D cg c]  }|j                         c}S c c}w r%   )r&   alias)r=   seriesnamer/   s     r9   <lambda>z&PandasLikeExpr.alias.<locals>.<lambda>x  s(    BHvT*HHs   0r  rX   )	__class__r'   r(   r)   r+   r,   r-   r.   )r/   r  s   ``r9   r   zPandasLikeExpr.aliast  sh     ~~H++--''// 11MM1dll1FD1  

 
	
r;   c                4     j                   t        v rd fd}nd fd} j                  | j                  dz    j                   dz    j                   j
                   j                   j                   j                  i  j                  di	      S )Nc                   
j                   
j                  d}t        |      
j                  j	                  dd      }|rd}t        |      
j                  dk(  rG
j                         }| j                   |j                  
j                   j                                } 
j                  dk(  rd
j                  j	                  dd	      i}nY
j                  d
k(  rF
j                  j	                  dd      }|dk(  rdn|
j                  j	                  dd       ddd}nddi} t        | j                  j                  t        	      d      
j                     t        
j                           di |}| j!                  t#        |t%        t'        
j                  
j                               
j(                  
j*                              }
j                   D cg c]  }||   	 c}S c c}w )NAnonymous expressions are not supported in over.
Instead of `nw.all()`, try using a named expression, such as `nw.col('a', 'b')`
r   FzbCumulative operation with `reverse=True` is not supported in over context for pandas-like backend.r   r    periodsr   r   r!   methodaverageordinalfirstr   keep)r  	ascending	na_optionpctskipnaT)as_index)rP   r5   r6   rG   )r*   r)   
ValueErrorr.   getNotImplementedErrorr(   rE   with_columnsrW   r   getattrrN   groupbyr[   /MANY_TO_MANY_AGG_FUNCTIONS_TO_PANDAS_EQUIVALENT_from_native_framer   dictzipr+   r,   )r=   msgr   r   r8   _method
res_nativeresult_framer  keysr/   s            r9   rV   z!PandasLikeExpr.over.<locals>.func  s   &&.$2B2B2J/ 
 %S/),,**9e<@  .c22&&*::557C'#''43C3C*D*L*L*N)NOB&&,6')9)9#q)ABF((K7"ll..xCG-4	-A'w)-)9)9,)N%N%+$	F '-FW$$,,T$Z%,H(( DDDWDWX	 
 
  "44" $S)9)94;M;M%N O'+';';(,(=(=	  8<7I7IJ7ItT*7IJJJs   *G9c                   j                   d}t        |       | j                  ddij                        } | j                   j                  |dd      }j                   D cg c]  }||   	 c}S c c}w )Nr  drop_null_keysFleft_right)howleft_onright_onsuffix)r*   r  group_byaggselectjoin)r=   r  tmpr  r   r/   s       r9   rV   z!PandasLikeExpr.over.<locals>.func  s    %%-/ 
 %S/)!bkk4>>BB4Hbii&++VTD ,  /3.@.@A.@dD	.@AAAs   -A<r   z->overr   rX   rY   )
r(   r  r  r'   r)   r*   r+   r,   r-   r.   )r/   r   rV   s   `` r9   overzPandasLikeExpr.over  s    "QQ4KpB ~~++/--8''++// 11MM1dll1FD1  

 
	
r;   c                    t        | d      S )Nis_duplicatedr	   rA   s    r9   r0  zPandasLikeExpr.is_duplicated  s    *4AAr;   c                    t        | d      S )N	is_uniquer	   rA   s    r9   r2  zPandasLikeExpr.is_unique      *4==r;   c                    t        | d      S )Nis_first_distinctr	   rA   s    r9   r5  z PandasLikeExpr.is_first_distinct  s    *41DEEr;   c                    t        | d      S )Nis_last_distinctr	   rA   s    r9   r7  zPandasLikeExpr.is_last_distinct  s    *41CDDr;   c                "    t        | d||d      S )NquantileT)r9  interpolationr   r	   )r/   r9  r:  s      r9   r9  zPandasLikeExpr.quantile  s     
 +'
 	
r;   c                    t        | d|      S )Nheadr   r	   r   s     r9   r<  zPandasLikeExpr.head      *41==r;   c                    t        | d|      S )Ntailr   r	   r   s     r9   r?  zPandasLikeExpr.tail  r=  r;   c                    t        | d|      S )Nround)decimalsr	   )r/   rB  s     r9   rA  zPandasLikeExpr.round  s    *48LLr;   c                    t        | dd      S )NlenTr   r	   rA   s    r9   rD  zPandasLikeExpr.len  r   r;   c                     t        | d||      S )Ngather_every)r   offsetr	   )r/   r   rG  s      r9   rF  zPandasLikeExpr.gather_every  s    *41VTTr;   c                    t        | d      S )Nmoder	   rA   s    r9   rI  zPandasLikeExpr.mode   r   r;   c                    d fd} j                  | j                  dz    j                  dz    j                   j                   j
                   j                   j                  i  j                  d	      S )Nc                   j                  |       }|D cg c]  }|j                   }}|D cg c]
  } 	|       }}t        |d         s t               x}^|j	                  |d         rJt        ||      D cg c]3  \  }}| j                         j                  |      j                  |      5 }}}
|D cg c]  }|j                  
       }}|S c c}w c c}w c c}}w c c}w )Nr   )
r&   r  r   r   isscalarr  rE   _create_compliant_seriesr   rf   )r=   input_series_listinput_seriesr4   r   resultnparrayoutput_namefunctionr   r/   s            r9   rV   z(PandasLikeExpr.map_batches.<locals>.func  s    $

2BSTBS,L--BSLT5FG5F6hv&5FFGfQi( {"/BKKq	4J /2&,.G	 /H*{ --/--e4U;'( /H	   'BHI&&++l3&IM UG Js   CC >8C%?C+r   z->map_batches)rT  r   rX   rY   )	r  r'   r(   r)   r*   r+   r,   r-   r.   )r/   rT  r   rV   s   ``` r9   map_batcheszPandasLikeExpr.map_batches  sz    
	" ~~++/--?''++// 11MMWdllW,W  

 
	
r;   c                    t        | d      S )N	is_finiter	   rA   s    r9   rW  zPandasLikeExpr.is_finite%  r3  r;   c                   t        | d|      S )N	cum_countr   r	   r   s     r9   rY  zPandasLikeExpr.cum_count(  s    *4gNNr;   c                   t        | d|      S )Ncum_minr   r	   r   s     r9   r[  zPandasLikeExpr.cum_min+  r   r;   c                   t        | d|      S )Ncum_maxr   r	   r   s     r9   r]  zPandasLikeExpr.cum_max.  r   r;   c                   t        | d|      S )Ncum_prodr   r	   r   s     r9   r_  zPandasLikeExpr.cum_prod1  s    *4WMMr;   c               "    t        | d|||      S )Nrolling_sumwindow_sizer   centerr	   r/   rc  r   rd  s       r9   ra  zPandasLikeExpr.rolling_sum4  s      +##
 	
r;   c               "    t        | d|||      S )Nrolling_meanrb  r	   re  s       r9   rg  zPandasLikeExpr.rolling_meanC  s      +##
 	
r;   c               $    t        | d||||      S )Nrolling_varrc  r   rd  r   r	   r/   rc  r   rd  r   s        r9   ri  zPandasLikeExpr.rolling_varR  #     +##
 	
r;   c               $    t        | d||||      S )Nrolling_stdrj  r	   rk  s        r9   rn  zPandasLikeExpr.rolling_stdc  rl  r;   c                    t        | d||      S )Nr   )r  r   r	   )r/   r  r   s      r9   r   zPandasLikeExpr.rankt  s     +&J
 	
r;   c                    t        |       S r%   )PandasLikeExprStringNamespacerA   s    r9   strzPandasLikeExpr.str~  s    ,T22r;   c                    t        |       S r%   )PandasLikeExprDateTimeNamespacerA   s    r9   dtzPandasLikeExpr.dt  s    .t44r;   c                    t        |       S r%   )PandasLikeExprCatNamespacerA   s    r9   catzPandasLikeExpr.cat  s    )$//r;   c                    t        |       S r%   )PandasLikeExprNameNamespacerA   s    r9   r  zPandasLikeExpr.name      *400r;   c                    t        |       S r%   )PandasLikeExprListNamespacerA   s    r9   r[   zPandasLikeExpr.list  r{  r;   )r/   r   r0   z;Callable[[PandasLikeDataFrame], Sequence[PandasLikeSeries]]r1   intr2   rr  r3   list[str] | Noner4   r  r5   r   r6   tuple[int, ...]r7   r   r8   zdict[str, Any]rZ   None)r=   r   rZ   zSequence[PandasLikeSeries])rZ   rr  )rZ   r   )rZ   r  )r\   
type[Self]rU   rr  r5   r   r6   r  r7   r   rZ   r   )r\   r  rb   r~  r5   r   r6   r  r7   r   rZ   r   )rg   r   rZ   r   )rk   zPandasLikeExpr | AnyrZ   r   )rk   zPandasLikeExpr | bool | AnyrZ   r   )rZ   r   )r   r~  rZ   r   )r/   r   rZ   r   )r   r   r   r   rZ   r   )both)r   r   r   r   r   rr  rZ   r   )NNN)r   z
Any | Noner   z%Literal['forward', 'backward'] | Noner   
int | NonerZ   r   )rk   r   rZ   r   )r   float | Noner   r  r   r  r   r  r   boolr   r~  r   r  rZ   r   )r   r   rZ   r   )r   Sequence[Any]r   r  r   DType | NonerZ   r   )r   r  r   r  rZ   r   )r/   r   r   r  rZ   r   )r   r  rZ   r   )r   r~  rZ   r   r%   )r/   r   r   r  r   r  r   r  r   r  rZ   r   )r  rr  rZ   r   )r/   r   r   z	list[str]rZ   r   )r9  floatr:  z;Literal['nearest', 'higher', 'lower', 'midpoint', 'linear']rZ   r   )r/   r   rB  r~  rZ   r   )r   )r/   r   r   r~  rG  r~  rZ   r   )r/   r   rT  zCallable[[Any], Any]r   r  rZ   r   )
r/   r   rc  r~  r   r  rd  r  rZ   r   )r/   r   rc  r~  r   r  rd  r  r   r~  rZ   r   )r/   r   r  z4Literal['average', 'min', 'max', 'dense', 'ordinal']r   r  rZ   r   )r/   r   rZ   rq  )r/   r   rZ   rt  )r/   r   rZ   rw  )r/   r   rZ   rz  )r/   r   rZ   r}  )[__name__
__module____qualname__r:   r>   rB   rE   rH   classmethodr]   rd   rf   ri   ro   rq   rs   ru   rw   ry   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.  r0  r2  r5  r7  r9  r<  r?  rA  rD  rF  rI  rU  rW  rY  r[  r]  r_  ra  rg  ri  rn  r   propertyrr  ru  rx  r  r[   rG   r;   r9   r#   r#   )   s   I 	
  % ' ' )   
.

 -#
#
#
 '#
 )	#

 #
 
#
 #
J 


 '
 )	

 
 

 
<FF 
FHHHHHHIHIIIMNII?TRMONPXXNMMMMQQ

 AG	
	
-0	
:=	
		
<;
 !:> 	

 8
 	

 

G= !!"&""
 
 	

  
 
 
 
 
 

.H
?
 
'4
GS
	
 */5 

8M 05 Z9?
 
 "&!&


 	

 
 
 

"
S
jB>FE

 S
 
	
>>MMU9 &* 
 
& 
 # 
 
	 
D>OMMN


  	

 
 




  	

 
 




  	

 
 
 

"


  	

 
 
 

"

D
 	

 

 3 3 5 5 0 0 1 1 1 1r;   r#   c                      e Zd ZddZddZy)rw  c                    || _         y r%   _compliant_exprr/   exprs     r9   r:   z#PandasLikeExprCatNamespace.__init__  
    #r;   c                0    t        | j                  dd      S )Nrx  get_categoriesr   r  rA   s    r9   r  z)PandasLikeExprCatNamespace.get_categories  s    4  
 	
r;   Nr  r#   rZ   r  rZ   r#   )r  r  r  r:   r  rG   r;   r9   rw  rw    s    $
r;   rw  c                      e Zd ZddZ	 	 ddZddd	 	 	 	 	 	 	 	 	 ddZdd	 	 	 	 	 	 	 ddZddd
ZddZddZ	ddZ
dddZddZddZddZy	)rq  c                    || _         y r%   r  r  s     r9   r:   z&PandasLikeExprStringNamespace.__init__  r  r;   c                0    t        | j                  dd      S )Nrr  	len_charsr  rA   s    r9   r  z'PandasLikeExprStringNamespace.len_chars  s     5  %
 	
r;   Fr   )literalr   c          	     :    t        | j                  dd||||      S )Nrr  replace)patternr   r  r   r  )r/   r  r   r  r   s        r9   r  z%PandasLikeExprStringNamespace.replace  s,     5  
 	
r;   )r  c               8    t        | j                  dd|||      S )Nrr  replace_all)r  r   r  r  )r/   r  r   r  s       r9   r  z)PandasLikeExprStringNamespace.replace_all  s)     5  
 	
r;   Nc                4    t        | j                  dd|      S )Nrr  strip_chars)
charactersr  )r/   r  s     r9   r  z)PandasLikeExprStringNamespace.strip_chars  s!    4  !	
 	
r;   c                4    t        | j                  dd|      S )Nrr  starts_with)prefixr  )r/   r  s     r9   r  z)PandasLikeExprStringNamespace.starts_with  !    4  	
 	
r;   c                4    t        | j                  dd|      S )Nrr  	ends_with)r(  r  )r/   r(  s     r9   r  z'PandasLikeExprStringNamespace.ends_with  s!    4  	
 	
r;   c               6    t        | j                  dd||      S )Nrr  contains)r  r  r  )r/   r  r  s      r9   r  z&PandasLikeExprStringNamespace.contains  s$    4  
 	
r;   c                6    t        | j                  dd||      S )Nrr  slice)rG  lengthr  )r/   rG  r  s      r9   r  z#PandasLikeExprStringNamespace.slice  s     4  %
 	
r;   c                4    t        | j                  dd|      S )Nrr  to_datetimeformatr  r/   r  s     r9   r  z)PandasLikeExprStringNamespace.to_datetime  r  r;   c                0    t        | j                  dd      S )Nrr  to_uppercaser  rA   s    r9   r  z*PandasLikeExprStringNamespace.to_uppercase      4  
 	
r;   c                0    t        | j                  dd      S )Nrr  to_lowercaser  rA   s    r9   r  z*PandasLikeExprStringNamespace.to_lowercase  r  r;   r  r  )
r  rr  r   rr  r  r  r   r~  rZ   r#   )r  rr  r   rr  r  r  rZ   r#   r%   )r  
str | NonerZ   r#   )r  rr  rZ   r#   )r(  rr  rZ   r#   )r  rr  r  r  rZ   r#   )rG  r~  r  r  rZ   r#   )r/   r   r  r  rZ   r#   )r  r  r  r:   r  r  r  r  r  r  r  r  r  r  r  rG   r;   r9   rq  rq    s    $
	
 

 

 
 
 

. 

 

 
 

 








r;   rq  c                      e Z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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dddZy)rt  c                    || _         y r%   r  r  s     r9   r:   z(PandasLikeExprDateTimeNamespace.__init__
  r  r;   c                0    t        | j                  dd      S )Nru  dater  rA   s    r9   r  z$PandasLikeExprDateTimeNamespace.date      4T5I5I4QWXXr;   c                0    t        | j                  dd      S )Nru  yearr  rA   s    r9   r  z$PandasLikeExprDateTimeNamespace.year  r  r;   c                0    t        | j                  dd      S )Nru  monthr  rA   s    r9   r  z%PandasLikeExprDateTimeNamespace.month  s    4T5I5I4QXYYr;   c                0    t        | j                  dd      S )Nru  dayr  rA   s    r9   r  z#PandasLikeExprDateTimeNamespace.day  s    4T5I5I4QVWWr;   c                0    t        | j                  dd      S )Nru  hourr  rA   s    r9   r  z$PandasLikeExprDateTimeNamespace.hour  r  r;   c                0    t        | j                  dd      S )Nru  minuter  rA   s    r9   r  z&PandasLikeExprDateTimeNamespace.minute      4T5I5I4QYZZr;   c                0    t        | j                  dd      S )Nru  secondr  rA   s    r9   r  z&PandasLikeExprDateTimeNamespace.second  r  r;   c                0    t        | j                  dd      S )Nru  millisecondr  rA   s    r9   r  z+PandasLikeExprDateTimeNamespace.millisecond"      4  $
 	
r;   c                0    t        | j                  dd      S )Nru  microsecondr  rA   s    r9   r  z+PandasLikeExprDateTimeNamespace.microsecond'  r  r;   c                0    t        | j                  dd      S )Nru  
nanosecondr  rA   s    r9   r  z*PandasLikeExprDateTimeNamespace.nanosecond,  s    4  $
 	
r;   c                0    t        | j                  dd      S )Nru  ordinal_dayr  rA   s    r9   r  z+PandasLikeExprDateTimeNamespace.ordinal_day1  r  r;   c                0    t        | j                  dd      S )Nru  weekdayr  rA   s    r9   r  z'PandasLikeExprDateTimeNamespace.weekday6  s    4  $	
 	
r;   c                0    t        | j                  dd      S )Nru  total_minutesr  rA   s    r9   r  z-PandasLikeExprDateTimeNamespace.total_minutes;      4  $
 	
r;   c                0    t        | j                  dd      S )Nru  total_secondsr  rA   s    r9   r  z-PandasLikeExprDateTimeNamespace.total_seconds@  r  r;   c                0    t        | j                  dd      S )Nru  total_millisecondsr  rA   s    r9   r  z2PandasLikeExprDateTimeNamespace.total_millisecondsE      4  $(<
 	
r;   c                0    t        | j                  dd      S )Nru  total_microsecondsr  rA   s    r9   r  z2PandasLikeExprDateTimeNamespace.total_microsecondsJ  r  r;   c                0    t        | j                  dd      S )Nru  total_nanosecondsr  rA   s    r9   r  z1PandasLikeExprDateTimeNamespace.total_nanosecondsO  s    4  $(;
 	
r;   c                4    t        | j                  dd|      S )Nru  	to_stringr  r  r  s     r9   r  z)PandasLikeExprDateTimeNamespace.to_stringT  s    4  $F
 	
r;   c                4    t        | j                  dd|      S )Nru  replace_time_zone	time_zoner  r/   r  s     r9   r  z1PandasLikeExprDateTimeNamespace.replace_time_zoneY      4  $(;y
 	
r;   c                4    t        | j                  dd|      S )Nru  convert_time_zoner  r  r  s     r9   r  z1PandasLikeExprDateTimeNamespace.convert_time_zone^  r  r;   c                4    t        | j                  dd|      S )Nru  	timestamp)	time_unitr  )r/   r  s     r9   r  z)PandasLikeExprDateTimeNamespace.timestampc  s    4  $y
 	
r;   Nr  r  )r  rr  rZ   r#   )r  r  rZ   r#   )r  rr  rZ   r#   )us)r  zLiteral['ns', 'us', 'ms']rZ   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  r  rG   r;   r9   rt  rt  	  sw    $YYZXY[[


























r;   rt  c                  D    e Zd Zd	dZd
dZddZddZddZd
dZd
dZ	y)rz  c                    || _         y r%   r  r  s     r9   r:   z$PandasLikeExprNameNamespace.__init__j  r  r;   c                     j                   j                  d}t        |       j                   j                   fd j                   j                   j                   j
                   j                   j                   j                   j                   j                   j                   j                   j                  	      S )NzAnonymous expressions are not supported in `.name.keep`.
Instead of `nw.all()`, try using a named expression, such as `nw.col('a', 'b')`
c                    t        j                  j                  |             D cg c]  \  }}|j                  |       c}}S c c}}w r%   r  r  r&   r   )r=   r   r  r3   r/   s      r9   r  z2PandasLikeExprNameNamespace.keep.<locals>.<lambda>y  sH    $'(<(<(B(B2(F
$S$SLFD T"$S    A	rX   )
r  r)   r  r  r'   r(   r+   r,   r-   r.   )r/   r  r3   s   ` @r9   r  z PandasLikeExprNameNamespace.keepm  s    ))55
' 
 S/!##-- &&--..==!#//?? 00AA((11''// . 
 	
r;   c                     j                   j                  }|d}t        |      |D cg c]  } |t        |             c} j                   j	                   fd j                   j
                   j                   j                  | j                   j                   j                   j                   j                   j                  i  j                   j                  d|i	      S c c}w )NzAnonymous expressions are not supported in `.name.map`.
Instead of `nw.all()`, try using a named expression, such as `nw.col('a', 'b')`
c                    t        j                  j                  |             D cg c]  \  }}|j                  |       c}}S c c}}w r%   r  r=   r   r  r4   r/   s      r9   r  z1PandasLikeExprNameNamespace.map.<locals>.<lambda>  H    $'(<(<(B(B2(F$U$ULFD T"$U r  rT  rX   r  r)   r  rr  r  r'   r(   r+   r,   r-   r.   )r/   rT  r3   r  r  r4   s   `    @r9   mapzPandasLikeExprNameNamespace.map  s    ))55
' 
 S/!8BC
T+
C##-- &&--..==!%//?? 00AA((11Id**22IJI . 
 	
 Ds   C-c                     j                   j                  }|d}t        |      |D cg c]  }|t        |      z    c} j                   j	                   fd j                   j
                   j                   j                  | j                   j                   j                   j                   j                   j                  i  j                   j                  d|i	      S c c}w )NzAnonymous expressions are not supported in `.name.prefix`.
Instead of `nw.all()`, try using a named expression, such as `nw.col('a', 'b')`
c                    t        j                  j                  |             D cg c]  \  }}|j                  |       c}}S c c}}w r%   r  r  s      r9   r  z4PandasLikeExprNameNamespace.prefix.<locals>.<lambda>  r  r  r  rX   r  )r/   r  r3   r  r  r4   s   `    @r9   r  z"PandasLikeExprNameNamespace.prefix  s    ))55
' 
 S/!7ABztT*zB##-- &&--..==!%//?? 00AA((11Ed**22EHfE . 
 	
 C   C*c                     j                   j                  }|d}t        |      |D cg c]  }t        |      |z    c} j                   j	                   fd j                   j
                   j                   j                  | j                   j                   j                   j                   j                   j                  i  j                   j                  d|i	      S c c}w )NzAnonymous expressions are not supported in `.name.suffix`.
Instead of `nw.all()`, try using a named expression, such as `nw.col('a', 'b')`
c                    t        j                  j                  |             D cg c]  \  }}|j                  |       c}}S c c}}w r%   r  r  s      r9   r  z4PandasLikeExprNameNamespace.suffix.<locals>.<lambda>  r  r  r(  rX   r  )r/   r(  r3   r  r  r4   s   `    @r9   r(  z"PandasLikeExprNameNamespace.suffix  s    ))55
' 
 S/!7ABztD	F*zB##-- &&--..==!%//?? 00AA((11Ed**22EHfE . 
 	
 Cr  c                     j                   j                  }|d}t        |      |D cg c]  }t        |      j	                          c} j                   j                   fd j                   j                   j                   j                  | j                   j                   j                   j                   j                   j                   j                   j                  	      S c c}w )NzAnonymous expressions are not supported in `.name.to_lowercase`.
Instead of `nw.all()`, try using a named expression, such as `nw.col('a', 'b')`
c                    t        j                  j                  |             D cg c]  \  }}|j                  |       c}}S c c}}w r%   r  r  s      r9   r  z:PandasLikeExprNameNamespace.to_lowercase.<locals>.<lambda>  r  r  rX   )r  r)   r  rr  lowerr  r'   r(   r+   r,   r-   r.   r/   r3   r  r  r4   s   `   @r9   r  z(PandasLikeExprNameNamespace.to_lowercase      ))55
' 
 S/!6@AjdD	)jA##-- &&--..==!%//?? 00AA((11''// . 
 	
 B    C/c                     j                   j                  }|d}t        |      |D cg c]  }t        |      j	                          c} j                   j                   fd j                   j                   j                   j                  | j                   j                   j                   j                   j                   j                   j                   j                  	      S c c}w )NzAnonymous expressions are not supported in `.name.to_uppercase`.
Instead of `nw.all()`, try using a named expression, such as `nw.col('a', 'b')`
c                    t        j                  j                  |             D cg c]  \  }}|j                  |       c}}S c c}}w r%   r  r  s      r9   r  z:PandasLikeExprNameNamespace.to_uppercase.<locals>.<lambda>   r  r  rX   )r  r)   r  rr  upperr  r'   r(   r+   r,   r-   r.   r	  s   `   @r9   r  z(PandasLikeExprNameNamespace.to_uppercase  r
  r  Nr/   r   r  r#   rZ   r  r/   r   rZ   r#   )r/   r   rT  zCallable[[str], str]rZ   r#   )r/   r   r  rr  rZ   r#   )r/   r   r(  rr  rZ   r#   )
r  r  r  r:   r  r   r  r(  r  r  rG   r;   r9   rz  rz  i  s%    $
4
8
4
6
6
r;   rz  c                      e Zd ZddZddZy)r}  c                    || _         y r%   )_exprr  s     r9   r:   z$PandasLikeExprListNamespace.__init__  s	    
r;   c                0    t        | j                  dd      S )Nr[   rD  )r   r  rA   s    r9   rD  zPandasLikeExprListNamespace.len  s    4JJ
 	
r;   Nr  r  )r  r  r  r:   rD  rG   r;   r9   r}  r}    s    
r;   r}  N)(
__future__r   typingr   r   r   r   r   narwhals._expression_parsingr
   r   narwhals._pandas_like.seriesr   narwhals._pandas_like.utilsr   narwhals.dependenciesr   r   narwhals.exceptionsr   narwhals.typingr   typing_extensionsr   narwhals._pandas_like.dataframer   rD   r   narwhals.dtypesr   narwhals.utilsr   r   r  r#   rw  rq  rt  rz  r}  rG   r;   r9   <module>r!     s    "       D N 9 . + 0 3 )&CC%-&  3 /g	1]#34 g	1T	
 	
g
 g
T]
 ]
@c
 c
L	
 	
r;   