§
    cŠtjç$  ã                  ó  — d dl mZ d dlmZmZmZ d dl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mZ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"m#Z#m$Z$ d dlm%Z%m&Z&  G d„ dedef         ¦  «        Z'dS )é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚcastN)ÚArrowSeries)Ú	EagerExpr)Úevaluate_nodesÚ!evaluate_output_names_and_aliases)ÚImplementationÚgenerate_temporary_column_nameÚnot_implemented)Úcol)ÚSequence)ÚSelf)ÚArrowDataFrame©ÚArrowNamespace)Ú
AliasNamesÚ	EvalNamesÚ
EvalSeries)ÚVersionÚ_LimitedContextc                  óª   — e Zd ZU ej        Zded<   ej        dœd(d„Zed)d„¦   «         Z	ed*d„¦   «         Z
d+d„Zddœd,d!„Zd-d$„Zd.d&„Z e¦   «         Zd'S )/Ú	ArrowExprr   Ú_implementation)ÚimplementationÚcallú'EvalSeries[ArrowDataFrame, ArrowSeries]Úevaluate_output_namesúEvalNames[ArrowDataFrame]Úalias_output_namesúAliasNames | NoneÚversionr   r   ÚreturnÚNonec               ó>   — || _         || _        || _        || _        d S )N)Ú_callÚ_evaluate_output_namesÚ_alias_output_namesÚ_version)Úselfr   r   r!   r#   r   s         úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/narwhals/_arrow/expr.pyÚ__init__zArrowExpr.__init__    s&   € ð ˆŒ
Ø&;ˆÔ#Ø#5ˆÔ ØˆŒˆˆó    Úclsú
type[Self]Úevaluate_column_namesÚcontextr   r   c              ó8   ‡— dˆfd„} | |‰d |j         ¬¦  «        S )NÚdfr   r$   úlist[ArrowSeries]c                ó¢   •‡ — 	 ˆ fd„ ‰‰ ¦  «        D ¦   «         S # t           $ r)}‰                       ‰‰ ¦  «        ¦  «        x}r||‚‚ d }~ww xY w)Nc                óT   •— g | ]$}t          ‰j        |         |‰j        ¬ ¦  «        ‘Œ%S ))Únamer#   )r   Únativer*   )Ú.0Úcolumn_namer4   s     €r,   ú
<listcomp>z=ArrowExpr.from_column_names.<locals>.func.<locals>.<listcomp>8   sJ   ø€ ð ð ð ð $õ  Øœ	 +Ô.°[È"Ì+ðñ ô ðð ð r.   )ÚKeyErrorÚ_check_columns_exist)r4   ÚeÚerrorr1   s   `  €r,   Úfuncz)ArrowExpr.from_column_names.<locals>.func6   s”   øø€ ð
ðð ð ð ð (=Ð'<¸RÑ'@Ô'@ð	ñ ô ð øõ ð ð ð Ø×3Ò3Ð4IÐ4IÈ"Ñ4MÔ4MÑNÔNÐN�5ð 'Ø QÐ&Øøøøøðøøøs   „ ›
A¥$A	Á	A©r   r!   r#   ©r4   r   r$   r5   )r*   )r/   r1   r2   rA   s    `  r,   Úfrom_column_nameszArrowExpr.from_column_names.   sK   ø€ ð	ð 	ð 	ð 	ð 	ð 	ð ˆsØØ"7Ø#ØÔ$ð	
ñ 
ô 
ð 	
r.   Úcolumn_indicesÚintc               ó^   ‡— dˆfd„} | ||                       ‰¦  «        d |j        ¬¦  «        S )Nr4   r   r$   r5   c                óF   •‡ ‡‡— ‰ j         Š‰ j        Šˆˆ ˆfd„‰D ¦   «         S )Nc                óV   •— g | ]%}t          j        ‰|         ‰|         ‰¬ ¦  «        ‘Œ&S ))r8   r2   )r   Úfrom_native)r:   ÚiÚcolsr4   Útbls     €€€r,   r<   z?ArrowExpr.from_column_indices.<locals>.func.<locals>.<listcomp>O   sC   ø€ ð ð ð àõ Ô'¨¨A¬°T¸!´WÀbÐIÑIÔIðð ð r.   )r9   Úcolumns)r4   rL   rM   rE   s   `@@€r,   rA   z+ArrowExpr.from_column_indices.<locals>.funcL   sI   øøøø€ Ø”)ˆCØ”:ˆDðð ð ð ð ð à'ðñ ô ð r.   rB   rC   )Ú_eval_names_indicesr*   )r/   r2   rE   rA   s     ` r,   Úfrom_column_indiceszArrowExpr.from_column_indicesJ   sY   ø€ ð	ð 	ð 	ð 	ð 	ð 	ð ˆsØØ"%×"9Ò"9¸.Ñ"IÔ"IØ#ØÔ$ð	
ñ 
ô 
ð 	
r.   r   c                ó0   — ddl m}  || j        ¬¦  «        S )Nr   r   )r#   )Únarwhals._arrow.namespacer   r*   )r+   r   s     r,   Ú__narwhals_namespace__z ArrowExpr.__narwhals_namespace__[   s)   € Ø<Ð<Ð<Ð<Ð<Ð<àˆ~ d¤mÐ4Ñ4Ô4Ð4r.   F)Úreturns_scalarrT   Úboolúdict[str, Any]c               ó   — |rddini S )NÚ_return_py_scalarF© )r+   rT   s     r,   Ú_reuse_series_extra_kwargsz$ArrowExpr._reuse_series_extra_kwargs`   s   € ð 0>ÐEÐ# UÐ+Ð+À2ÐEr.   Úorder_byúSequence[str]c                ó~   ‡ ‡‡— ‰sJ ‚‰ j         Šdˆˆˆ fd„}‰                      |‰ j        ‰ j        ‰ j        ¬¦  «        S )Nr4   r   r$   úSequence[ArrowSeries]c                óz  •‡‡— t          d| j        ¦  «        } |                      |d ¬¦  «        j        ‰dddœŽ}  ‰|                      |gd¬¦  «        ¦  «        }‰�$‰j        rt          | ¦  «        Šˆfd„|D ¦   «         S t          j        |  	                    |¦  «        j
        ¦  «        Šˆfd„|D ¦   «         S )	Né   )r[   F©Ú
descendingÚ
nulls_lastT©Ústrictc                ó„   •— g | ]<}|                      t          j        |                     ¦   «         ‰¦  «        ¦  «        ‘Œ=S rY   )Ú_with_nativeÚpaÚrepeatÚitem)r:   ÚsÚsizes     €r,   r<   zFArrowExpr._over_without_partition_by.<locals>.func.<locals>.<listcomp>u   s9   ø€ ÐSÐSÐSÀa˜Ÿš¥r¤y°·²±´¸4Ñ'@Ô'@ÑAÔAÐSÐSÐSr.   c                ój   •— g | ]/}|                      |j                             ‰¦  «        ¦  «        ‘Œ0S rY   )rg   r9   Útake)r:   rk   Úsorting_indicess     €r,   r<   zFArrowExpr._over_without_partition_by.<locals>.func.<locals>.<listcomp>{   s3   ø€ ÐTÐTÐTÀq�A—N’N 1¤8§=¢=°Ñ#AÔ#AÑBÔBÐTÐTÐTr.   )r   rN   Úwith_row_indexÚsortÚdropÚis_scalar_likeÚlenÚpcÚsort_indicesÚ
get_columnr9   )r4   ÚtokenÚresultsrl   ro   Úmetar[   r+   s      @@€€€r,   rA   z2ArrowExpr._over_without_partition_by.<locals>.funck   sÛ   øøø€ Ý2°1°b´jÑAÔAˆEØ=�×"Ò" 5°4Ð"Ñ8Ô8Ô=Ø e¸ðð ð ˆBð �d˜2Ÿ7š7 E 7°4˜7Ñ8Ô8Ñ9Ô9ˆGØÐ DÔ$7Ðõ ˜2‘w”w�ØSÐSÐSÐSÈ7ÐSÑSÔSÐSõ
 !œo¨b¯mªm¸EÑ.BÔ.BÔ.IÑJÔJˆOØTÐTÐTÐTÈGÐTÑTÔTÐTr.   rB   ©r4   r   r$   r^   )Ú	_metadataÚ	__class__r(   r)   r*   )r+   r[   rA   rz   s   `` @r,   Ú_over_without_partition_byz$ArrowExpr._over_without_partition_bye   sx   øøø€ ð ˆˆˆxØŒ~ˆð	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð$ �~Š~ØØ"&Ô"=Ø#Ô7Ø”Mð	 ñ 
ô 
ð 	
r.   Úpartition_byc                ó¢  ‡ ‡‡‡‡— ‰s‰sJ ‚‰                       ‰¦  «        S ‰ j        Š‰r5‰j        j        j        r‰j        �‰j        j        sd}t          |¦  «        ‚t          t          t          ‰ j         
                    ¦   «         ¦  «        ¦  «        ¦  «        Šdˆˆˆˆˆ fd„}‰                      |‰ j        ‰ j        ‰ j        ¬¦  «        S )	NzÅOnly elementary aggregations are supported for `.over` in PyArrow backend when `partition_by` is specified.

