Ë
    ðmxiTB  ã                  ó@  — d dl mZ d dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d d	lmZ er4d d
lmZ d dlmZ d dlmZmZmZmZ d dlmZ d dl m!Z! d dlm"Z"m#Z#m$Z$ d dl%m&Z& ddddddddddddddddœZ'	 	 	 	 	 	 d#d„Z( G d „ d!ed"ef   «      Z)y)$é    )Ú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                óú  — | dk(  rd|v sJ ‚d|d   i}|S | dk(  r%d|v sJ ‚d|v sJ ‚|d   }|dk(  rdn||d    d	d
dœ}|S | j                  d«      rddi}|S | dk(  rdd
i}|S | j                  d«      r#d|v sJ ‚d|v sJ ‚d|v sJ ‚|d   |d   |d   dœ}|S | dv rd|v sJ ‚d|d   i}|S | dk(  rd|v sJ ‚d|v sJ ‚|d   |d   dœ}|S | dk(  rd|v sJ ‚d|v sJ ‚|d   |d   dœ}|S | j                  d«      rKd |v sJ ‚d!|v sJ ‚d"|v sJ ‚d#|v sJ ‚d$|v sJ ‚d|v sJ ‚d%|v sJ ‚|d    |d!   |d"   |d#   |d$   |d   |d%   d&œ}|S | d'v r5|j                  d%«      rd(}t        |«      ‚dt        t	        d)| «         i}|S i }|S )*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        úQ/home/htdocs/ttos/venv/lib/python3.12/site-packages/narwhals/_pandas_like/expr.pyÚ"window_kwargs_to_pandas_equivalentrb   3   sÿ  € ð ˜ÒØ�f‰}Ðˆ}Ø3<¸fÀS¹kÐ2JˆðH ÐðG 
˜&Ò	 Ø˜6Ñ!Ð!Ð!Ø˜vÑ%Ð%Ð%Ø˜Ñ"ˆà!(¨IÒ!5‘g¸7Ø# 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Ñ!Ð!Ð!Ø Ñ&Ð&Ð&Ø Ñ'Ð'Ð'ð ˜%‘=Ø˜6‘NØ˜{Ñ+Ø˜G‘_Ø˜XÑ&Ø! -Ñ0Ø Ñ/ñ
ˆð* Ðð 
Ð8Ñ	8Ø�:‰:�nÔ%ð3ð ô & cÓ*Ð*àÔ%¤dÐ+@À-Ó&PÑQð
ˆð
 Ðð ˆØÐó    c                  ó¬   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 d	d„Zd
