§
    cŠtjä#  ã                  ó  — d dl mZ d dlZd dlmZmZmZ d dlZd dl	m
Z d dlmZmZmZ d dlmZ d dlmZ d dlmZmZ er,d dl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l%m&Z&  G d„ ded         ¦  «        Z'dS )é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚClassVar)ÚBACKEND_VERSIONÚcast_to_comparable_string_typesÚextract_py_scalar)ÚEagerGroupBy)Ú!evaluate_output_names_and_aliases)Úgenerate_temporary_column_nameÚrequires)ÚIteratorÚMappingÚSequence)ÚArrowDataFrame)Ú	ArrowExpr)ÚAggregateOptionsÚAggregationÚ
Incomplete)ÚNarwhalsAggregation)ÚUniqueKeepStrategyc                  ó  — e Zd ZU ddddddddd	dd
dddddœZded<   ddddœZded<    ed¦  «        Zded<    ed¦  «        Zded<    ed¦  «        Z	ded<    ed¦  «        Z
ded<    ed¦  «        Zded<   d3d'„Zd4d+„Zd5d.„Zd6d/„Zd7d1„Zd2S )8ÚArrowGroupByÚsumÚmeanÚapproximate_medianÚmaxÚminÚstddevÚvarianceÚcountÚcount_distinctÚallÚanyÚfirstÚlast)r   r   Úmedianr   r   ÚstdÚvarÚlenÚn_uniquer!   r#   r$   r%   r&   Ú	any_valuez3ClassVar[Mapping[NarwhalsAggregation, Aggregation]]Ú_REMAP_AGGS)r$   r%   r&   z2ClassVar[Mapping[UniqueKeepStrategy, Aggregation]]Ú_REMAP_UNIQUE)r*   r+   z(ClassVar[frozenset[NarwhalsAggregation]]Ú_OPTION_COUNT_ALL)r!   Ú_OPTION_COUNT_VALID)r%   r&   r,   Ú_OPTION_ORDERED)r(   r)   Ú_OPTION_VARIANCE)r$   r#   r   Ú_OPTION_SCALARÚdfr   Úkeysú#Sequence[ArrowExpr] | Sequence[str]Údrop_null_keysÚboolÚreturnÚNonec              ó²   — || _         |                      ||¬¦  «        \  }| _        | _        |r|                     | j        ¦  «        n|| _        || _        d S )N)r5   )Ú_dfÚ_parse_keysÚ_keysÚ_output_key_namesÚ
drop_nullsÚ_compliant_frameÚ_drop_null_keys)Úselfr4   r5   r7   Úframes        úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/narwhals/_arrow/group_by.pyÚ__init__zArrowGroupBy.__init__C   s`   € ð ˆŒØ48×4DÒ4DÀRÈdÐ4DÑ4SÔ4SÑ1ˆˆtŒz˜4Ô1Ø@NÐ Y × 0Ò 0°´Ñ <Ô <Ð <ÐTYˆÔØ-ˆÔÐÐó    Úexprr   ú+tuple[Aggregation, AggregateOptions | None]c               óø  — d }|                       |¦  «        }|                      |¦  «        }|| j        v r|d         }t          j        |¬¦  «        }n‘|| j        v rt          j        d¬¦  «        }nr|| j        v rt          j        d¬¦  «        }nS|| j        v rt          j	        d¬¦  «        }n4|| j
        v r+|                     dd	¦  «        }t          j	        |¬
¦  «        }|                      |¦  «        |fS )NÚddof)rK   r#   ©ÚmodeÚ
only_validr   )Ú	min_countÚignore_nullsF)Ú
skip_nulls)Ú
_leaf_nameÚ_kwargsr2   ÚpcÚVarianceOptionsr/   ÚCountOptionsr0   r3   ÚScalarAggregateOptionsr1   ÚgetÚ_remap_expr_name)rC   rH   ÚoptionÚfunction_nameÚkwargsrK   rP   s          rE   Ú_configure_aggzArrowGroupBy._configure_aggP   s  € ð +/ˆØŸš¨Ñ-Ô-ˆØ—’˜dÑ#Ô#ˆØ˜DÔ1Ð1Ð1Ø˜&”>ˆDÝÔ'¨TÐ2Ñ2Ô2ˆFˆFØ˜dÔ4Ð4Ð4Ý”_¨%Ð0Ñ0Ô0ˆFˆFØ˜dÔ6Ð6Ð6Ý”_¨,Ð7Ñ7Ô7ˆFˆFØ˜dÔ1Ð1Ð1ÝÔ.¸Ð;Ñ;Ô;ˆFˆFØ˜dÔ2Ð2Ð2Ø!Ÿ:š: n°eÑ<Ô<ˆLÝÔ.¸,ÐGÑGÔGˆFØ×$Ò$ ]Ñ3Ô3°VÐ;Ð;rG   Úexprsúpa.TableGroupByc                ór  — d}d}|D ]x}t          |j                             ¦   «         ¦  «        }|j        | j        vrŒ7d}|j                             dd¦  «        x}r"|r||k    rd|› d|› d�}t          |¦  «        ‚|}Œy|s7t          dk     r,d	t          j
        t          ¦  «        ›d
�}t          |¦  «        ‚|r2t          j         | j        j        |dddœŽj        | j        |¬¦  «        S |s&t          j        | j        j        | j        d¬¦  «        S t          j        | j        j        | j        ¦  «        S )N© TFÚorder_byz?Only one `order_by` can be specified in `group_by`. Found both z and ú.)é   zlUsing `first/last` in a `group_by().agg(...)` context is only available in 'pyarrow>=14.0.0', found version z3.

See https://github.com/apache/arrow/issues/36709)Ú
descendingÚ
nulls_last)Úuse_threads)ÚnextÚ	_metadataÚop_nodes_reversedÚnamer1   r\   rX   ÚNotImplementedErrorr   r   Ú_unparse_versionÚpaÚTableGroupByÚ	compliantÚsortÚnativer>   )rC   r^   rb   rg   rH   ÚmdÚ_current_order_byÚmsgs           rE   Ú_configure_groupedzArrowGroupBy._configure_groupedd   s‚  € ØˆØˆØð 
	-ð 
	-ˆDÝ�d”n×6Ò6Ñ8Ô8Ñ9Ô9ˆBØŒw˜dÔ2Ð2Ð2ØàˆKØ$&¤I§M¢M°*¸bÑ$AÔ$AÐAÐ ð -Øð 3Ð 1°XÒ =Ð =ØÐ\dÐÐÐk|ÐÐÐ�CÝ-¨cÑ2Ô2Ð2Ø,�øØð 	+�°Ò6Ð6ðDÝ!)Ô!:½?Ñ!KÔ!KðDð Dð Dð õ
 & cÑ*Ô*Ð*Øð 	Ý”?Ø#�”Ô# X¸%ÈEÐRÐRÐRÔYØ”
Ø'ðñ ô ð ð
 ð 	YÝ”? 4¤>Ô#8¸$¼*ÐRWÐXÑXÔXÐXåŒ˜tœ~Ô4°d´jÑAÔAÐArG   c           	     ó4  ‡‡‡‡— |                       |¦  «          | j        |Ž }g }| j                             ¦   «         }| j                             ¦   «         Šg | j        ¢| j        ¢R }|D �]^}t          || j        |¦  «        \  }}|j        }	t          |	 	                    ¦   «         ¦  «        }
t          |
¦  «        dk    r—|
d         j        dk    rd}t          |¦  «        ‚‰                     |d         ¦  «         |                     | j        d         › d�¦  «         |                     | j        d         dt          j        d¬¦  «        f¦  «         Œî|                      |¦  «        \  ŠŠ‰                     |¦  «         |                     ˆfd	„|D ¦   «         ¦  «         |                     ˆˆfd
„|D ¦   «         ¦  «         �Œ`|                     |¦  «        }t'          j        t          ¦  «        Št+          |¦  «        D ] \  }}‰|                              |¦  «         Œ!t-          |j        ¦  «        t-          |¦  «        k    r%t          |j        ¦  «        t          |¦  «        k    sd|› d|j        › d�}t          |¦  «        ‚ˆfd„|j        D ¦   «         }ˆfd„|D ¦   «         Š|                     ‰¦  «        }| j                             |¦  «                             t7          t9          | j        | j        d¬¦  «        ¦  «        ¦  «        S )Né   r   r*   z_Safety assertion failed, please report a bug to https://github.com/narwhals-dev/narwhals/issuesÚ_countr!   r#   rL   c                ó   •— g | ]	}|› d ‰› �‘Œ
S )Ú_ra   )Ú.0Úoutput_namer[   s     €rE   ú
<listcomp>z$ArrowGroupBy.agg.<locals>.<listcomp>¡   s'   ø€ ÐRÐRÐR°k�KÐ1Ð1 -Ð1Ð1ÐRÐRÐRrG   c                ó   •— g | ]}|‰‰f‘ŒS ra   ra   )r|   r}   r[   rZ   s     €€rE   r~   z$ArrowGroupBy.agg.<locals>.<listcomp>¤   s    ø€ ÐVÐVÐV¸+�+˜}¨fÐ5ÐVÐVÐVrG   z"Safety assertion failed, expected z got zH, please report a bug at https://github.com/narwhals-dev/narwhals/issuesc                óF   •— g | ]}‰|                               d ¦  «        ‘ŒS )r   )Úpop)r|   ÚitemÚexpected_old_names_indicess     €rE   r~   z$ArrowGroupBy.agg.<locals>.<listcomp>·   s:   ø€ ð  
ð  
ð  
Ø8<Ð& tÔ,×0Ò0°Ñ3Ô3ð 
ð  
ð  
rG   c                ó    •— g | ]
}‰|         ‘ŒS ra   ra   )r|   ÚiÚnew_column_namess     €rE   r~   z$ArrowGroupBy.agg.<locals>.<listcomp>º   s   ø€ ÐCÐCÐC°AÐ,¨QÔ/ÐCÐCÐCrG   F)Ústrict)Ú_ensure_all_simplerv   r>   Úcopyr?   r   rp   ri   Úlistrj   r*   rk   ÚAssertionErrorÚappendrT   rV   r]   ÚextendÚ	aggregateÚcollectionsÚdefaultdictÚ	enumerateÚsetÚcolumn_namesÚrename_columnsÚ_with_nativeÚrenameÚdictÚzip)rC   r^   ÚgroupedÚaggsÚexpected_pyarrow_column_namesÚexcluderH   Úoutput_namesÚaliasesrs   rj   ru   Úresult_simpleÚidxr‚   Ú	index_maprƒ   r[   r†   rZ   s                   @@@@rE   ÚaggzArrowGroupBy.agg„   ss  øøøø€ Ø×Ò Ñ&Ô&Ð&Ø)�$Ô)¨5Ð1ˆàGIˆØ37´:·?²?Ñ3DÔ3DÐ%Ø&*¤j§o¢oÑ&7Ô&7ÐØ8�D”JÐ8 Ô!7Ð8Ð8ˆàð 	ñ 	ˆDÝ$EØ�d”n gñ%ô %Ñ!ˆL˜'ð ”ˆBÝ $ R×%9Ò%9Ñ%;Ô%;Ñ <Ô <ÐÝÐ$Ñ%Ô%¨Ò*Ð*à$ QÔ'Ô,°Ò5Ð5Ø{�CÝ(¨Ñ-Ô-Ð-à ×'Ò'¨°¬
Ñ3Ô3Ð3Ø-×4Ò4¸¼
À1¼Ð5MÐ5MÐ5MÑNÔNÐNØ—’˜TœZ¨œ]¨GµR´_È%Ð5PÑ5PÔ5PÐQÑRÔRÐRØà$(×$7Ò$7¸Ñ$=Ô$=Ñ!ˆM˜6Ø×#Ò# GÑ,Ô,Ð,Ø)×0Ò0ØRÐRÐRÐRÀ\ÐRÑRÔRñô ð ð �KŠKØVÐVÐVÐVÐVÈÐVÑVÔVñô ð ñ ð  ×)Ò)¨$Ñ/Ô/ˆõ <GÔ;RÕSWÑ;XÔ;XÐ"Ý"Ð#@ÑAÔAð 	9ð 	9‰IˆC�Ø& tÔ,×3Ò3°CÑ8Ô8Ð8Ð8å�Ô*Ñ+Ô+­sÐ3PÑ/QÔ/QÒQÐQÝ�MÔ.Ñ/Ô/µ3Ð7TÑ3UÔ3UÒUÐUðYÐ5Rð Yð YØ$Ô1ðYð Yð Yð õ
 ! Ñ%Ô%Ð%ð 
ð  
ð  
ð  
Ø@MÔ@Zð 
ñ  
ô  
ˆ	ð DÐCÐCÐC¸ÐCÑCÔCÐØ%×4Ò4Ð5EÑFÔFˆØŒ~×*Ò*¨=Ñ9Ô9×@Ò@Ý•�T”Z Ô!7ÀÐFÑFÔFÑGÔGñ
ô 
ð 	
rG   ú$Iterator[tuple[Any, ArrowDataFrame]]c           	   #  ó†  ‡
K  — t          d| j        j        ¬¦  «        }d}| j        j        Š
t	          ˆ
fd„| j        D ¦   «         ddiŽ\  }}t          j        } |g |¢|‘R d|dœŽ}‰
                     d	||¬
