
    /_i                       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 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,j\                  j4                  ZdZ/de(d<   	 ddZ0ddZ1ddZ2d dZ3d dZ4 G d dedde/f         Z5y# e-$ r d dl+Z,Y Ow xY w)!    )annotations)partial)TYPE_CHECKINGAnyCallableClassVarN)DepthTrackingGroupBy)make_group_by_kwargs)!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    V/var/www/html/land_sniper/venv/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} |su | j                  j                  | j                   j                  | j                  dd       j                  t        t        | j                  | j                                    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t1        ||      D               '  | | j2                  j4                  di |j7                         | j                  j8                        j                  t        t        | j                  | j                                    S )	Nr   r   r@   )keeporder_by   c              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   )versionrk   )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columnro   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' T^^==?@I488:;<AA..y~~>#**4==66BR+ST **4??4+@AF3;F3CV/i../F&& '*4Wl*K' !	( DMM4 34@@BNN++
 &c$**d&<&<=>
?	@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'   rk   r!   r   rM   rM   M   so    HKD  UU 1U U 
U(@r!   rM   r   r   )r+   zdd.Aggregation)rF   intr+   r   )6
__future__r   	functoolsr   typingr   r   r   r   dask.dataframe	dataframer/   narwhals._compliantr	   narwhals._dask.utilsr
   narwhals._expression_parsingr   narwhals._utilsr   collections.abcr   r   pandaspddask.dataframe.apir   rG   pandas.core.groupbyr   _PandasSeriesGroupBytyping_extensionsr   narwhals._compliant.typingr   rr   r   narwhals._dask.exprr   r   r   r   dask.dataframe.dask_expr	dask_exprdxModuleNotFoundError_groupbyr   r1   r;   rB   rH   rK   rM   rk   r!   r   <module>r      s    "  9 9  4 5 J &1:I+>6,%9#s(%CC c*FI*-- ;;&&L'Y ' B@<<00G@*?J+ST G@]  s   	C 	CC