
    O3j                       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mZ d d	lmZ d dl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& 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                  j8                  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ClassVarcastN)DepthTrackingGroupBy)make_group_by_kwargs)!evaluate_output_names_and_aliases)CallableMappingSequence)	TypeAlias)GroupBy)SeriesGroupBy)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    D/DATA/.local/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_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       uuDu!!r!   c                &    | j                  d      S r4   r6   r%   s    r   r'   z_all.<locals>.agg5       vvTv""r!   r7   r(   r*   r-   r.   r0   s     r   _allr;   1   !    "# >>uEs;;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DTDTT EU E
Atz4+A /nM5--55djjTOTr!   c           	        ddl m} |sw | j                  j                  | j                   j                  | j                  dd       j                  t        t        | j                  | j                  d                  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t        ||d	      D               ) t1        d
 | j2                  j4                  di |      }
 ||
j7                         | j                  j8                        j                  t        t        | j                  | j                  d                  S )Nr   r   r@   )keeporder_byF)strict   c              3  0   K   | ]  \  }}||ff  y wr#    ).0aliasoutput_nameagg_fns      r   	<genexpr>z&DaskLazyGroupBy.agg.<locals>.<genexpr>   s(      '*Q&E; f-.*Qs   Tzdx.DataFrame)versionrl   )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columnaggedrp   s              @r   r'   zDaskLazyGroupBy.aggl   s   : -,,djj9

>ST-C-CERST 	& CE8DJJ8!7!78D$Ednng%!L' T^^==?@I488:;<AA..y~~>#**4==66BR+ST **4??4+@AF3;F3CV/i../F&& '*-g|D*Q' ! ( ^%6T]]%6%6%M9L%MNU..0$..:Q:QRYYTZZ!7!7FG
 	
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'   rl   r!   r   rM   rM   M   sn    HKD  UU 1U U 
U(
r!   rM   r   r   )r+   zdd.Aggregation)rF   intr+   r   )4
__future__r   	functoolsr   typingr   r   r   r   dask.dataframe	dataframer/   narwhals._compliantr	   narwhals._dask.utilsr
   narwhals._expression_parsingr   collections.abcr   r   r   r   	dask_exprdxpandaspddask.dataframe.apir   rG   pandas.core.groupbyr   _PandasSeriesGroupBynarwhals._compliant.typingr   rs   r   narwhals._dask.exprr   r   r   r   dask.dataframe.dask_exprModuleNotFoundError_groupbyr   r1   r;   rB   rH   rK   rM   rl   r!   r   <module>r      s    "  5 5  4 5 J;; :I>6,%9#s(%CC c*FI*-- ;;&&L'Y ' B@<<00G
*?J+ST G
]  s   	C 	CC