d„Ze	 	 	 	 	 	 	 	 dd„«       Zedd„«       Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z		 	 	 	 	 	 dd„Z
y)ÚPandasLikeExprc               óJ   — || _         || _        || _        || _        || _        y )N)Ú_callÚ_evaluate_output_namesÚ_alias_output_namesÚ_implementationÚ_version)ÚselfÚcallÚevaluate_output_namesÚalias_output_namesÚimplementationÚversions         ra   Ú__init__zPandasLikeExpr.__init__€   s*   € ð ˆŒ
Ø&;ˆÔ#Ø#5ˆÔ Ø-ˆÔØˆ�rc   c                óJ   — ddl m}  || j                  | j                  ¬«      S )Nr   r   )rq   )Únarwhals._pandas_like.namespacer   rj   rk   )rl   r   s     ra   Ú__narwhals_namespace__z%PandasLikeExpr.__narwhals_namespace__�   s   € ÝGá" 4×#7Ñ#7ÀÇÁÔOÐOrc   c              óR   ‡— dˆfd„} | |‰d |j                   |j                  ¬«      S )Nc                óò   •— 	  ‰| «      D �cg c]1  }t        | j                  |   | j                  | j                  ¬«      ‘Œ3 c}S c c}w # t        $ r"}| j                   ‰| «      «      x}r||‚‚ d }~ww xY w)N)rp   rq   )r   Ú_native_framerj   rk   ÚKeyErrorÚ_check_columns_exist)ÚdfÚcolumn_nameÚeÚerrorÚevaluate_column_namess       €ra   Úfuncz.PandasLikeExpr.from_column_names.<locals>.funcœ   s�   ø€ ðñ (=¸RÓ'@öð $ô %Ø×(Ñ(¨Ñ5Ø')×'9Ñ'9Ø "§¡öòð ùò øô ò Ø×3Ñ3Ñ4IÈ"Ó4MÓNÐN�5ÐNØ QÐ&Øûðús(   ƒ
A �6AÁA ÁA Á	A6ÁA1Á1A6©rn   ro   rp   rq   ©r{   r   Úreturnzlist[PandasLikeSeries])rj   rk   )Úclsr   Úcontextr€   s    `  ra   Úfrom_column_namesz PandasLikeExpr.from_column_names”   s2   ø€ õ	ñ ØØ"7Ø#Ø"×2Ñ2Ø×$Ñ$ô
ð 	
rc   c               óp   ‡— dˆfd„} | || j                  ‰«      d |j                  |j                  ¬«      S )Nc                ó’   •— | j                   }‰D �cg c]*  }t        j                  |j                  d d …|f   | ¬«      ‘Œ, c}S c c}w )N)r…   )Únativer   Úfrom_nativeÚiloc)r{   r‰   ÚiÚcolumn_indicess      €ra   r€   z0PandasLikeExpr.from_column_indices.<locals>.funcµ   sH   ø€ Ø—Y‘YˆFð (öàô !×,Ñ,¨V¯[©[º¸A¸Ñ->ÈÖKòð ùò s   ’/Ar�   r‚   )Ú_eval_names_indicesrj   rk   )r„   r…   r�   r€   s     ` ra   Úfrom_column_indicesz"PandasLikeExpr.from_column_indices³   s=   ø€ õ	ñ ØØ"%×"9Ñ"9¸.Ó"IØ#Ø"×2Ñ2Ø×$Ñ$ô
ð 	
rc   c          
     ó4   — | j                  d|||||||¬«      S )Nr3   )rO   rP   rQ   rR   rS   rD   rT   )Ú_reuse_series)rl   rO   rP   rQ   rR   rS   rD   rT   s           ra   r3   zPandasLikeExpr.ewm_meanÄ   s4   € ð ×!Ñ!ØØØØØØØ#Ø%ð "ó 	
ð 		
rc   c                ó�   ‡ ‡— dˆˆ fd„}‰ j                  |‰ j                  ‰ j                  ‰ j                  ‰ j                  ¬«      S )Nc           
     ó4  •— t        d| j                  «      } | j                  |d ¬«      j                  ‰dddœŽ}  ‰	| j	                  |gd¬«      «      }‰	j
                  }|�…|j                  ry| j                  j                  }‰	j                  j                  «       }|D �cg c]=  }|j                  |j                  |j                  «       ||j                  ¬«      «      ‘Œ? c}S | j                  |«      }|D ]  }|j!                  ||«       Œ |S c c}w )Né   ©Úorder_byF©r8   Ú
