U
    qh$                     @  sn   d dl mZ d dlZd dlmZ dddZG dd deZG d	d
 d
eZG dd deZ	G dd deZ
dS )    )annotationsN)OpRun        c                   s   | j  |d krtt }n fdd|D }t|}|d t|krNtddg  }t|D ](\}}|| }	|||  }
|	|
f||< q`|dkrtj| |||d| j	S tj| ||d| j	S )	Nc                   s    g | ]}|d kr|n|  qS )r    ).0axisZ
input_rankr   =/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/op_pad.py
<listcomp>   s     z_pad_impl.<locals>.<listcomp>   zGThe number of elements in raw_pads should be 2 times the number of axes)r   r   Zconstant)	pad_widthmodeconstant_values)r   r   )
ndimlistrangelenRuntimeError	enumeratenppadZastypeZdtype)dataZraw_padsr   r   axesZnum_axesr   ir   Z	pad_beginZpad_endr   r   r	   	_pad_impl   s0    
   r   c                   @  s   e Zd ZdddZdS )Pad_1Nc                 C  s   |d krd}t ||||dfS Nr   )r   r   r   )selfr   Zpaddingsr   valuer   r   r	   _run%   s    z
Pad_1._run)NNN__name__
__module____qualname__r    r   r   r   r	   r   $   s   r   c                   @  s   e Zd ZdddZdS )Pad_2Nc                 C  s   |d krd}t ||||dfS r   r   )r   r   padsr   r   r   r   r	   r    ,   s    z
Pad_2._run)NNNr!   r   r   r   r	   r%   +   s   r%   c                   @  s   e Zd ZdddZdS )Pad_11Nc                 C  s    |d krd}t ||||d dfS Nr   )r   r   r   r   )r   r   r&   constant_valuer   r   r   r	   r    3   s    zPad_11._run)NNr!   r   r   r   r	   r'   2   s   r'   c                   @  s   e Zd ZdddZdS )Pad_18Nc                 C  s    |d krd}t |||||dfS r(   r   )r   r   r&   r)   r   r   r   r   r	   r    <   s    zPad_18._run)NNNr!   r   r   r   r	   r*   ;   s   r*   )r   N)
__future__r   Znumpyr   Zonnx.reference.op_runr   r   r   r%   r'   r*   r   r   r   r	   <module>   s   
	