o
    toi                     @  s4   d dl mZ d dlZd dlmZ G dd deZdS )    )annotationsN)OpRunc                   @  s   e Zd ZdddZdS )CumSumNc           	      C  s<  t |tjtjfs5t|jdkst|jdkr*|jd dkr*td| d|j dt|jdkr5|d }|rMdd |jD }td d d||< |t| }|rd	d |jD }d
d |jD }tdd||< td|j| ||< tj	|j|j
d}tj|t| ||t| d n	tj|||j
d}|r|t| }|fS )N   r   z(axis must be an array of one number not z (shape z).c                 S     g | ]}t d |qS r   slice.0s r   Q/home/ubuntu/.local/lib/python3.10/site-packages/onnx/reference/ops/op_cum_sum.py
<listcomp>       zCumSum._run.<locals>.<listcomp>c                 S  r   r   r   r
   r   r   r   r      r   c                 S  r   r   r   r
   r   r   r   r      r   )dtype)axisout)r   r   )
isinstancenpint32int64lenshapeRuntimeErrorr	   tuplezerosr   cumsum)	selfxr   	exclusivereverserev_indices	indices_c	indices_dresr   r   r   _run   s,   *"zCumSum._run)NN)__name__
__module____qualname__r'   r   r   r   r   r      s    r   )
__future__r   numpyr   onnx.reference.op_runr   r   r   r   r   r   <module>   s   