
    hh%                       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rOd 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* 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Z0d#dZ1d#dZ2 G 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                 @    d
d} dd}t          j        d| |	          S )Nsr   r   pd.Series[Any]c                .    |                      d          S )NF)dropna)nuniquer   s    N/var/www/histauto/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_uniquer1   &   sC    ' ' ' '    >y3????r#   c                 @    d
d} dd}t          j        d| |	          S )Nr   r   r   r   c                .    |                      d          S NT)skipnaallr    s    r!   r"   z_all.<locals>.chunk1       uuDu!!!r#   r$   c                .    |                      d          S r4   r6   r(   s    r!   r)   z_all.<locals>.agg4       vvTv"""r#   r7   r*   r,   r-   r.   r0   s     r!   _allr;   0   C    " " " "# # # # >uEs;;;;r#   c                 @    d
d} dd}t          j        d| |	          S )Nr   r   r   r   c                .    |                      d          S r4   anyr    s    r!   r"   z_any.<locals>.chunk;   r8   r#   r$   c                .    |                      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#   ddofintc                8    t          t          j        |           S NrC   )r   _DaskGroupByvarrG   s    r!   rI   rI   D       <#$////r#   c                8    t          t          j        |           S rF   )r   rH   stdrG   s    r!   rL   rL   H   rJ   r#   c                  J    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dS )DaskLazyGroupByr'   meanmedianmaxminsizecountquantile)r'   rO   rP   rQ   rR   rL   rI   lenr1   rT   rU   r7   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)rY   T)r   observed)_parse_keys_compliant_frame_keys_output_key_names	compliantnativegroupby_grouped)selfrX   rY   r[   s       r!   __init__zDaskLazyGroupBy.__init__]   sh     EIDTDTT EU E
 E
Atz4+A -55J~ 6 
 
r#   exprsr   c                   	 ddl m} |sg | j        j        | j                             | j        d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                                      t          t          | j        | j	                                      S )Nr   r   r@   )keeporder_byc              3  *   K   | ]\  }}||ffV  d S r&    ).0aliasoutput_nameagg_fns      r!   	<genexpr>z&DaskLazyGroupBy.agg.<locals>.<genexpr>   sE       ' '&E; f-.' ' ' ' ' 'r#   )versionro   )narwhals._dask.dataframer   rd   simple_selectrb   uniquerenamedictziprc   _ensure_all_simpler
   _depth_remap_expr_name_function_nameupdatefromkeys
_leaf_namecallable_scalar_kwargsr   rg   r)   reset_index_version)
rh   rj   r   simple_aggregationsexcludeexproutput_namesaliasescolumnrs   s
            @r!   r)   zDaskLazyGroupBy.aggl   s2   :::::: 	 -,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&& ' ' ' '*4Wl*K*K' ' '     }DM44 344@@BBN+
 
 
 &c$*d&<==>>
?
?	@r#   N)rX   r   rY   rZ   r[   r\   r   r]   )rj   r   r   r   )__name__
__module____qualname__rL   rI   r1   r;   rB   rW   __annotations__ri   r)   ro   r#   r!   rN   rN   L   s         H HK     
 
 
 
'@ '@ '@ '@ '@ '@r#   rN   r   r   )r   r   )rC   rD   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   rH   pandas.core.groupbyr   _PandasSeriesGroupBytyping_extensionsr   narwhals._compliant.typingr   rv   r   narwhals._dask.exprr   r   r   r   dask.dataframe.dask_expr	dask_exprdxModuleNotFoundError_groupbyr   r1   r;   rB   rI   rL   rN   ro   r#   r!   <module>r      s   " " " " " " "       9 9 9 9 9 9 9 9 9 9 9 9       4 4 4 4 4 4 J J J J J J & & & & & & '11111111::::::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G@ G@ G@ G@ G@*?J+ST G@ G@ G@ G@ G@s   	B 	BB