Please see: https://narwhals-dev.github.io/narwhals/concepts/improve_group_by_operation/r4   r   r$   r^   c           
     ó   •‡‡— ‰                      ¦   «         }‰j        �‘|                      t          dt	          ‰d d…         |¦  «        ¦  «        ¦  «        } t          ‰| g ¦  «        \  }}t          dt          |Ž                      ‰d         ¦  «                             |¦  «        ¦  «        }nt          ‰| g ¦  «        \  }}‰}‰r | j	        ‰dddœŽ} t          |¦  «                             ‰¦  «        x}rd|› d�}t          |¦  «        ‚ | j        ‰Ž }d„ |j        j        D ¦   «         }t!          |¦  «        sR|                      ‰d¬¦  «                             |¦  «        Š|                     ‰d	‰‰d
¬¦  «        Šˆfd„|D ¦   «         S | j        | j        }
}	‰                      ¦   «         }g }g }t)          |j        |d¬¦  «        D ]Þ\  }}|s|                     |¦  «         Œt-          d|
¦  «        }|                     |¦  «         |
                     |¦  «         |j                             |	                     |¦  «                             d¦  «                             ¦   «         j        ||¬¦  «        }|                     |j                             |¦  «        ¦  «         Œß | j        |Ž }|                     |d¬¦  «                             |¦  «        } |j        |Ž                      |||dd
