
    h                       % S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S S	KJr  S S
KJr  S SKJr   S S	KJs  Jr  \(       aA  S S	KrS SKJr  S SKJr  S SKJr  S SKJ r   S SK!J"r"  \\\4   r#S\$S'   \S\4   r%S\$S'   S SK&J'r(  O\RR                  RN                  r(Sr*S\$S'    SS jr+S S jr,S S jr- " S S\SS\*4   5      r.g	! \ a    S S	Kr Nf = f)!    )annotations)partial)TYPE_CHECKING)Any)Callable)ClassVar)Mapping)SequenceN)DepthTrackingGroupBy)!evaluate_output_names_and_aliases)SeriesGroupBy)	TypeAlias)NarwhalsAggregationDaskLazyFrame)DaskExprr   PandasSeriesGroupBy._AggFn)GroupByzstr | _AggFnAggregationc                 @    SS jn SS jn[         R                  " SXS9$ )Nc                     U R                  SS9$ )NF)dropna)nunique)ss    I/var/www/html/env/lib/python3.13/site-packages/narwhals/_dask/group_by.pychunkn_unique.<locals>.chunk*   s    yyy&&    c                "    U R                  5       $ N)sum)s0s    r   agg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_uniquer*   )   s    ' >>y??r   c                2    [        [        R                  U S9$ Nddof)r   _DaskGroupByvarr-   s    r   r0   r0   3       <##$//r   c                2    [        [        R                  U S9$ r,   )r   r/   stdr-   s    r   r3   r3   7   r1   r   c                  ^    \ rS rSr% SSSSS\\S\SS	.
rS
\S'           SS jr	SS jr
Srg)DaskLazyGroupBy;   r"   meanmedianmaxminsizecount)
r"   r7   r8   r9   r:   r3   r0   lenr*   r<   z3ClassVar[Mapping[NarwhalsAggregation, Aggregation]]_REMAP_AGGSc                  Xl         [        U5      U l        U R                  R                  R                  [        U R                  5      USS9U l        g )NT)r   observed)_compliant_framelist_keys	compliantnativegroupby_grouped)selfdfkeysdrop_null_keyss       r   __init__DaskLazyGroupBy.__init__I   sF     !# $T

--55^d 6 
r   c                T  ^ SSK Jn  U(       d;  U R                  R                  " U R                  6 R                  U R                  SS9$ U R                  U5        0 nU H  n[        X@R                  U R                  5      u  pVUR                  S:X  aR  U R                  S   nU R                  UR                  5      mUR                  [        R                  XgT45      5        M  U R                  U R                  U5      5      m[        T5      (       a  T" S0 UR                   D6OTmUR                  U4S j[#        Xe5       5       5        M     U" U R$                  R&                  " S0 UD6R)                  5       U R                  R*                  U R                  R,                  S9$ )Nr   r   any)keepc              3  2   >#    U  H  u  pXT44v   M     g 7fr!    ).0aliasoutput_nameagg_fns      r   	<genexpr>&DaskLazyGroupBy.agg.<locals>.<genexpr>n   s#      '*D&E f-.*Ds   )backend_versionversionrR   )narwhals._dask.dataframer   rD   simple_selectrC   unique_ensure_all_simpler   _depth_remap_expr_name_function_nameupdatedictfromkeys
_leaf_namecallable_call_kwargsziprG   r$   reset_index_backend_version_version)	rH   exprsr   simple_aggregationsexproutput_namesaliasescolumnrV   s	           @r   r$   DaskLazyGroupBy.aggR   sn   :>>//<CC

 D   	& CED$Enndjj%!L {{aA..t/B/BC#**4==6BR+ST **4??4+@AF4<V4D4DV0d//0&F&& '*-g*D'  & MM4 34@@B NN;;NN++
 	
r   )rA   rG   rC   N)rI   r   rJ   zSequence[str]rK   boolr'   None)rl   r   r'   r   )__name__
__module____qualname____firstlineno__r3   r0   r*   r>   __annotations__rL   r$   __static_attributes__rR   r   r   r5   r5   ;   sZ    HKD 

'4
LP
	
$
r   r5   r   r   )r'   zdd.Aggregation)r.   intr'   r   )/
__future__r   	functoolsr   typingr   r   r   r   r	   r
   dask.dataframe	dataframer)   narwhals._compliantr   narwhals._expression_parsingr   dask.dataframe.dask_expr	dask_exprdxModuleNotFoundErrorpandaspdpandas.core.groupbyr   _PandasSeriesGroupBytyping_extensionsr   narwhals._compliant.group_byr   r[   r   narwhals._dask.exprr   r   ry   r   dask_expr._groupbyr   r/   _groupbyr   r*   r0   r3   r5   rR   r   r   <module>r      s    "          4 J)) I+@6,%9#s(%CC c*FI*:;;&&L'Y ' B@00;
*?J+ST ;
S  s   	C 
C"!C"