o
    wiY	                     @  sd   d dl mZ d dlZd dlmZ 		ddddZG dd deZG dd deZG dd deZ	dS )    )annotationsN)OpRundata
np.ndarraystartsendsaxesnp.ndarray | Nonestepsreturnc           
   
   C  s  t |tr
t|}t |trt|}t |trt|}t |tr(t|}t|jdkr5t|g}t|jdkrBt|g}|d u ra|d u rUdd t||D }nJdd t|||D }n>|d u rdd | jD }t|||D ]\}}}t||||< qsndd | jD }t||||D ]\}}}}	t|||	||< qz| t| W S  t	y } zt	d|d| jd	|d }~ww )
Nr   c                 S  s   g | ]	\}}t ||qS  slice).0ser   r   X/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/reference/ops/op_slice.py
<listcomp>    s    z_slice.<locals>.<listcomp>c                 S  s   g | ]\}}}t |||qS r   r   )r   r   r   dr   r   r   r   "   s    c                 S     g | ]}t d |qS r   r   r   ar   r   r   r   %       c                 S  r   r   r   r   r   r   r   r   )   r   zUnable to extract slice z for shape .)

isinstancelistnparraylenshapezipr   tuple	TypeError)
r   r   r   r   r
   slicesr   r   r   r   r   r   r   _slice   sD   







r%   c                   @  s   e Zd ZdddZdS )SliceCommonNc                 C  s   t |||||}|fS N)r%   )selfr   r   r   r   r
   resr   r   r   _run5   s   zSliceCommon._runNN)__name__
__module____qualname__r*   r   r   r   r   r&   4   s    r&   c                   @  s   e Zd Zdd ZdS )Slice_10c                 C  s   t | || d S r'   )r&   __init__)r(   	onnx_node
run_paramsr   r   r   r0   ;      zSlice_10.__init__N)r,   r-   r.   r0   r   r   r   r   r/   :   s    r/   c                   @  s   e Zd Zdd ZdddZdS )Slice_1c                 C  sT   t | || dD ]}t| |sq	t| |d ur'tt| |dkr't| |d  q	d S )N)r   r   r
   r   r   )r&   r0   hasattrgetattrr   setattr)r(   r1   r2   fr   r   r   r0   @   s   
 zSlice_1.__init__Nc                 C  s   t | ||||S r'   )r&   r*   )r(   r   r   r   r   r   r   r   r*   H   r3   zSlice_1._run)NNN)r,   r-   r.   r0   r*   r   r   r   r   r4   ?   s    r4   r+   )r   r   r   r   r   r   r   r	   r
   r	   r   r   )

__future__r   numpyr   onnx.reference.ops._opr   r%   r&   r/   r4   r   r   r   r   <module>   s   )