o
    wia                     @  sV   d dl mZ d dlZd dlZd dlmZ d dlmZ 	 ddddZ	G dd deZ
dS )    )annotationsN)Base)expectdata
np.ndarrayshape	allowzerointreturnc                 C  sD   t |}|dkrt |dk}t | j| ||< t | |}|S )Nr   )npcopywherearrayr   reshape)r   r   r   	new_shapezeros_indexreshaped r   `/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/backend/test/case/node/reshape.py reshape_reference_implementation   s   
r   c                   @  s(   e Zd ZedddZedddZdS )	Reshaper
   Nonec                  C  s  g d} t jg dt jdt jg dt jdt jddgt jdt jg dt jdt jdgt jdt jg d	t jdt jg d
t jdt jg dt jdt jg dt jdd	}t j| t j}| D ]"\}}tj	j
dddgdgd}t||}t|||g|gd| d qed S )N)         )r   r   r   dtype)r   r   r   r      )r   r   r   r      )r   r   )r   r   r   r   )r   r   r      )r   r   r    r   )	reordered_all_dimsreordered_last_dimsreduced_dimsextended_dimsone_dimnegative_dimnegative_extended_dimszero_dimzero_and_negative_dimr   r   r   r   )inputsoutputstest_reshape_r*   r+   namer   r   int64randomrandom_sampleastypefloat32itemsonnxhelper	make_noder   r   original_shape
test_casesr   	test_namer   noder   r   r   r   export_reshape   s4   
zReshape.export_reshapec                  C  s   g d} dt jg dt jdi}t j| t j}| D ]%\}}tj	j
dddgdgd	d
}t||d	d}t|||g|gd| d qd S )N)r   r   r   allowzero_reordered)r   r   r   r   r   r   r   r   r    )r*   r+   r   )r   r,   r-   r/   r9   r   r   r   export_allowzero;   s&   zReshape.export_allowzeroN)r
   r   )__name__
__module____qualname__staticmethodr>   r@   r   r   r   r   r      s
    r   )r   )r   r   r   r   r   r	   r
   r   )
__future__r   numpyr   r6   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r   r   r   r   r   r   <module>   s   