Ë
    ðmxiÛ  ã                  óÀ  — U d 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 d dlmZ d dlmZ erId d	l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" d dl#m$Z$ d dl%m&Z& eeef   Z'de(d<   edef   Z)de(d<   n 	 d dl*m
c m+Z, e,j\                  j4                  ZdZ/de(d<   	 dd„Z0dd„Z1dd„Z2d d„Z3d d„Z4 G d„ dedde/f   «      Z5y# e-$ r d dl+Z,Y ŒOw xY w)!é    )Úannotations)Úpartial)ÚTYPE_CHECKINGÚAnyÚCallableÚClassVarN)ÚDepthTrackingGroupBy)Úmake_group_by_kwargs)Ú!evaluate_output_names_and_aliases)Ú
zip_strict)ÚMappingÚSequence)ÚGroupBy)ÚSeriesGroupBy)Ú	TypeAlias)ÚNarwhalsAggregation©ÚDaskLazyFrame)ÚDaskExprr   ÚPandasSeriesGroupBy.Ú_AggFnzstr | _AggFnÚAggregationc                 óB   — dd„} dd„}t        j                  d| |¬«      S )Nc                ó&   — | j                  d¬«      S )NF)Údropna)Únunique©Úss    úN/home/htdocs/ttos/venv/lib/python3.12/site-packages/narwhals/_dask/group_by.pyÚchunkzn_unique.<locals>.chunk(   s   € Ø�y‰y ˆyÓ&Ð&ó    c                ó"   — | j                  «       S ©N)Úsum©Ús0s    r   Úaggzn_unique.<locals>.agg+   s   € Ø�v‰v‹xˆr!   r   ©Únamer    r'   ©r   r   Úreturnúpd.Series[Any]©r&   r   r+   r,   ©Úddr   ©r    r'   s     r   Ún_uniquer1   '   s!   € ó'óô �>‰>˜y°¸3Ô?Ð?r!   c                 óB   — dd„} dd„}t        j                  d| |¬«      S )Nc                ó&   — | j                  d¬«      S ©NT)Úskipna©Úallr   s    r   r    z_all.<locals>.chunk2   ó   € Ø�u‰u˜DˆuÓ!Ð!r!   c                ó&   — | j                  d¬«      S r4   r6   r%   s    r   r'   z_all.<locals>.agg5   ó   € Ø�v‰v˜TˆvÓ"Ð"r!   r7   r(   r*   r-   r.   r0   s     r   Ú_allr;   1   ó!   € ó"ó#ô �>‰>˜u¨E°sÔ;Ð;r!   c                 óB   — dd„} dd„}t        j                  d| |¬«      S )Nc                ó&   — | j                  d¬«      S r4   ©Úanyr   s    r   r    z_any.<locals>.chunk<   r8   r!   c                ó&   — | j                  d¬«      S r4   r?   r%   s    r   r'   z_any.<locals>.agg?   r:   r!   r@   r(   r*   r-   r.   r0   s     r   Ú_anyrB   ;   r<   r!   c                ó8   — t        t        j                  | ¬«      S ©N©Úddof)r   Ú_DaskGroupByÚvarrE   s    r   rH   rH   E   ó   € Ü”<×#Ñ#¨$Ô/Ð/r!   c                ó8   — t        t        j                  | ¬«      S rD   )r   rG   ÚstdrE   s    r   rK   rK   I   rI   r!   c                  óX   — e Zd ZU dddddeededdeed	œZd
e	d<   	 	 	 	 	 	 	 	 dd„Z
dd„Zy)ÚDaskLazyGroupByr$   ÚmeanÚmedianÚmaxÚminÚsizeÚcountÚquantile)r$   rN   rO   rP   rQ   rK   rH   Úlenr1   rS   rT   r7   r@   z3ClassVar[Mapping[NarwhalsAggregation, Aggregation]]Ú_REMAP_AGGSc              óÔ   — | j                  ||¬«      \  | _        | _        | _        t	        |¬«      } | j
                  j                  j                  | j                  fi |¤Ž| _        y )N)Úkeys)Údrop_null_keys)	Ú_parse_keysÚ_compliant_frameÚ_keysÚ_output_key_namesr
   Ú	compliantÚnativeÚgroupbyÚ_grouped)ÚselfÚdfrX   rY   Úgroup_by_kwargss        r   Ú__init__zDaskLazyGroupBy.__init__^   se   € ð EI×DTÑDTØ�Tð EUó E
