
    bi                    ,   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Z	d dl
mZ d dlmZmZmZmZ d dlmZ  G d d	e      Z G d
 de      Z G d de      Z G d de      Zd Zd Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )annotationsN)Callable)Any)methods)	BlockwiseExpr
Projectionplain_column_projection)Mc                  t    e Zd ZU g dZddiZdZdZded<   dZded<   d Z	e
j                  d	        Zd
 Zd Zy)CumulativeAggregations)frameaxisskipnar   NzCallable | Noneaggregate_operationz
int | Noneneutral_elementc                6    | j                   j                         S Nr   
_divisionsselfs    _/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/dataframe/dask_expr/_cumulative.pyr   z!CumulativeAggregations._divisions       zz$$&&    c                .    | j                   j                  S r   r   _metar   s    r   r   zCumulativeAggregations._meta       zzr   c                    t        | j                  | j                  | j                  | j                        }t        || j                        }t        ||| j                  | j                        S r   )	CumulativeBlockwiser   r   r   chunk_operationTakeLastCumulativeFinalizer   r   )r   chunkschunks_lasts      r   _lowerzCumulativeAggregations._lower#   s[    $JJ		4;;0D0D
 vt{{3!K!9!94;O;O
 	
r   c                >    t        |t              rt        | ||      S y r   )
isinstancer	   r
   )r   parent
dependentss      r   _simplify_upz#CumulativeAggregations._simplify_up,   s     fj)*4DD *r   )__name__
__module____qualname___parameters	_defaultsr"   r   __annotations__r   r   	functoolscached_propertyr   r'   r,    r   r   r   r      sT    -KIO+//"&OZ&'    
Er   r   c                      e Zd Zg dZdddZdZej                  d        Zej                  d        Z	ej                  dd       Z
y)	r!   )r   r   r   	operationTN)r   r   c                .    | j                   j                  S r   r   r   s    r   r   zCumulativeBlockwise._meta6   r   r   c                $    | j                  d      S )Nr7   )operandr   s    r   r7   zCumulativeBlockwise.operation:   s    ||K((r   c                     | j                   d d S )N)operandsr   s    r   _argszCumulativeBlockwise._args>   s    }}Sb!!r   )returnlist)r-   r.   r/   r0   r1   _projection_passthroughr3   r4   r   r7   r>   r5   r   r   r!   r!   1   sc    :K.I"    ) ) " "r   r!   c                  *    e Zd ZddgZdZedd       Zy)r#   r   r   Tc                    |rJ| j                   dk(  r+| j                  s| j                         j                         ry | j	                         } | j                  d      j                         S )N   )n)ndimemptyisnaallffilltailsqueeze)ar   s     r   r7   zTakeLast.operationG   sK    vv{1668<<>	Avvv{""$$r   N)T)r-   r.   r/   r0   rA   staticmethodr7   r5   r   r   r#   r#   C   s$    H%K"% %r   r#   c                  F    e Zd Zg dZd Zej                  d        ZddZy)r$   )r   previous_partitions
aggregatorr   c                6    | j                   j                         S r   r   r   s    r   r   zCumulativeFinalize._divisionsS   r   r   c                .    | j                   j                  S r   r   r   s    r   r   zCumulativeFinalize._metaV   r   r   c                   i }| j                   | j                  }}|j                  df|| j                  df<   | j                  dz   }t        d| j                   j                        D ]  }|dk(  r|j                  |dz
  f|||f<   n8t
        | j                  ||dz
  f|j                  |dz
  f| j                  f|||f<   t        | j                  | j                   j                  |f||f| j                  f|| j                  |f<    |S )Nr   z-intermediaterD   )	r   rP   _namerangenpartitionscumulative_wrapper_intermediaterQ   r   cumulative_wrapper)r   dskr   rP   intermediate_nameis         r   _layerzCumulativeFinalize._layerZ   s    "%)ZZ1I1I" %Q/TZZO JJ8q$**001 	AAv/B/H/H!a%.P&*+ 4OO&A.(..A6((/&*+ #!!1%"A&$$$CQ 	& 
r   N)r?   dict)	r-   r.   r/   r0   r   r3   r4   r   r]   r5   r   r   r$   r$   P   s+    SK'    r   r$   c                h    t        |t        j                        rt        |      dk(  r|} | ||      S Nr   )r)   pdSerieslenfuncxyr   s       r   rY   rY   v   s+    !RYYCFaK1:r   c                    t        |t        j                        rt        |      dk(  r|}t	        j
                  | ||      S r`   )r)   ra   rb   rc   r   _cum_aggregate_applyrd   s       r   rX   rX   |   s4    !RYYCFaK''a33r   c                  L    e Zd Zej                  Z eej                        Z	dZ
y)CumSumr   N)r-   r.   r/   r   cumsumr"   rN   r   cumsum_aggregater   r   r5   r   r   rk   rk      s!    hhO&w'?'?@Or   rk   c                  L    e Zd Zej                  Z eej                        Z	dZ
y)CumProdrD   N)r-   r.   r/   r   cumprodr"   rN   r   cumprod_aggregater   r   r5   r   r   ro   ro      s!    iiO&w'@'@AOr   ro   c                  b    e Zd Zej                  Z eej                        Z	e
j                   Zy)CumMaxN)r-   r.   r/   r   cummaxr"   rN   r   cummax_aggregater   mathinfr   r5   r   r   rs   rs      s'    hhO&w'?'?@xxiOr   rs   c                  `    e Zd Zej                  Z eej                        Z	e
j                  Zy)CumMinN)r-   r.   r/   r   cumminr"   rN   r   cummin_aggregater   rv   rw   r   r5   r   r   ry   ry      s%    hhO&w'?'?@hhOr   ry   )
__future__r   r3   rv   collections.abcr   typingr   pandasra   dask.dataframer   dask.dataframe.dask_expr._exprr   r   r	   r
   
dask.utilsr   r   r!   r#   r$   rY   rX   rk   ro   rs   ry   r5   r   r   <module>r      s    "   $   "  ET E:") "$
%y 
%# #L4# $  #  # r   