nulls_lastT)Ústrict)ÚindexÚname)r   ÚcolumnsÚwith_row_indexÚsortÚdropÚ	_metadataÚis_scalar_liker‰   rš   rj   Úto_native_namespaceÚ_with_nativeÚSeriesÚitemr›   Ú
get_columnÚ_scatter_in_place)
r{   ÚtokenÚresultsÚmetarš   ÚnsÚsÚsorting_indicesr–   rl   s
           €€ra   r€   z7PandasLikeExpr._over_without_partition_by.<locals>.funcÞ   s	  ø€ Ü2°1°b·j±jÓAˆEØ=�×"Ñ" 5°4Ð"Ó8×=Ñ=Ø e¸òˆBñ ˜2Ÿ7™7 E 7°4˜7Ó8Ó9ˆGØ—>‘>ˆDØÐ D×$7Ò$7ð Ÿ	™	Ÿ™�Ø×)Ñ)×=Ñ=Ó?�ð %öàð —N‘N 2§9¡9¨Q¯V©V«X¸UÈÏÉ 9Ó#PÕQòð ð
 !Ÿm™m¨EÓ2ˆOØò 8�Ø×#Ñ# O°QÕ7ð8àˆNùòs   Â$ADr�   ©r{   r   rƒ   zSequence[PandasLikeSeries])Ú	__class__rh   ri   rj   rk   )rl   r–   r€   s   `` ra   Ú_over_without_partition_byz)PandasLikeExpr._over_without_partition_byÚ   sE   ù€ ö	ð, �~‰~ØØ"&×"=Ñ"=Ø#×7Ñ7Ø×/Ñ/Ø—M‘Mð ó 
ð 	
rc   c           
     ó   ‡ ‡‡‡‡‡	‡
‡‡— ‰s‰sJ ‚‰ j                  ‰«      S ‰ j                  Š‰r/‰j                  �#‰j                  j                  sd}t	        |«      ‚t        t        t        ‰ j                  j                  «       «      «      «      Š	‰	d   }|j                  Št        j                  j                  t        d‰«      «      }t        j                  ‰|«      Š
‰
€Gd‰› ddj                  t        «      › ddj                  t        j                  «      › d�}t	        |«      ‚|j                  Št!        ‰‰«      Šdˆˆˆ	ˆˆ
ˆˆˆˆ f	d	„}‰ j#                  |‰ j$                  ‰ j&                  ‰ j(                  ‰ j*                  ¬
«      S )NzÉOnly 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           
     óà	  •	— ‰€J ‚‰j                  «       }‰j                  �(| j                  t        dt	        ‰d d |«      «      «      } t        ‰| g «      \  }}‰dk(  r-| j                   |j                  |Ž j                  «        «      } ‰j                  d«      rd‰v sJ ‚‰d   }nd‰vsJ ‚d}‰r�t        t        ‰«      j                  |«      j                  ‰«      «      }t        d|«      }  | j                  |Ž j                  |d ¬«      j                  ‰||d	œŽ} | j!                  |«      }nN|rLt        t        ‰«      j                  |«      «      } | j                  |Ž j#                  t%        d d d«      «      } t'        d¬
