
    h%8                    b   S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S S	KJr  S S
KJr  \(       aB  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  SSSSSSSSSSSS S!.r"      S'S" jr# " S# S$\S%\4   5      r$g&)(    )annotations)TYPE_CHECKING)Any)Sequence)	EagerExpr)!evaluate_output_names_and_aliases)PandasLikeGroupBy)PandasLikeSeries)ColumnNotFoundError)generate_temporary_column_name)Self)
AliasNames)	EvalNames)
EvalSeries)ExprMetadata)PandasLikeDataFramePandasLikeNamespace)
RankMethod)Implementation)Version)_FullContextcumsumcummincummaxcumprodsummeanstdvarshiftrankdiff)cum_sumcum_mincum_maxcum_prod	cum_countrolling_sumrolling_meanrolling_stdrolling_varr!   r"   r#   c                    U S:X  a	  SUS   0nU$ U S:X  a  US   nUS:X  a  SOUUS   (       + S	S
S.nU$ U R                  S5      (       a  SS0nU$ U R                  S5      (       a  US   US   US   S.nU$ UnU$ )Nr!   periodsnr"   methodordinalfirst
descendingkeepF)r0   	ascending	na_optionpctcum_skipnaTrolling_min_sampleswindow_sizecenter)min_periodswindowr=   )
startswith)function_namekwargspandas_kwargs_methods       L/var/www/html/env/lib/python3.13/site-packages/narwhals/_pandas_like/expr.py"window_kwargs_to_pandas_equivalentrF   /   s     ,5vc{+C& % 
&	 "!(I!5g7#L11	
   
	!	!&	)	)!4(  
	!	!*	-	-!-0]+X&
      c                     \ rS rSrSS.                   SS jjrSS jrSS jr\SS.         SS	 jj5       r\        SS
 j5       r	                SS jr
SS jrS S jr      S!S jrSS jrSS jrSS jrSS jrS"S jrS"S jr          S#S jr          S#S jrS$S jrSrg)%PandasLikeExprI   Ncall_kwargsc                   Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        U	=(       d    0 U l        S U l	        g N)
_call_depth_function_name_evaluate_output_names_alias_output_names_implementation_backend_version_version_call_kwargs	_metadata)
selfcalldepthrA   evaluate_output_namesalias_output_namesimplementationbackend_versionversionrL   s
             rE   __init__PandasLikeExpr.__init__J   sE     
+&;##5 - /'-2.2rG   c                Z    SSK Jn  U" U R                  U R                  U R                  S9$ )Nr   r   )r`   )narwhals._pandas_like.namespacer   rT   rU   rV   )rY   r   s     rE   __narwhals_namespace__%PandasLikeExpr.__narwhals_namespace__b   s)    G"  $"7"7
 	
rG   c                    g rN    )rY   s    rE   __narwhals_expr__ PandasLikeExpr.__narwhals_expr__i   s    rG    )rA   c              j   ^ SU4S jjnU " USUTS UR                   UR                  UR                  S9$ )Nc           
     n  >  T" U 5       Vs/ s H:  n[        U R                  U   U R                  U R                  U R                  S9PM<     sn$ s  snf ! [
         aT  nT" U 5       Vs/ s H  o3U R                  ;  d  M  UPM     Os  snf nn[        R                  " UU R                  S9UeS nAff = f)Nr^   r_   r`   )missing_columnsavailable_columns)	r
   _native_framerT   rU   rV   KeyErrorcolumnsr   'from_missing_and_available_column_names)dfcolumn_nameexro   evaluate_column_namess        rE   func.PandasLikeExpr.from_column_names.<locals>.funct   s     (=R'@ (A %((5')'9'9(*(;(; "	 (A    4R8#8!RZZ<OA8# # *QQ$3&(jj 	s;   
A AAA A 
B4 
B/*BB(B//B4r   r[   rA   r\   r]   r^   r_   r`   ru   r   returnzlist[PandasLikeSeries]rT   rU   rV   )clsry   contextrA   rz   s    `   rE   from_column_names PandasLikeExpr.from_column_namesk   sA    	( '"7#"22#44$$	
 		
rG   c               r   ^ SU4S jjnU " USSU4S jS UR                   UR                  UR                  S9$ )Nc           
        > T Vs/ s HH  n[        U R                  R                  S S 2U4   U R                  U R                  U R
                  S9PMJ     sn$ s  snf )Nrn   )r
   rq   ilocrT   rU   rV   )ru   column_indexcolumn_indicess     rE   rz   0PandasLikeExpr.from_column_indices.<locals>.func   sd     %3 %3L !$$))!\/:#%#5#5$&$7$7KK	 %3  s   AAr   nthc                L   > T Vs/ s H  oR                   U   PM     sn$ s  snf rN   )rs   )ru   ir   s     rE   <lambda>4PandasLikeExpr.from_column_indices.<locals>.<lambda>   s    ^-T^jjm^-T-Ts   !r|   r}   r   )r   r   r   rz   s     ` rE   from_column_indices"PandasLikeExpr.from_column_indices   sA    		 "T#"22#44$$	
 		
