o
    toi                     @  sD   d dl mZ d dlmZ d dlmZ erd dlZG dd deZdS )    )annotations)TYPE_CHECKING)OpRunNc                   @  s(   e Zd Zdd	d
Z			ddddZdS )SplitToSequencemat
np.ndarraysplitnp.ndarray | Noneaxisintreturnlist[np.ndarray]c                 C  s   |d u rdd t |j| D }n/t|jdkr<|j| }t|}|t| }|g| }|||  }|dkr;|| nt|}dd |jD }	g }
d}|D ]}t||| |	|< ||7 }|
|t|	  qN|
S )Nc                 S  s   g | ]}d qS )    ).0_r   r   [/home/ubuntu/.local/lib/python3.10/site-packages/onnx/reference/ops/op_split_to_sequence.py
<listcomp>   s    z.SplitToSequence.common_run.<locals>.<listcomp>r   c                 S  s   g | ]}t d |qS )r   )slice)r   sr   r   r   r       s    )rangeshapelenr   appendlistr   tuple)selfr   r   r
   split_lengthdimlengthnleftslirespossplr   r   r   
common_run   s(   


zSplitToSequence.common_runNr   r   keepdimstuple[np.ndarray]c           	      C  sV   | j |||d}|d u r(|s(t|D ]\}}t|j}||= |t|||< q|fS )N)r
   )r&   	enumerater   r   reshaper   )	r   r   r   r
   r'   r#   ires_ir   r   r   r   _run)   s   
zSplitToSequence._run)r   r   r   r	   r
   r   r   r   )Nr   r   )
r   r   r   r	   r
   r   r'   r   r   r(   )__name__
__module____qualname__r&   r-   r   r   r   r   r      s    
r   )	
__future__r   typingr   onnx.reference.op_runr   numpynpr   r   r   r   r   <module>   s   