¦  «        Š
t          j	        |¦  «        D ]­}| j         
                    ‰
                     t          j        ‰
|         |¦  «        ¦  «                             |g¦  «        ¦  «        } |j        | j        Ž                      d	¦  «        }	t!          d„ |	D ¦   «         ¦  «         |j        | j        j        Ž fV — Œ®d S )Né   )Ún_bytesÚcolumnsÚ__null_token_value__c              3  ó(   •K  — | ]}‰|         V — Œd S ©Nra   )r|   ÚkeyÚtables     €rE   ú	<genexpr>z(ArrowGroupBy.__iter__.<locals>.<genexpr>È   s'   øè è € Ð/Ð/˜Sˆe�CŒjÐ/Ð/Ð/Ð/Ð/Ð/rG   Ú	separatorÚ Úreplace)Únull_handlingÚnull_replacementr   )r…   Úfield_Úcolumnc              3  ó4   K  — | ]}t          |¦  «        V — Œd S rª   )r	   )r|   Úels     rE   r­   z(ArrowGroupBy.__iter__.<locals>.<genexpr>Ø   s+   è è € Ð:Ð:°Õ'¨Ñ+Ô+Ð:Ð:Ð:Ð:Ð:Ð:rG   )r   rp   r§   rr   r   r>   rT   Úbinary_join_element_wiseÚ
add_columnÚuniquer•   ÚfilterÚequalÚdropÚsimple_selectÚrowÚtupler<   )rC   Ú	col_tokenÚ
null_tokenÚitÚseparator_scalarÚ
concat_strÚ
key_valuesÚvÚtr¾   r¬   s             @rE   Ú__iter__zArrowGroupBy.__iter__À   s•  øè è € Ý2Ø˜tœ~Ô5ð
ñ 
ô 
ˆ	ð 1ˆ
à”Ô%ˆÝ>Ø/Ð/Ð/Ð/ D¤JÐ/Ñ/Ô/ð 
Ø;=ð 
ð  
ÑˆÐõ
 "$Ô!<ˆ
