
    LpjB                    L   S SK Jr  S SKrS SKJrJrJr  S SKJr  S SK	J
r
Jr  S SKJrJr  S SKJr  S SKJr  S S	KJr  \(       a4  S S
KJr  S SKJr  S SKJrJrJrJr  S SKJr  S SK J!r!  S SKJ"r"J#r#J$r$  S SK%J&r&  SSS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)$    )annotationsN)TYPE_CHECKINGAnycast)	EagerExpr)evaluate_nodes!evaluate_output_names_and_aliases)_REMAP_ORDERED_INDEXPandasLikeGroupBy)PandasLikeSeries)make_group_by_kwargs)generate_temporary_column_name)Sequence)Self)
AliasNames	EvalNames
EvalSeriesNarwhalsAggregation)PandasLikeDataFramePandasLikeNamespace)ImplementationVersion_LimitedContext)PythonLiteralcumsumcummincummaxcumprodsummeanstdvarshiftrankdifffillnaquantile)cum_sumcum_mincum_maxcum_prod	cum_countrolling_sumrolling_meanrolling_stdrolling_varr$   r%   r&   	fill_nullr(   ewm_meanc                   U S:X  a  SU;   d   eSUS   0nU$ U S:X  a.  SU;   d   eSU;   d   e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 S:X  a  SS
0nU$ U R                  S5      (       a)  SU;   d   eSU;   d   eSU;   d   eUS   US   US   S.nU$ U S;   a  SU;   d   eSUS   0nU$ U S:X  a  SU;   d   eSU;   d   eUS   US   S.nU$ U S:X  a  SU;   d   eSU;   d   eUS   US   S.nU$ U R                  S5      (       aY  S U;   d   eS!U;   d   eS"U;   d   eS#U;   d   eS$U;   d   eSU;   d   eS%U;   d   eUS    US!   US"   US#   US$   US   US%   S&.nU$ U S';   a:  UR                  S%5      (       a  S(n[        U5      eS[        [	        S)U 5         0nU$ 0 nU$ )*Nr$   nperiodsr%   method
descendingordinalfirstkeepF)r7   	ascending	na_optionpctcum_skipnaTn_uniquedropnarolling_min_sampleswindow_sizecenter)min_periodswindowrF   >   r"   r#   ddofr2   strategylimit)rJ   rK   r(   interpolation)qrL   ewm_comspan	half_lifealphaadjustignore_nulls)rO   rP   halfliferR   rS   rG   	ignore_na>   lastr:   	any_valueza`Expr.any_value(ignore_nulls=True)` is not supported in a `over` context for pandas-like backend.r   )
startswithgetNotImplementedErrorr
   r   )function_namekwargspandas_kwargs_methodmsgs        V/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_pandas_like/expr.py"window_kwargs_to_pandas_equivalentrb   3   s    f}}3<fSk2JH G 
&	 6!!!v%%%"!(I!5g7#L11	
~ s 
	!	!&	)	)!4(p o 
*	$!5)l k 
	!	!*	-	-&&&&&&6!!!!-0]+X&
