
    Wh9                       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 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*jX                  j0                  ZdZ-de&d<   	 ddZ.ddZ/ddZ0ddZ1ddZ2 G d dedde-f         Z3y# e+$ r d dl)Z*Y Ow xY w)     )annotations)partial)TYPE_CHECKINGAnyCallableClassVarN)DepthTrackingGroupBy)!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    Q/var/www/html/jupyter_env/lib/python3.12/site-packages/narwhals/_dask/group_by.pychunkzn_unique.<locals>.chunk'   s    yyy&&    c                "    | j                         S N)sums0s    r   aggzn_unique.<locals>.agg*   s    vvxr    r   namer   r&   r   r   returnpd.Series[Any]r%   r   r*   r+   ddr   r   r&   s     r   n_uniquer0   &   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>.chunk1       uuDu!!r    c                &    | j                  d      S r3   r5   r$   s    r   r&   z_all.<locals>.agg4       vvTv""r    r6   r'   r)   r,   r-   r/   s     r   _allr:   0   !    "# >>uEs;;r    c                 B    dd} dd}t        j                  d| |      S )Nc                &    | j                  d      S r3   anyr   s    r   r   z_any.<locals>.chunk;   r7   r    c                &    | j                  d      S r3   r>   r$   s    r   r&   z_any.<locals>.agg>   r9   r    r?   r'   r)   r,   r-   r/   s     r   _anyrA   :   r;   r    c                8    t        t        j                  |       S Nddof)r   _DaskGroupByvarrD   s    r   rG   rG   D       <##$//r    c                8    t        t        j                  |       S rC   )r   rF   stdrD   s    r   rJ   rJ   H   rH   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#   rM   rN   rO   rP   rJ   rG   lenr0   rR   rS   r6   r?   z3ClassVar[Mapping[NarwhalsAggregation, Aggregation]]_REMAP_AGGSc                  | j                  ||      \  | _        | _        | _        | j                  j
                  j                  | j                  |d      | _        y )N)keysT)r   observed)_parse_keys_compliant_frame_keys_output_key_names	compliantnativegroupby_grouped)selfdfrW   drop_null_keyss       r   __init__zDaskLazyGroupBy.__init__]   s`     EIDTDTT EU E
Atz4+A --55JJ~ 6 
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                  |      \  }}|j                  dk(  rR| j                  d   }| j                  |j                        	|j                  t        j!                  ||	f             ~| j                  | j#                  |            	t%        	      r 	di |j&                  n		|j                  	fdt)        ||      D                 | | j*                  j,                  di |j/                         | j                  j0                        j                  t        t        | j                  | j                                    S )Nr   r   r?   )keeporder_byc              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   )versionri   )narwhals._dask.dataframer   r]   simple_selectr[   uniquerenamedictzipr\   _ensure_all_simpler
   _depth_remap_expr_name_function_nameupdatefromkeys
_leaf_namecallable_scalar_kwargsr   r`   r&   reset_index_version)
ra   exprsr   simple_aggregationsexcludeexproutput_namesaliasescolumnrm   s
            @r   r&   zDaskLazyGroupBy.aggl   s   : -,,djj9

>ST-C-CDEF 	& CE8DJJ8!7!78 	D$Ednng%!L' {{aA..t/B/BC#**4==66BR+ST **4??4+@AF6>v6FV2d112FF&& '*4Wl*K' 	& DMM4 34@@BNN++
 &c$**d&<&<=>
?	@r    N)rb   r   rW   z"Sequence[DaskExpr] | Sequence[str]rc   boolr*   None)r   r   r*   r   )__name__
__module____qualname__rJ   rG   r0   r:   rA   rU   __annotations__rd   r&   ri   r    r   rL   rL   L   sj    HKD  

 1
 
 

'@r    rL   r   r   )r*   zdd.Aggregation)rE   intr*   r   )4
__future__r   	functoolsr   typingr   r   r   r   dask.dataframe	dataframer.   narwhals._compliantr	   narwhals._expression_parsingr
   narwhals._utilsr   collections.abcr   r   pandaspddask.dataframe.apir   rF   pandas.core.groupbyr   _PandasSeriesGroupBytyping_extensionsr   narwhals._compliant.typingr   rp   r   narwhals._dask.exprr   r   r   r   dask.dataframe.dask_expr	dask_exprdxModuleNotFoundError_groupbyr   r0   r:   rA   rG   rJ   rL   ri   r    r   <module>r      s    "  9 9  4 J &1:I+>6,%9#s(%CC c*FI*-- ;;&&L'Y ' B@<<00G@*?J+ST G@]  s   >	C 	CC