«      } | j(                  j*                  ‰fi |¤Ž}	‰j                  d«      rS |	t        |«         j,                  d&i ‰¤Ž}
‰dv rd‰v sJ ‚ t/        |
‰«      ‰d   ¬«      }�n" t/        |
‰«      «       }�n‰j                  d«      r•‰j0                  j3                  «       rF‰j0                  j5                  «       dk  r)d‰j0                  j5                  «       › d�}t7        |«      ‚ |	t        |«         j8                  d&i ‰¤Ž}‰€J ‚ t/        |‰«      «       }�ni‰dk(  red‰v sJ ‚d‰v sJ ‚|	t        |«         }‰d   dk(  r|j;                  ‰d   ¬«      }�n+‰d   dk(  r|j=                  ‰d   ¬«      }�nd}t7        |«      ‚‰dk(  r?t?        |«      dk7  rd}tA        |«      ‚|	jC                  d«      jE                  |d   «      }n»‰dv r˜tG        jH                  «       5  tG        jJ                  d d!¬"«        t/        |	g ‰¢|¢   ‰«      d&i ‰¤Ž}d d d «       jM                  d#d#¬$«       t        ‰«      }| jN                  |   jQ                  ||¬%«      t        |«         }n |	t        |«         jB                  ‰fi ‰¤Ž}| jS                  |«      }|D �cg c]  }|j!                  |«      ‘Œ }}‰rPtG        jH                  «       5  tG        jJ                  d d!¬"«       |D ]  }|jU                  |«       Œ |cd d d «       S |r*|D �cg c]  }|j#                  t%        d d d«      «      ‘Œ  c}S |S # 1 sw Y   �Œ#xY wc c}w # 1 sw Y   ŒIxY wc c}w )'Nre   r²   r-   r?   ÚreverseFr”   r•   r—   )Údrop_null_keysÚrolling>   r"   r#   rI   )rI   Úewm)é   é   zpExponentially weighted calculation is not available in over context for pandas versions older than 1.2.0, found r³   r2   rJ   rK   Úforward)rK   ÚbackwardzF`fill_null` with `over` without `strategy` specified is not supported.Úlenr¹   z)Safety check failed, please report a bug.Úsizer   >   rW   r:   rX   Úignorez
.*copy of a slice)ÚmessageT)rŸ   Úinplace)Úon© )+ru   ÚprevÚwith_columnsr   r   r	   ÚcolÚis_nullrY   ÚlistÚsetÚunionr   Úsimple_selectr�   rž   r¦   Ú_gather_sliceÚslicer   rx   Úgroupbyr·   Úgetattrrj   Ú	is_pandasÚ_backend_versionr[   r¸   ÚffillÚbfillr½   ÚAssertionErrorÚ	transformÚto_frameÚwarningsÚcatch_warningsÚfilterwarningsÚreset_indexr‰   Úmerger£   r§   )r{   ÚplxÚ_Úaliasesrµ   rœ   r¨   r­   Úgroup_by_kwargsÚgroupedr·   Ú
res_nativer`   r¸   Ú
df_groupedÚ_aggÚkeysÚresult_framer›   r©   r¬   r\   rª   Únodesr–   Úpandas_function_namer^   Úpartition_byÚscalar_kwargsrl   s                        €€€€€€€€€ra   r€   z!PandasLikeExpr.over.<locals>.func'  s:  ø€ Ø'Ð3Ð3Ð3Ø×-Ñ-Ó/ˆCØ�y‰yÐ$Ø—_‘_ÜÐ)¬>¸%ÀÀ¸*ÀcÓ+JÓKó�ô ;¸4ÀÀRÓH‰JˆAˆwØ Ò+Ø—_‘_ g c§g¡g¨wÐ&7×&?Ñ&?Ó&AÐ%AÓB�à×'Ñ'¨Ô/Ø  MÑ1Ð1Ð1Ø'¨	Ñ2‘à ¨Ñ5Ð5Ð5Ø�áÜœs <Ó0×6Ñ6°wÓ?×EÑEÀhÓOÓP�Ü6°q¸'ÓB�ðÐ$�B×$Ñ$ gÐ.ß#‘^ E°D�^Ó9ß‘T˜8°ÀGòMð ð
 #%§-¡-°Ó"6‘ÙÜœs <Ó0×6Ñ6°wÓ?Ó@�Ø%�R×%Ñ% wÐ/×=Ñ=¼eÀDÈ$ÐPRÓ>SÓT�Ü2À%ÔHˆOØ.�b×&Ñ&×.Ñ.¨|ÑO¸ÑOˆGØ×'Ñ'¨	Ô2Ø8˜'¤$ w£-Ñ0×8Ñ8ÑI¸=ÑI�Ø'¨>Ñ9Ø! ]Ñ2Ð2Ð2Ø!G¤¨Ð2FÓ!GØ*¨6Ñ2ô"’Jð "H¤¨Ð2FÓ!GÓ!I’JØ×)Ñ)¨%Ô0Ø×'Ñ'×1Ñ1Ô3Ø×(Ñ(×9Ñ9Ó;Øò9ðOØOS×OcÑOc×OtÑOtÓOvÐNwÐwxðzð ô .¨cÓ2Ð2Ø0�gœd 7›mÑ,×0Ñ0ÑA°=ÑA�Ø+Ð7Ð7Ð7Ø?œW SÐ*>Ó?ÓA’
Ø +Ò-Ø! ]Ñ2Ð2Ð2Ø -Ñ/Ð/Ð/Ø$¤T¨'£]Ñ3�
Ø  Ñ,°	Ò9Ø!+×!1Ñ!1¸ÀgÑ8NÐ!1Ó!O’JØ" :Ñ.°*Ò<Ø!+×!1Ñ!1¸ÀgÑ8NÐ!1Ó!O’Jð c�CÜ-¨cÓ2Ð2Ø %Ò'Ü�w“< 1Ò$ØE�CÜ(¨Ó-Ð-Ø$×.Ñ.¨vÓ6×?Ñ?ÀÈÁ
ÓK‘
ØÐ"@Ñ@Ü×,Ñ,Ó.ñ 'ä×+Ñ+¨HÐ>SÕTðœ7ØÐ 9 ,Ð 9°Ð 9Ñ:Ð<Póñ 'à%ñ'�D÷'ð × Ñ  d°DÐ Ô9Ü˜LÓ)�ØŸY™Y t™_×2Ñ2°4¸DÐ2ÓAÄ$ÀwÃ-ÑP‘
à=˜W¤T¨'£]Ñ3×=Ñ=Ø(ñØ,9ñ�
ð Ÿ?™?¨:Ó6ˆLØAHÖI¸�|×.Ñ.¨tÕ4ÐIˆGÐIÙÜ×,Ñ,Ó.ñ #ä×+Ñ+¨HÐ>SÕTØ$ò @˜Ø×+Ñ+¨O¸QÕ?ð@à"÷#ñ #ñ ØHOÖPÀ1˜Ÿ™¬¨d°D¸"Ó(=Õ>ÒPÐPØˆN÷1'ñ 'üò J÷#ð #üò Qs$   Í;1SÐ3SÑ#2SÒ%#S+ÓSÓS(r�   r®   )r°   r    rÄ   Úis_elementwiser[   rÈ   ÚreversedÚiter_nodes_reversedr›   r   Ú_REMAP_AGGSrZ   r   Ú%WINDOW_FUNCTIONS_TO_PANDAS_EQUIVALENTÚjoinr]   rb   r¯   rh   ri   rj   rk   )rl   rè   r–   r`   Ú	leaf_nodeÚ
pandas_aggr€   r\   rª   ræ   rç   r^   ré   s   ```    @@@@@@ra   ÚoverzPandasLikeExpr.overü   s„  ÿø€ ñ ÙˆO�8Ø×2Ñ2°8Ó<Ð<ð �~‰~ˆÙ˜TŸY™YÐ2¸4¿9¹9×;SÒ;Sð_ð ô & cÓ*Ð*Ü”Xœd 4§>¡>×#EÑ#EÓ#GÓHÓIÓJˆà˜"‘Iˆ	Ø!Ÿ™ˆÜ&×2Ñ2×6Ñ6ÜÐ&¨Ó6ó
ˆ
ô  E×HÑHØ˜:ó 
Ðð  Ð'à(¨¨ð 8+Ø+/¯9©9Ô5ZÓ+[Ð*\ð ]Ø—y‘yÔ!2×!>Ñ!>Ó?Ð@ÀðCð ô
 & cÓ*Ð*Ø!×(Ñ(ˆÜ:¸=È-ÓXˆ÷`	õ `	ðD �~‰~ØØ"&×"=Ñ"=Ø#×7Ñ7Ø×/Ñ/Ø—M‘Mð ó 
ð 	
rc   N)rm   z1EvalSeries[PandasLikeDataFrame, PandasLikeSeries]rn   úEvalNames[PandasLikeDataFrame]ro   zAliasNames | Nonerp   r   rq   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__rr   ru   Úclassmethodr†   r�   r3   r°   rò   rÃ   rc   ra   re   re      s  „ ð à?ð ð  >ð	 ð
 .ð ð 'ð ð ð ð 
ó óPð
 ð
Øð
à=ð
ð
 !ð
ð 
ò
ó ð
ð< ò
ó ð
ð 
ð ð
ð ð	
ð
  ð
ð ð
ð ð
ð ð
ð ð
ð 
ó
ó, 
ðDS
Ø)ðS
Ø5BðS
à	ôS
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   rt   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P
�YÐ4Ð6FÐFÑGõ P
rc   