U
    q±ËhY	  ã                   @  sn   d dl mZ d dlZd dlmZ dddddd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)ÚOpRunz
np.ndarrayznp.ndarray | None)ÚdataÚstartsÚendsÚaxesÚstepsÚreturnc           
   
   C  s”  t |tƒrt |¡}t |tƒr(t |¡}t |tƒr<t |¡}t |tƒrPt |¡}t|jƒdkrjt |g¡}t|jƒdkr„t |g¡}|d krÂ|d krªdd„ t||ƒD ƒ}ndd„ t|||ƒD ƒ}n€|d krdd„ | jD ƒ}t|||ƒD ]\}}}t||ƒ||< qèn>dd„ | jD ƒ}t||||ƒD ]\}}}}	t|||	ƒ||< q"z| t|ƒ W S  t	k
rŽ } zt	d|›d| j›d	ƒ|‚W 5 d }~X Y nX d S )
Nr   c                 S  s   g | ]\}}t ||ƒ‘qS © ©Úslice)Ú.0ÚsÚer
   r
   ú?/tmp/pip-unpacked-wheel-xnis5xre/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  s   g | ]}t d |ƒ‘qS ©r   r   ©r   Úar
   r
   r   r   %   s     c                 S  s   g | ]}t d |ƒ‘qS r   r   r   r
   r
   r   r   )   s     zUnable to extract slice z for shape Ú.)
Ú
isinstanceÚlistÚnpÚarrayÚlenÚshapeÚzipr   ÚtupleÚ	TypeError)
r   r   r   r   r   Zslicesr   r   r   r   r
   r
   r   Ú_slice   s>    








ÿþ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   r*   ;   s    zSlice_10.__init__N)r&   r'   r(   r*   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 k	rtt| |ƒƒdkrt| |d ƒ qd S )N)r   r   r   r   r   )r!   r*   ÚhasattrÚgetattrr   Úsetattr)r#   r+   r,   Úfr
   r
   r   r*   @   s    
 zSlice_1.__init__Nc                 C  s   t  | ||||¡S r"   )r!   r%   )r#   r   r   r   r   r
   r
   r   r%   H   s    zSlice_1._run)NNN)r&   r'   r(   r*   r%   r
   r
   r
   r   r-   ?   s   r-   )NN)
Ú
__future__r   Znumpyr   Zonnx.reference.ops._opr   r    r!   r)   r-   r
   r
   r
   r   Ú<module>   s     û)