b Y 
.	(0T S 
+	%V###&   %+J%7&/RL K 
*	$V###&(((
##O4
D = 
	!	!&	)	)f$$$&   6!!!&&&''' %=6N{+G_X&!-0/
*  
8	8::n%%3  &c**%d+@-&PQ

      c                      \ rS rSr            SS jrSS jr\        SS j5       r\SS j5       r                SS jr	SS jr
      SS jrS	rg
)PandasLikeExpr   c               @    Xl         X l        X0l        X@l        XPl        g )N)_call_evaluate_output_names_alias_output_names_implementation_version)selfcallevaluate_output_namesalias_output_namesimplementationversions         ra   __init__PandasLikeExpr.__init__   s      
&;##5 -rc   c                D    SSK Jn  U" U R                  U R                  S9$ )Nr   r   )rr   )narwhals._pandas_like.namespacer   rk   rl   )rm   r   s     ra   __narwhals_namespace__%PandasLikeExpr.__narwhals_namespace__   s    G"4#7#7OOrc   c              P   ^ SU4S jjnU " UTS UR                   UR                  S9$ )Nc           	        >  T" U 5       Vs/ s H/  n[        U R                  U   U R                  U R                  S9PM1     sn$ s  snf ! [         a&  nU R                  T" U 5      5      =n(       a  X2ee S nAff = f)N)rq   rr   )r   _native_framerk   rl   KeyError_check_columns_exist)dfcolumn_nameeerrorevaluate_column_namess       ra   func.PandasLikeExpr.from_column_names.<locals>.func   s     (=R'@ (A %((5')'9'9 "
 (A    334I"4MNN5N&s(   
A 6AA A 
A;!A66A;ro   rp   rq   rr   r~   r   returnzlist[PandasLikeSeries])rk   rl   )clsr   contextr   s    `  ra   from_column_names PandasLikeExpr.from_column_names   s2    	 "7#"22$$
 	
rc   c               n   ^ SU4S jjnU " UU R                  T5      S UR                  UR                  S9$ )Nc                   > U R                   nT Vs/ s H)  n[        R                  " UR                  S S 2U4   U S9PM+     sn$ s  snf )N)r   )nativer   from_nativeiloc)r~   r   icolumn_indicess      ra   r   0PandasLikeExpr.from_column_indices.<locals>.func   sM    YYF ('A !,,V[[A->K'  s   0Ar   r   )_eval_names_indicesrk   rl   )r   r   r   r   s     ` ra   from_column_indices"PandasLikeExpr.from_column_indices   s=    	 "%"9"9."I#"22$$
 	
rc   c               .    U R                  SUUUUUUUS9$ )Nr3   )rO   rP   rQ   rR   rS   rD   rT   )_reuse_series)rm   rO   rP   rQ   rR   rS   rD   rT   s           ra   r3   PandasLikeExpr.ewm_mean   s4     !!#% " 	
 		
rc   c                   ^ ^ SUU 4S jjnT R                  UT R                  T R                  T R                  T R                  S9$ )Nc                2  > [        SU R                  5      nU R                  US S9R                  " TSSS.6n T	" U R	                  U/SS95      nT	R
                  nUb  UR                  (       ax  U R                  R                  nT	R                  R                  5       nU Vs/ s H:  nUR                  UR                  UR                  5       XFR                  S95      PM<     sn$ U R                  U5      nU H  nUR!                  XvSS9  M     U$ s  snf )	N   order_byFr8   
nulls_lastT)strict)indexnamein_place)r   columnswith_row_indexsortdrop	_metadatais_scalar_liker   r   rk   to_native_namespace_with_nativeSeriesitemr   
get_columnscatter)
r~   tokenresultsmetar   nsssorting_indicesr   rm   s
           ra   r   7PandasLikeExpr._over_without_partition_by.<locals>.func   s   21bjjAE""54"8==eB 277E74789G>>DD$7$7 		))==? %$ NN299QVVXU9#PQ$ 
 !mmE2O		/t	< Ns   $ADr   r~   r   r   zSequence[PandasLikeSeries])	__class__ri   rj   rk   rl   )rm   r   r   s   `` ra   _over_without_partition_by)PandasLikeExpr._over_without_partition_by   sJ    	 	, ~~"&"="=#77//MM  
 	
rc   c           
     J  ^ ^^^^^	^
^^ T(       d  T(       d   eT R                  T5      $ T R                  mT(       a5  TR                  b(  TR                  R                  (       d  Sn[	        U5      e[        [        [        T R                  R                  5       5      5      5      m	T	S   nUR                  m[        R                  R                  [        ST5      5      n[        R                  TU5      m
T
cG  ST SSR                  [        5       SSR                  [        R                  5       S3n[	        U5      eUR                  m[!        TT5      mSUUU	UU
UUUU 4	S	 jjnT R#                  UT R$                  T R&                  T R(                  T R*                  S
9$ )NzOnly elementary expressions are supported for `.over` in pandas-like backends when `partition_by` is specified.

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

Supported functions are z, z
and .c           
     
  >	 Tc   eTR                  5       nTR                  b(  U R                  [        S[	        TS S U5      5      5      n [        TU / 5      u  p#TS:X  a-  U R                  UR                  " U6 R                  5       ) 5      n TR                  S5      (       a  ST;   d   eTS   nO
ST;  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S S9R                  " / TQTQ7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 ['        SS
9nU R(                  R*                  " T40 UD6n	TR                  S5      (       aT  U	[        U5         R,                  " S&0 TD6n
TS;   a  ST;   d   e[/        U
T5      " TS   S9nGO[/        U
T5      " 5       nGOTR                  S5      (       a6  U	[        U5         R0                  " S&0 TD6nTc   e[/        UT5      " 5       nGOTS:X  ae  ST;   d   eST;   d   eU	[        U5         nTS   S:X  a  UR3                  TS   S9nGOmTS   S:X  a  UR5                  TS   S9nGOPSn[7        U5      eTS:X  a@  [9        U5      S:w  a  Sn[;        U5      eU	R=                  S5      R?                  US   5      nOTS;   a  [@        RB                  " 5          [@        RD                  " SSS9  [/        U	/ TQUQ   T5      " S&0 TD6nS S S 5        TRF                  nURI                  5       nURK                  5       (       a  US :  a  WRM                  S!S!S"9  OWRM                  S!S#9n[        T5      nU RN                  U   RQ                  UUS$9[        U5         nOU	[        U5         R<                  " T40 TD6nU RS                  U5      nU Vs/ s H  nUR!                  U5      PM     nnT(       aP  [@        RB                  " 5          [@        RD                  " SSS9  U H  nURU                  WUS!S%9  M     UsS S S 5        $ U(       a-  U Vs/ s H  nUR#                  [%        S S S5      5      PM!     sn$ U$ ! , (       d  f       GNy= fs  snf ! , (       d  f       N[= fs  snf )'Nre   r   r-   r?   reverseFr   r   r   )drop_null_keysrolling>   r"   r#   rI   )rI   ewmr2   rJ   rK   forward)rK   backwardzF`fill_null` with `over` without `strategy` specified is not supported.len   z)Safety check failed, please report a bug.sizer   >   rW   r:   rX   ignorez
.*copy of a slice)message)   r   T)r   inplace)r   )onr    )+rw   prevwith_columnsr   r   r	   colis_nullrY   listsetunionr   simple_selectr   r   r   _gather_sliceslicer   r{   groupbyr   getattrr   ffillbfillr[   r   AssertionError	transformto_framewarningscatch_warningsfilterwarningsrk   _backend_version	is_pandasreset_indexr   merger   r   ) r~   plx_aliasesr   r   r   r   group_by_kwargsgroupedr   
res_nativer   
df_groupedr`   _aggimplbackend_versionkeysresult_framer   r   r   r\   r   nodesr   pandas_function_namer^   partition_byscalar_kwargsrm   s                           ra   r   !PandasLikeExpr.over.<locals>.func'  s   '333--/Cyy$__)>%*c+JK ;4RHJA+__cggw&7&?&?&A%AB''// M111'	2 555s<066w?EEhOP6q'B$$g.#^ED^9T  & )1 >E  #%--"6s<066w?@%%w/==eD$PR>ST2%HO&&..|OOG''	22!$w-088I=I'>9!]222!(2F!G*62"J ")2F!G!IJ))%00d7m,00A=A+777$S*>?A
+-!]222-///$T']3
 ,	9!+!1!1g8N!1!OJ":.*<!+!1!1g8N!1!OJ cC-c22%'w<1$EC(--$..v6??
K
"@@,,.++H>ST" 9, 9 9:<P '%'D / ++"&"7"7"9>>##&(@$$$$=+++6DL)YYt_224D2A$w-P
$T']3==(,9
 ??:6LAHI|..t4GI,,.++H>ST$		/1t	D %" /. HOP1dD"(=>PPN? /.* J.. Qs$    /S!7S301S86&T	!
S08
Tr   r   )r   r   r   is_elementwiser[   r   reversediter_nodes_reversedr   r   _REMAP_AGGSrZ   r   %WINDOW_FUNCTIONS_TO_PANDAS_EQUIVALENTjoinr]   rb   r   ri   rj   rk   rl   )rm   r   r   r`   	leaf_node
pandas_aggr   r\   r   r   r   r^   r   s   ```    @@@@@@ra   overPandasLikeExpr.over   s    O8228<< ~~TYY2499;S;S_  &c**Xd4>>#E#E#GHIJ"I	!&2266&6

  EHH: 
  '( 8++/995Z+[*\ ]yy!2!>!>?@C 
 &c**!((:=-Xa	 a	F ~~"&"="=#77//MM  
 	
rc   )rj   rh   ri   rk   rl   N)rn   z1EvalSeries[PandasLikeDataFrame, PandasLikeSeries]ro   EvalNames[PandasLikeDataFrame]rp   zAliasNames | Nonerq   r   rr   r   r   None)r   r   )r   z
type[Self]r   r  r   r   r   r   )r   intr   r   r   r   )rO   float | NonerP   r  rQ   r  rR   r  rS   boolrD   r  rT   r  r   r   )r   Sequence[str]r   r   )r   r  r   r  r   r   )__name__
__module____qualname____firstlineno__rs   rw   classmethodr   r   r3   r   r  __static_attributes__r   rc   ra   re   re      s    ?   >	 
 .  '    
 P
 

=

 !
 

 
< 
 
 
 
 	

  
 
 
 
 
 

, 
DT
)T
5BT
	T
rc   re   r   )r\   strr]   zdict[str, Any]r   zdict[str, PythonLiteral])*
__future__r   r   typingr   r   r   narwhals._compliantr   narwhals._expression_parsingr   r	   narwhals._pandas_like.group_byr
   r   narwhals._pandas_like.seriesr   narwhals._pandas_like.utilsr   narwhals._utilsr   collections.abcr   typing_extensionsr   narwhals._compliant.typingr   r   r   r   narwhals._pandas_like.dataframer   rv   r   r   r   r   narwhals.typingr   r   rb   re   r   rc   ra   <module>r     s    "  + + ) Z R 9 < :(&  DCHH-  %) %,II .IIXQ
Y46FFG Q
rc   