o
    toi_	                     @  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 re|d u rWdd t||ddD }nPdd t|||ddD }nB|d u rdd | jD }t|||ddD ]\}}}t||||< qyn dd | jD }t||||dd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   O/home/ubuntu/.local/lib/python3.10/site-packages/onnx/reference/ops/op_slice.py
<listcomp>    s    z_slice.<locals>.<listcomp>F)strictc                 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   sH   







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   _run7   s   zSliceCommon._runNN)__name__
__module____qualname__r+   r   r   r   r   r'   6   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   r1   =      zSlice_10.__init__N)r-   r.   r/   r1   r   r   r   r   r0   <   s    r0   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'   r1   hasattrgetattrr    setattr)r)   r2   r3   fr   r   r   r1   B   s   
 zSlice_1.__init__Nc                 C  s   t | ||||S r(   )r'   r+   )r)   r   r   r   r   r   r   r   r+   J   r4   zSlice_1._run)NNN)r-   r.   r/   r1   r+   r   r   r   r   r5   A   s    r5   r,   )r   r   r   r   r   r   r   r	   r
   r	   r   r   )

__future__r   numpyr   onnx.reference.ops._opr   r&   r'   r0   r5   r   r   r   r   <module>   s   +