rG   c               .    U R                  SUUUUUUUS9$ )Newm_mean)comspan	half_lifealphaadjustr;   ignore_nulls_reuse_series)rY   r   r   r   r   r   r;   r   s           rE   r   PandasLikeExpr.ewm_mean   s4     !!#% " 	
 		
rG   c               &    U R                  SSU0S9$ )Nr$   reverserK   r   rY   r   s     rE   r$   PandasLikeExpr.cum_sum       !!))W9M!NNrG   c                &    U R                  SSU0S9$ )Nr!   r/   rK   r   )rY   r/   s     rE   r!   PandasLikeExpr.shift   s    !!'Qx!@@rG   c                  ^ ^^^^^ T(       d  Tc   eSUU 4S jjnOT R                  5       (       d  Sn[        U5      e[        R                  " T 5      m[        R                  T[        R                  R                  T5      5      mTcG  ST SSR                  [        5       SSR                  [        R                  5       S3n[        U5      e[        TT R                  5      mSUUUUUU 4S jjnT R                  UT R                  S	-   T R                  S
-   T R                  T R                  T R                  T R                   T R"                  S9$ )Nc                   > [        SU R                  5      nU R                  U5      R                  " TSSS.6n T" U R	                  U/SS95      nU R                  U5      nU H  nUR                  X45        M     U$ )N   Fr3   
nulls_lastT)strict)r   rs   with_row_indexsortdrop
get_column_scatter_in_place)ru   tokenresultssorting_indicessorder_byrY   s        rE   rz   !PandasLikeExpr.over.<locals>.func   s{    6q"**E&&u-22%E rwwwtw<="$--"6 A''; !rG   zOnly elementary expressions are supported for `.over` in pandas-like backends.

Please see: https://narwhals-dev.github.io/narwhals/pandas_like_concepts/improve_group_by_operation/zUnsupported function: z- in `over` context.

Supported functions are z, z
and .c           
       > [        TU / 5      u  pTS:X  a=  TR                  5       nU R                  UR                  " U6 R	                  5       ) 5      n TR                  S5      (       a  TR                  S   nOSTR                  ;  d   eSnT(       a~  [        [        T5      R                  U5      R                  T5      5      n[        SU5      nU R                  " U6 R                  U5      R                  " TXDS.6n U R                  U5      nOSU(       aL  [        [        T5      R                  U5      5      nU R                  " U6 R                  [!        S S S5      5      n U R"                  R%                  T5      nTR                  S5      (       aY  U[        U5         R&                  " S0 TD6n	Tc   eTS	;   a  [)        U	T5      " TR                  S
   S9n
Ow[)        U	T5      " 5       n
OeTS:X  a@  [+        U5      S:w  a  Sn[-        U5      eUR/                  S5      R1                  US   5      n
OU[        U5         R.                  " T40 TD6n
U R3                  U
5      R5                  [7        [9        X5      5      5      nU Vs/ s H  oR                  U5      PM     nnT(       a  U H  nUR;                  WU5        M     U$ U(       a,  U Vs/ s H  oR                  [!        S S S5      5      PM      sn$ U$ s  snf s  snf )Nr(   r8   r   Fr   r   rolling>   r   r    ddof)r   len   z)Safety check failed, please report a bug.sizer   rh   )r   re   with_columnscolis_nullr@   rW   listsetunionr   simple_selectr   r   r   _gather_sliceslicerq   groupbyr   getattrr   AssertionError	transformto_frame_with_nativerenamedictzipr   )ru   output_namesaliasesplxr   rs   r   r   groupedr   
res_nativemsgresult_framenamer   r   rA   r   pandas_function_namerC   partition_byrY   s                   rE   rz   r      s   (I$PRTV(W% K/557C#''<*@*H*H*J)JKB ++F33"//	:G$D,=,====#G"3|#4#:#:<#H#N#Nx#XYG:1gFE(('2'.'GQ 
 ')mmE&:O"3|#4#:#:<#HIG))73AA%dTVBWXB**22<@ ++I66%d<&89AARMRG/;;;+~=%,W6J%K!%!2!26!:&
 &-W6J%K%M
"e+<(A-I,S11!(!2!26!:!C!CGAJ!OJ!(l);!<!F!F,"0="J  "z:AA\34  FMMWT2248WM$++OQ? %"NLSTGqOOE$b,ABGTT N Us   L %Lr   z->overr|   )ru   r   r~   zSequence[PandasLikeSeries])_is_elementaryNotImplementedErrorr	   
_leaf_name%WINDOW_FUNCTIONS_TO_PANDAS_EQUIVALENTget_REMAP_AGGSjoinrF   rW   	__class__rP   rQ   rR   rS   rT   rU   rV   )rY   r   r   rz   r   rA   r   rC   s   ```  @@@rE   overPandasLikeExpr.over   sZ   
  '''	 	 $$&&k 
 &c**-88>M#H#L#L0<<@@O$  $+,]O <//3yy9^/_.` a99%6%B%BCDAG 
 *#..>t00M5 5n ~~++/--8"&"="=#77// 11MM  	
 		
rG   c               &    U R                  SSU0S9$ )Nr(   r   rK   r   r   s     rE   r(   PandasLikeExpr.cum_count6  s    !!+Iw;O!PPrG   c               &    U R                  SSU0S9$ )Nr%   r   rK   r   r   s     rE   r%   PandasLikeExpr.cum_min9  r   rG   c               &    U R                  SSU0S9$ )Nr&   r   rK   r   r   s     rE   r&   PandasLikeExpr.cum_max<  r   rG   c               &    U R                  SSU0S9$ )Nr'   r   rK   r   r   s     rE   r'   PandasLikeExpr.cum_prod?  s    !!*9g:N!OOrG   c               *    U R                  SUUUS.S9$ )Nr)   r<   r;   r=   rK   r   rY   r<   r;   r=   s       rE   r)   PandasLikeExpr.rolling_sumB  s+    !!**  " 
 	
rG   c               *    U R                  SUUUS.S9$ )Nr*   r   rK   r   r   s       rE   r*   PandasLikeExpr.rolling_meanL  s+    !!**  " 
 	
rG   c               ,    U R                  SUUUUS.S9$ )Nr+   r<   r;   r=   r   rK   r   rY   r<   r;   r=   r   s        rE   r+   PandasLikeExpr.rolling_stdV  0     !!** 	 " 
 	
rG   c               ,    U R                  SUUUUS.S9$ )Nr,   r   rK   r   r   s        rE   r,   PandasLikeExpr.rolling_varc  r   rG   c               &    U R                  SXS.S9$ )Nr"   )r0   r3   rK   r   )rY   r0   r3   s      rE   r"   PandasLikeExpr.rankp  s"    !!6 L " 
 	
