U
    qhj                     @  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                   @  s   e Zd ZdddZdS )CenterCropPadNc                   sx  |p| j }t|j |d kr*tt }n fdd|D }dd |jD }dd |jD }t|j}t||D ]\}}|j| }	||krqp||	k r|||< |	| }
|
d dkr|
d }
t|
|	|
 }n|
d }
t|
|	|
 d }|||< qp|||< ||	 }
|
d dkr"|
d }
t|
||
 }n|
d }
t|
||
 d }|||< qptjt	||j
d}|t	| }||t	|< |fS )	Nc                   s    g | ]}|d kr|n|  qS r    ).0ZaxisZ
input_rankr   I/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/op_center_crop_pad.py
<listcomp>   s     z&CenterCropPad._run.<locals>.<listcomp>c                 S  s   g | ]}t d |qS r   slicer   sr   r   r	   r
      s     c                 S  s   g | ]}t d |qS r   r   r   r   r   r	   r
      s        r      )dtype)axeslenshapelistrangezipr   npzerostupler   )selfZ
input_datar   r   Z
pad_slicesZcrop_slicesZ	new_shapeashZdimdslresZcroppedr   r   r	   _run   sB    





zCenterCropPad._run)N)__name__
__module____qualname__r!   r   r   r   r	   r      s   r   )
__future__r   Znumpyr   Zonnx.reference.op_runr   r   r   r   r   r	   <module>   s   