o
    toi                     @  sr   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 G dd dej
Zedkr7ejdd dS dS )	    )annotationsN)helpernumpy_helperc                   @  s  e Zd ZdTddZdTddZdUd	d
ZdUddZdUddZdUddZdUddZ	dUddZ
dUddZdUddZdUddZdUddZdUddZdUdd Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* ZdVdWd0d1Zejd2ejjfd3ejjfd4ejjfd5ejjfd6ejjfd7ejj fd8ejj!fd9ejj"fd:ejj#fd;ejj$fd<ejj%fd=ejj&fd>ejj'fd?ejj(fd@ejj)fdAejj*fdBejj+fdCejj,fdDejj-fdEejj.fdFejj/fdGejj0fdHejj1fdIejj2fdJejj3fgdXdOdPZ4dQdR Z5dSS )YTestNumpyHelperdtype	np.numberreturnNonec                 C  sJ   t jdd|}t|d}| |jd t|}t j	
|| d S )N   %   test)nprandomrandastyper   
from_arrayassertEqualnameto_arraytestingassert_equalselfr   a
tensor_def	a_recover r   O/home/ubuntu/.local/lib/python3.10/site-packages/onnx/test/numpy_helper_test.py_test_numpy_helper_float_type   
   
z-TestNumpyHelper._test_numpy_helper_float_typec                 C  sZ   t jjt |jt |j|dd}t|d}| |j	d t
|}t j|| d S )Nr
   r   )r   sizer   )r   r   randintiinfominmaxr   r   r   r   r   r   r   r   r   r   r   _test_numpy_helper_int_type   s   
z+TestNumpyHelper._test_numpy_helper_int_typec                 C     |  tj d S Nr   r   float32r   r   r   r   
test_float!      zTestNumpyHelper.test_floatc                 C  r'   r(   )r&   r   uint8r+   r   r   r   
test_uint8$   r-   zTestNumpyHelper.test_uint8c                 C  r'   r(   )r&   r   int8r+   r   r   r   	test_int8'   r-   zTestNumpyHelper.test_int8c                 C  r'   r(   )r&   r   uint16r+   r   r   r   test_uint16*   r-   zTestNumpyHelper.test_uint16c                 C  r'   r(   )r&   r   int16r+   r   r   r   
test_int16-   r-   zTestNumpyHelper.test_int16c                 C  r'   r(   )r&   r   int32r+   r   r   r   
test_int320   r-   zTestNumpyHelper.test_int32c                 C  r'   r(   )r&   r   int64r+   r   r   r   
test_int643   r-   zTestNumpyHelper.test_int64c                 C  sJ   t g dt}t|d}| |jd t|}t j	
|| d S )N)AmyBillyCindyDavidr   )r   arrayr   objectr   r   r   r   r   r   r   r   r   r   r   r   r   r   test_string6   r   zTestNumpyHelper.test_stringc                 C  sL   t jjdddt}t|d}| |jd t	|}t j
|| d S )N   r    )r!   r   )r   r   r"   r   boolr   r   r   r   r   r   r   r@   r   r   r   	test_bool=   s
   
zTestNumpyHelper.test_boolc                 C  r'   r(   r)   r+   r   r   r   test_float16D   r-   zTestNumpyHelper.test_float16c                 C  r'   r(   )r   r   	complex64r+   r   r   r   test_complex64G   r-   zTestNumpyHelper.test_complex64c                 C  r'   r(   )r   r   
complex128r+   r   r   r   test_complex128J   r-   zTestNumpyHelper.test_complex128c                 C  sn   t tdtdd}| |tj | t |j	j
d td | t |j	j
d td d S )N皙??r      r   rM   r   	from_dictr   r>   assertIsInstanceonnxMapProtor   r   valuestensor_valuesr   	map_protor   r   r   ,test_from_dict_values_are_np_arrays_of_floatM      z<TestNumpyHelper.test_from_dict_values_are_np_arrays_of_floatc                 C  sn   t tdtdd}| |tj | t |j	j
d td | t |j	j
d td d S )NrM   	   rL   r   rN   rU   r   r   r   *test_from_dict_values_are_np_arrays_of_intW   rX   z:TestNumpyHelper.test_from_dict_values_are_np_arrays_of_intc                 C  s   t ddg}t ddg}t||d}| |tj t|jj	d }| 
|d |d  | 
|d |d  t|jj	d }| 
|d |d  | 
|d |d  d S )NrM   rB   rY   
   rL   r   )r   r>   r   rO   rP   rQ   rR   r   rS   rT   r   )r   
zero_array	one_arrayrV   
out_tensorr   r   r   +test_from_dict_values_are_np_arrays_of_intsa   s   z;TestNumpyHelper.test_from_dict_values_are_np_arrays_of_intsc                 C  L   |  t ttdtdd W d    d S 1 sw   Y  d S )NrJ   rK   )r   g?assertRaises	TypeErrorr   rO   r   r>   r+   r   r   r   "test_from_dict_differing_key_typeso      "z2TestNumpyHelper.test_from_dict_differing_key_typesc                 C  r`   )NrM   rK   rL   ra   r+   r   r   r   $test_from_dict_differing_value_typest   re   z4TestNumpyHelper.test_from_dict_differing_value_typesTvalueintcheck_dtyperC   c           	      C  s  t t t jddgdg|dgdt dtjjdggt d|dgg}tj	|}dtjj
|v rE|d dtjg dtjd	i}n|d dtjg d
tjd	i}tj|d dd}| |j| t|}| |d j|j |r| |d j|j tj|dd}| |j|j | |j|j | t|jt|j | t|jt|j | |j|j | t|jt|j | | |  | |jt |j d S )NCastXY)tor      UINT)r   rM   rB      )r   )r   rM   rp   r   check)r   )r   
make_model
make_graph	make_nodemake_tensor_value_inforQ   TensorProtoFLOAT	referenceReferenceEvaluatorDataTypeNamerunr   r>   r*   r   r   r   	data_typer   shaper   r   lenraw_datalisttupledimsSerializeToStringnp_dtype_to_tensor_dtype)	r   rg   ri   
onnx_modelrefstarttpbackagainr   r   r   _to_array_from_arrayy   s6   " 
z$TestNumpyHelper._to_array_from_arrayrx   UINT8INT8UINT16INT16INT32INT64BOOLFLOAT16DOUBLEUINT32UINT64	COMPLEX64
COMPLEX128BFLOAT16FLOAT8E4M3FNFLOAT8E4M3FNUZ
FLOAT8E5M2FLOAT8E5M2FNUZ
FLOAT8E8M0UINT4INT4UINT2INT2
FLOAT4E2M1_strr~   onnx.TensorProto.DataTypec                 C  s   |  | d S r(   )r   )r   r   r~   r   r   r   test_to_array_from_array   s   z(TestNumpyHelper.test_to_array_from_arrayc                 C  s   |  tjjd d S )NF)r   rQ   rw   STRINGr+   r   r   r   test_to_array_from_array_string   s   z/TestNumpyHelper.test_to_array_from_array_stringN)r   r   r   r	   )r   r	   )T)rg   rh   ri   rC   )r   r   r~   r   )6__name__
__module____qualname__r   r&   r,   r/   r1   r3   r5   r7   r9   rA   rD   rE   rG   rI   rW   rZ   r_   rd   rf   r   parameterizedexpandrQ   rw   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sf    


	





































r   __main__rB   )	verbosity)
__future__r   unittestnumpyr   r   rQ   onnx.referencer   r   TestCaser   r   mainr   r   r   r   <module>   s    ,