rG   )
rS   rU   rO   rW   rP   rR   rQ   rT   rX   rV   )rZ   z1EvalSeries[PandasLikeDataFrame, PandasLikeSeries]r[   intrA   strr\   EvalNames[PandasLikeDataFrame]r]   zAliasNames | Noner^   r   r_   ztuple[int, ...]r`   r   rL   zdict[str, Any] | Noner~   None)r~   r   )r~   r   )
r   
type[Self]ry   r   r   r   rA   r   r~   r   )r   r   r   r   r   r   r~   r   )r   float | Noner   r   r   r   r   r   r   boolr;   r   r   r   r~   r   )r   r   r~   r   )r/   r   r~   r   )r   zSequence[str]r   zSequence[str] | Noner~   r   )r<   r   r;   r   r=   r   r~   r   )
r<   r   r;   r   r=   r   r   r   r~   r   )r0   r   r3   r   r~   r   )__name__
__module____qualname____firstlineno__ra   re   ri   classmethodr   r   r   r$   r!   r   r(   r%   r&   r'   r)   r*   r+   r,   r"   __static_attributes__rh   rG   rE   rI   rI   I   s    .23?3 	3
 3  >3 .3 '3 )3 3 +3 
30
 -  %
%
=%

 %
 %
 
%
 %
N 

*-
8D
	
 
2
 
 	

  
 
 
 
 
 

,OAk
#k
 'k
 
	k
ZQOOP



03
=A
IL
	


03
=A
IL
	

rG   rI   r   N)rA   r   rB   dict[str, object]r~   r  )%
__future__r   typingr   r   r   narwhals._compliantr   narwhals._expression_parsingr   narwhals._pandas_like.group_byr	   narwhals._pandas_like.seriesr
   narwhals.exceptionsr   narwhals.utilsr   typing_extensionsr   narwhals._compliant.typingr   r   r   r   narwhals._pandas_like.dataframer   rd   r   narwhals.typingr   r   r   r   r   rF   rI   rh   rG   rE   <module>r     s    "     ) J < 9 3 9&5459CC*-&+  ) %& 14j
Y46FFG j
rG   