ÑAˆÔ˜tœz¨4Ô+Aô /¸nÔMˆØ5˜Ÿ™×-Ñ-×5Ñ5°d·j±jÑTÀOÑTˆ�r!   c                ó¦  ‡
— ddl m} |su | j                  j                  | j                  Ž j                  | j                  dd ¬«      j                  t        t        | j                  | j                  «      «      «      S | j                  |«       i }g | j                  ¢| j                  ¢­}|D �]$  }t        || j                  |«      \  }}t        |j                  j                  «       «      }t        t!        |j                  j                  «       «      «      dk(  rR| j                  d   }	| j#                  |j$                  «      Š
|j'                  t        j)                  ||	‰
f«      «       ŒÂ| j#                  | j+                  |«      «      Š
t-        ‰
«      r ‰
di |j.                  ¤Žn‰
Š
|j'                  ˆ
fd„t1        ||«      D «       «       �Œ'  | | j2                  j4                  di |¤Žj7                  «       | j                  j8                  ¬«      j                  t        t        | j                  | j                  «      «      «      S )	Nr   r   r@   )ÚkeepÚorder_byé   c              3  ó0   •K  — | ]  \  }}||‰ff–— Œ y ­wr#   © )Ú.0ÚaliasÚoutput_nameÚagg_fns      €r   ú	<genexpr>z&DaskLazyGroupBy.agg.<locals>.<genexpr>�   s'   øè ø€ ò 'á&�E˜;ð ˜ fÐ-Ô.ñ'ùs   ƒ)Úversionrk   )Únarwhals._dask.dataframer   r^   Úsimple_selectr\   ÚuniqueÚrenameÚdictÚzipr]   Ú_ensure_all_simpler   ÚnextÚ	_metadataÚop_nodes_reversedrU   ÚlistÚ_remap_expr_namer)   ÚupdateÚfromkeysÚ
_leaf_nameÚcallableÚkwargsr   ra   r'   Úreset_indexÚ_version)rb   Úexprsr   Úsimple_aggregationsÚexcludeÚexprÚoutput_namesÚaliasesÚ	last_nodeÚcolumnro   s             @r   r'   zDaskLazyGroupBy.aggl   së  ø€ Ý:áð -�—‘×,Ñ,¨d¯j©jÐ9ß‘˜Ÿ
™
¨¸�Ó>ß‘œœS §¡¨T×-CÑ-CÓDÓEÓFðð 	×Ñ Ô&ð CEÐØ8�D—J‘JÐ8 ×!7Ñ!7Ñ8ˆØó 	ˆDÜ$EØ�d—n‘n gó%Ñ!ˆL˜'ô ˜TŸ^™^×=Ñ=Ó?Ó@ˆIÜ”4˜Ÿ™×8Ñ8Ó:Ó;Ó<ÀÒAàŸ™ A™�Ø×.Ñ.¨y¯~©~Ó>�Ø#×*Ñ*¬4¯=©=¸À6È6ÐBRÓ+SÔTØð ×*Ñ*¨4¯?©?¸4Ó+@ÓAˆFä3;¸FÔ3C‘VÑ/˜i×.Ñ.Ò/ÈˆFØ×&Ñ&ó 'ä*4°W¸lÓ*Kô'ö ð!	ñ( ØˆD�M‰M×ÑÑ4Ð 3Ñ4×@Ñ@ÓBØ—N‘N×+Ñ+ô
÷ ‰&””c˜$Ÿ*™* d×&<Ñ&<Ó=Ó>Ó
?ð	@r!   N)rc   r   rX   z"Sequence[DaskExpr] | Sequence[str]rY   Úboolr+   ÚNone)r…   r   r+   r   )Ú__name__Ú
__module__Ú__qualname__rK   rH   r1   r;   rB   rV   Ú__annotations__re   r'   rk   r!   r   rM   rM   M   so   … àØØØØØØØØØØØØñH€KÐDó ð UàðUð 1ðUð ðUð 
óUô(@r!   rM   r   r   )r+   zdd.Aggregation)rF   Úintr+   r   )6Ú
__future__r   Ú	functoolsr   Útypingr   r   r   r   Údask.dataframeÚ	dataframer/   Únarwhals._compliantr	   Únarwhals._dask.utilsr
   Únarwhals._expression_parsingr   Únarwhals._utilsr   Úcollections.abcr   r   ÚpandasÚpdÚdask.dataframe.apir   rG   Úpandas.core.groupbyr   Ú_PandasSeriesGroupByÚtyping_extensionsr   Únarwhals._compliant.typingr   rr   r   Únarwhals._dask.exprr   r   r’   r   Údask.dataframe.dask_exprÚ	dask_exprÚdxÚModuleNotFoundErrorÚ_groupbyr   r1   r;   rB   rH   rK   rM   rk   r!   r   ú<module>r«      s×   ðÞ "å ß 9Ó 9å å 4Ý 5Ý JÝ &áß1ãÝ:ÝIÝ+å>Ý6Ý,à%9¸#¸s¸(Ñ%CÐ˜ÓCØ   c Ñ*€FˆIÔ*ðß-Ð-ð —;‘;×&Ñ&€Là'€ˆYÓ 'Ø Bó@ó<ó<ó0ó0ôG@Ð*¨?¸JÈÐ+SÑTõ G@øð] ò Ýðús   Â	C Ã	CÃC