
    -Ph                       U d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ erGd 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' n# e($ r d dl&Z'Y nw xY we'j)        j        ZdZ*de#d<   	 ddZ+ddZ,ddZ- G d dedde*f                   Z.dS )     )annotations)partial)TYPE_CHECKINGAnyCallableClassVarMappingSequenceN)DepthTrackingGroupBy)!evaluate_output_names_and_aliases)GroupBy)SeriesGroupBy)	TypeAlias)NarwhalsAggregationDaskLazyFrame)DaskExprr   PandasSeriesGroupBy._AggFnzstr | _AggFnAggregationreturndd.Aggregationc                 @    d
d} dd}t          j        d| |	          S )Nsr   r   pd.Series[Any]c                .    |                      d          S )NF)dropna)nunique)r   s    W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/narwhals/_dask/group_by.pychunkzn_unique.<locals>.chunk$   s    yyy&&&    s0c                *    |                                  S N)sum)r"   s    r   aggzn_unique.<locals>.agg'   s    vvxxr!   r   )namer    r&   )r   r   r   r   )r"   r   r   r   )ddr   )r    r&   s     r   n_uniquer)   #   sC    ' ' ' '    >y3????r!   ddofintc                8    t          t          j        |           S Nr*   )r   _DaskGroupByvarr.   s    r   r0   r0   -       <#$////r!   c                8    t          t          j        |           S r-   )r   r/   stdr.   s    r   r3   r3   1   r1   r!   c                  D    e Zd ZU dddddeededd
Zd	ed
<   ddZddZ	dS )DaskLazyGroupByr%   meanmedianmaxminsizecount)
r%   r6   r7   r8   r9   r3   r0   lenr)   r;   z3ClassVar[Mapping[NarwhalsAggregation, Aggregation]]_REMAP_AGGSdfr   keys"Sequence[DaskExpr] | Sequence[str]drop_null_keysboolr   Nonec                  |                      ||          \  | _        | _        | _        | j        j                            | j        |d          | _        d S )N)r?   T)r   observed)_parse_keys_compliant_frame_keys_output_key_names	compliantnativegroupby_grouped)selfr>   r?   rA   s       r   __init__zDaskLazyGroupBy.__init__C   sh     EIDTDTT EU E
 E
Atz4+A -55J~ 6 
 
r!   exprsr   c                  	 ddl m} |sf | j        j        | j                             | j        d                              t          t          | j        | j	                                      S | 
                    |           i }g | j        | j	        R }|D ]}t          || j        |          \  }}|j        dk    rX| j        d         }|                     |j                  	|                    t                              ||	f                     ~|                     |                     |                    	t%          	          r 	di |j        n		|                    	fdt          ||          D                         | | j        j        di |                                | j        j        | j        j                                      t          t          | j        | j	                                      S )Nr   r   any)keepc              3  *   K   | ]\  }}||ffV  d S r$    ).0aliasoutput_nameagg_fns      r   	<genexpr>z&DaskLazyGroupBy.agg.<locals>.<genexpr>r   sE       ' '&E; f-.' ' ' ' ' 'r!   )backend_versionversionrU   )narwhals._dask.dataframer   rJ   simple_selectrH   uniquerenamedictziprI   _ensure_all_simpler   _depth_remap_expr_name_function_nameupdatefromkeys
_leaf_namecallable_scalar_kwargsrM   r&   reset_index_backend_version_version)
rN   rP   r   simple_aggregationsexcludeexproutput_namesaliasescolumnrY   s
            @r   r&   zDaskLazyGroupBy.aggR   s8   :::::: 	 -,dj9
//ST-CDDEEFF 	&&& CE8DJ8!788 	 	D$Edng% %!L' {aA..t/BCC#**4==66BR+S+STTT **4??4+@+@AAF6>v6F6FRVV22d1222FF&& ' ' ' '*-g|*D*D' ' '     }DM44 344@@BB N;N+
 
 
 &c$*d&<==>>
?
?		@r!   N)r>   r   r?   r@   rA   rB   r   rC   )rP   r   r   r   )
__name__
__module____qualname__r3   r0   r)   r=   __annotations__rO   r&   rU   r!   r   r5   r5   5   s         H HK    
 
 
 
(@ (@ (@ (@ (@ (@r!   r5   r   r   )r   r   )r*   r+   r   r   )/
__future__r   	functoolsr   typingr   r   r   r   r	   r
   dask.dataframe	dataframer(   narwhals._compliantr   narwhals._expression_parsingr   pandaspddask.dataframe.apir   r/   pandas.core.groupbyr   _PandasSeriesGroupBytyping_extensionsr   narwhals._compliant.group_byr   r]   r   narwhals._dask.exprr   r   rx   r   dask.dataframe.dask_expr	dask_exprdxModuleNotFoundError_groupbyr   r)   r0   r3   r5   rU   r!   r   <module>r      sM   " " " " " " "       L L L L L L L L L L L L L L L L       4 4 4 4 4 4 J J J J J J '::::::IIIIII++++++@@@@@@666666,,,,,,%9#s(%CCCCC c*F*****----------   ;&L' ' ' ' ' B@ @ @ @0 0 0 00 0 0 0E@ E@ E@ E@ E@*?J+ST E@ E@ E@ E@ E@s   :	B 	BB