Ø�Zð 
Øð
Ø!ð
ð 
Ø1:ÈZð
ð 
ð 
ˆ
ð × Ò  1¨Y¸zÐ ÑJÔJˆå”˜:Ñ&Ô&ð 	ð 	ˆAØ”×+Ò+Ø—’�RœX e¨IÔ&6¸Ñ:Ô:Ñ;Ô;×@Ò@À)ÀÑMÔMñô ˆAð "�!”/ 4¤:Ð.×2Ò2°1Ñ5Ô5ˆCåÐ:Ð:°cÐ:Ñ:Ô:Ñ:Ô:Ø�” ¤Ô!1Ð2ðð ð ð ð ð	ð 	rG   N)r4   r   r5   r6   r7   r8   r9   r:   )rH   r   r9   rI   )r^   r   r9   r_   )r^   r   r9   r   )r9   r£   )Ú__name__Ú
__module__Ú__qualname__r-   Ú__annotations__r.   Ú	frozensetr/   r0   r1   r2   r3   rF   r]   rv   r¢   rÈ   ra   rG   rE   r   r       s¿  € € € € € € àØØ&ØØØØØØ$ØØØØØØðHð H€Kð ð ð ñ ð$ ØØðIð I€Mð ð ð ñ ð
 CLÀ)ØñCô CÐð ð ð ñ ð ENÀIÈjÑDYÔDYÐÐYÐYÐYÑYØ@IÀ	Ø&ñAô A€Oð ð ð ñ ð BKÀÈ>ÑAZÔAZÐÐZÐZÐZÑZØ?H¸yØñ@ô @€Nð ð ð ñ ð.ð .ð .ð .ð<ð <ð <ð <ð(Bð Bð Bð Bð@:
ð :
ð :
ð :
ðxð ð ð ð ð rG   r   )r   r   r   )(Ú
__future__r   r�   Útypingr   r   r   Úpyarrowrn   Úpyarrow.computeÚcomputerT   Únarwhals._arrow.utilsr   r   r	   Únarwhals._compliantr
   Únarwhals._expression_parsingr   Únarwhals._utilsr   r   Úcollections.abcr   r   r   Únarwhals._arrow.dataframer   Únarwhals._arrow.exprr   Únarwhals._arrow.typingr   r   r   Únarwhals._compliant.typingr   Únarwhals.typingr   r   ra   rG   rE   ú<module>rÝ      sµ  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð
 -Ð ,Ð ,Ð ,Ð ,Ð ,Ø JÐ JÐ JÐ JÐ JÐ JØ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dàð 3Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;à8Ð8Ð8Ð8Ð8Ð8Ø.Ð.Ð.Ð.Ð.Ð.ðð ð ð ð ð ð ð ð ð ð
 ?Ð>Ð>Ð>Ð>Ð>Ø2Ð2Ð2Ð2Ð2Ð2ðzð zð zð zð z�<Ð LÔMñ zô zð zð zð zrG   