o
    	h*                     @  s  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rxd 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zd dl(m
  m)Z* W n e+y   d dl)Z*Y nw e*j,jZdZ-de&d< 	 d'ddZ.d'ddZ/d'ddZ0d(dd Z1d(d!d"Z2G d#d$ d$ed%d&e-f Z3dS ))    )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Aggregationreturndd.Aggregationc                  C  $   ddd} ddd	}t jd
| |dS )Nsr   r   pd.Series[Any]c                 S     | j ddS )NF)dropna)nuniquer    r    T/var/www/html/mmpi2/mmpi_env/lib/python3.10/site-packages/narwhals/_dask/group_by.pychunk'      zn_unique.<locals>.chunks0c                 S  s   |   S N)sumr$   r    r    r!   agg*   s   zn_unique.<locals>.aggr   namer"   r(   r   r   r   r   r$   r   r   r   ddr   r"   r(   r    r    r!   n_unique&      

r0   c                  C  r   )Nr   r   r   r   c                 S  r   NT)skipnaallr   r    r    r!   r"   1   r#   z_all.<locals>.chunkr$   c                 S  r   r2   r4   r'   r    r    r!   r(   4   r#   z_all.<locals>.aggr5   r)   r+   r,   r-   r/   r    r    r!   _all0   r1   r6   c                  C  r   )Nr   r   r   r   c                 S  r   r2   anyr   r    r    r!   r"   ;   r#   z_any.<locals>.chunkr$   c                 S  r   r2   r7   r'   r    r    r!   r(   >   r#   z_any.<locals>.aggr8   r)   r+   r,   r-   r/   r    r    r!   _any:   r1   r9   ddofintc                 C     t tj| dS Nr:   )r   _DaskGroupByvarr>   r    r    r!   r@   D      r@   c                 C  r<   r=   )r   r?   stdr>   r    r    r!   rB   H   rA   rB   c                   @  sJ   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dZ
dddZdS )DaskLazyGroupByr&   meanmedianmaxminsizecountquantile)r&   rD   rE   rF   rG   rB   r@   lenr0   rI   rJ   r5   r8   z3ClassVar[Mapping[NarwhalsAggregation, Aggregation]]_REMAP_AGGSdfr   keys"Sequence[DaskExpr] | Sequence[str]drop_null_keysboolr   Nonec               C  s6   | j ||d\| _| _| _| jjj| j|dd| _d S )N)rN   T)r   observed)_parse_keys_compliant_frame_keys_output_key_names	compliantnativegroupby_grouped)selfrM   rN   rP   r    r    r!   __init__]   s   zDaskLazyGroupBy.__init__exprsr   c           	        s2  ddl m} |s| jj| j j| jddtt| j| j	S | 
| i }g | j| j	R }|D ]L}t|| j|\}}|jdkrX| jd }| |j |t|| f q1| | | t rl di |jn  | fddt||D  q1|| jjdi | | jjdtt| j| j	S )	Nr   r   r8   )keepc                 3  s     | ]\}}|| ffV  qd S r%   r    ).0aliasoutput_nameagg_fnr    r!   	<genexpr>   s
    

z&DaskLazyGroupBy.agg.<locals>.<genexpr>)versionr    )narwhals._dask.dataframer   rX   simple_selectrV   uniquerenamedictziprW   _ensure_all_simpler	   _depth_remap_expr_name_function_nameupdatefromkeys
_leaf_namecallable_scalar_kwargsr
   r[   r(   reset_index_version)	r\   r^   r   simple_aggregationsexcludeexproutput_namesaliasescolumnr    rc   r!   r(   l   s<   



zDaskLazyGroupBy.aggN)rM   r   rN   rO   rP   rQ   r   rR   )r^   r   r   r   )__name__
__module____qualname__rB   r@   r0   r6   r9   rL   __annotations__r]   r(   r    r    r    r!   rC   L   s"   
 
rC   r   r   )r   r   )r:   r;   r   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   r?   pandas.core.groupbyr   _PandasSeriesGroupBytyping_extensionsr   narwhals._compliant.typingr   rg   r   narwhals._dask.exprr   r   r   r   dask.dataframe.dask_expr	dask_exprdxModuleNotFoundError_groupbyr   r0   r6   r9   r@   rB   rC   r    r    r    r!   <module>   s@    