¬¦  «        Šˆfd„|D ¦   «         S )Nr   éÿÿÿÿFra   zColumn names zV appear in both expression output names and in `over` keys.
This is not yet supported.c                ó$   — g | ]}|j         d k    ‘ŒS )r   )Ú
null_count)r:   Úcas     r,   r<   z0ArrowExpr.over.<locals>.func.<locals>.<listcomp>¶   s   € ÐRÐRÐR¨r˜œ¨Ò*ÐRÐRÐRr.   )Údrop_null_keysÚleftÚ_right)ÚhowÚleft_onÚright_onÚsuffixc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rY   ©rw   )r:   ÚaliasÚtmps     €r,   r<   z0ArrowExpr.over.<locals>.func.<locals>.<listcomp>À   s%   ø€ ÐCÐCÐC°%˜Ÿš uÑ-Ô-ÐCÐCÐCr.   rd   r`   Úencode)r2   r8   Úinner)rŠ   r‹   r‰   rŒ   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rY   rŽ   )r:   r�   Úrets     €r,   r<   z0ArrowExpr.over.<locals>.func.<locals>.<listcomp>æ   s%   ø€ Ð?Ð?Ð?¨e�C—N’N 5Ñ)Ô)Ð?Ð?Ð?r.   )rS   ÚprevÚwith_columnsr   r	   r
   Únw_colÚ_append_nodeÚ_to_compliant_exprrq   ÚsetÚintersectionÚNotImplementedErrorÚsimple_selectr9   rN   ÚanyÚgroup_byÚaggÚjoinÚzipÚappendr   Ú_seriesrJ   ÚcolumnÚdictionary_encodeÚcombine_chunksÚindicesÚ_exprÚ_from_series)r4   ÚplxÚ_ÚaliasesÚleaf_ceÚoverlapÚmsgÚpartition_tblÚ	has_nullsÚ
tbl_nativeÚcurrent_colsÚ
group_keysÚencoded_colsÚcol_nameÚhas_nullÚtmp_namer¨   Útbl_encodedÚwindowedr”   r�   rz   Únodesr[   r   r+   s                      @@€€€€€r,   rA   zArrowExpr.over.<locals>.func�   sl  øøø€ Ø×-Ò-Ñ/Ô/ˆCØŒyÐ$Ø—_’_¥T¨+µ~ÀeÈCÈRÈCÄjÐRUÑ7VÔ7VÑ%WÔ%WÑXÔX�Ý>¸tÀRÈÑLÔL‘
��7ÝØÝ˜GÐ$×1Ò1°%¸´)Ñ<Ô<×OÒOÐPSÑTÔTñô ��õ
 ?¸tÀRÈÑLÔL‘
��7Ø�Øð LØ�R”W˜h°5ÀUÐKÐKÐK�å˜g™,œ,×3Ò3°LÑAÔAÐAˆwð /ð1 Gð 1ð 1ð 1ð õ *¨#Ñ.Ô.Ð.à,˜BÔ,¨lÐ;ˆMØRÐR°]Ô5IÔ5QÐRÑRÔRˆIÝ�y‘>”>ð 	DØ—k’k ,¸u�kÑEÔE×IÒIÈ'ÑRÔR�Ø#×(Ò(ØØØ(Ø)Ø#ð )ñ ô �ð DÐCÐCÐC¸7ÐCÑCÔCÐCà')¤y°"´*˜ˆJØ×-Ò-Ñ/Ô/ˆCà$&ˆJØ,.ˆLÝ&)¨-Ô*?ÀÐSXÐ&YÑ&YÔ&Yð Ið IÑ"�˜(Øð IØ×%Ò% hÑ/Ô/Ð/Ð/å=¸aÀÑNÔN�Hà×%Ò% hÑ/Ô/Ð/Ø ×'Ò'¨Ñ1Ô1Ð1à!œk×5Ò5à&×-Ò-¨hÑ7Ô7ß.Ò.¨xÑ8Ô8ß+š^Ñ-Ô-Ü$à #Ø%ð 6ñ 	ô 	�Gð !×'Ò'¨¬	×(>Ò(>¸wÑ(GÔ(GÑHÔHÐHÐHà)˜"œ/¨<Ð8ˆKØ"×+Ò+¨JÀuÐ+ÑMÔM×QÒQÐRYÑZÔZˆHØ+�+Ô+¨ZÐ8×=Ò=ØØ"Ø#ØØð >ñ ô ˆCð @Ð?Ð?Ð?°wÐ?Ñ?Ô?Ð?r.   rB   r{   )r~   r|   Úcurrent_nodeÚkindrs   r•   Úis_elementwiserœ   ÚlistÚreversedÚiter_nodes_reversedr}   r(   r)   r*   )r+   r   r[   r°   rA   rz   r¼   s   ```  @@r,   ÚoverzArrowExpr.over„   s  øøøøø€ Øð 	=ØˆOˆO�8Ø×2Ò2°8Ñ<Ô<Ð<ð Œ~ˆØð 
	+ØÔ!Ô&Ô5ð
	+à”	Ð%¨d¬iÔ.FÐ%ð_ð õ & cÑ*Ô*Ð*å•X�d 4¤>×#EÒ#EÑ#GÔ#GÑHÔHÑIÔIÑJÔJˆðI	@ð I	@ð I	@ð I	@ð I	@ð I	@ð I	@ð I	@ð I	@ð I	@ðV �~Š~ØØ"&Ô"=Ø#Ô7Ø”Mð	 ñ 
