U
    qh                     @  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                   @  s8   e Zd ZdddddddZdddddddddZdS )SplitToSequencez
np.ndarrayznp.ndarray | Noneintzlist[np.ndarray])matsplitaxisreturnc                 C  s   |d kr"dd t |j| D }n^t|jdkrx|j| }t|}|t| }|g| }|||  }|dkr|| nt|}dd |jD }	g }
d}|D ]0}t||| |	|< ||7 }|
|t|	  q|
S )Nc                 S  s   g | ]}d qS )    ).0_r   r   K/tmp/pip-unpacked-wheel-xnis5xre/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   Zsplit_lengthZdimlengthnleftZsliresposZsplr   r   r   
common_run   s&    

zSplitToSequence.common_runNr   r
   ztuple[np.ndarray])r   r   r   keepdimsr	   c                 C  s^   | j |||d}|d krX|sXtt|D ].}t|| j}||= || t|||< q(|fS )N)r   )r   r   r   r   r   Zreshaper   )r   r   r   r   r   r   ir   r   r   r   _run&   s    zSplitToSequence._run)Nr   r
   )__name__
__module____qualname__r   r!   r   r   r   r   r      s
      r   )
__future__r   ZnumpynpZonnx.reference.op_runr   r   r   r   r   r   <module>   s   