ô 
ð 	
r.   N)r   r   r   r    r!   r"   r#   r   r   r   r$   r%   )r/   r0   r1   r    r2   r   r$   r   )rE   rF   r2   r   r$   r   )r$   r   )rT   rU   r$   rV   )r[   r\   r$   r   )r   r\   r[   r\   r$   r   )Ú__name__Ú
__module__Ú__qualname__r   ÚPYARROWr   Ú__annotations__r-   ÚclassmethodrD   rP   rS   rZ   r~   rÃ   r   Úewm_meanrY   r.   r,   r   r      s  € € € € € € Ø&4Ô&<€OÐ<Ð<Ð<Ñ<ð *8Ô)?ð ð  ð  ð  ð  ð  ð ð
ð 
ð 
ñ „[ð
ð6 ð
ð 
ð 
ñ „[ð
ð 5ð 5ð 5ð 5ð ).ðFð Fð Fð Fð Fð Fð

ð 
ð 
ð 
ð>i
ð i
ð i
ð i
ðV ˆÑ Ô €H€H€Hr.   r   r   )(Ú
__future__r   Útypingr   r   r   Úpyarrowrh   Úpyarrow.computeÚcomputeru   Únarwhals._arrow.seriesr   Únarwhals._compliantr   Únarwhals._expression_parsingr	   r
   Únarwhals._utilsr   r   r   Únarwhals.functionsr   r—   Úcollections.abcr   Útyping_extensionsr   Únarwhals._arrow.dataframer   rR   r   Únarwhals._compliant.typingr   r   r   r   r   r   rY   r.   r,   ú<module>rÙ      s¤  ðØ "Ð "Ð "Ð "Ð "Ð "à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ø Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ø )Ð )Ð )Ð )Ð )Ð )Ø ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ Zðð ð ð ð ð ð ð ð ð ð
 -Ð ,Ð ,Ð ,Ð ,Ð ,àð 9Ø(Ð(Ð(Ð(Ð(Ð(à&Ð&Ð&Ð&Ð&Ð&à8Ð8Ð8Ð8Ð8Ð8Ø8Ð8Ð8Ð8Ð8Ð8ØLÐLÐLÐLÐLÐLÐLÐLÐLÐLØ8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ðR!ð R!ð R!ð R!ð R!�	Ð*¨KÐ7Ô8ñ R!ô R!ð R!ð R!ð R!r.   