o
    r::jK7                     @  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doddZdoddZdpd	d
ZdpddZdpddZdpddZdpddZ	dpddZ
dpddZdpddZdpddZdpddZdpddZdpdd Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zdqdrd0d1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dsdOdPZ4dQdR Z5dpdSdTZ6dpdUdVZ7dpdWdXZ8dpdYdZZ9dpd[d\Z:dpd]d^Z;dpd_d`Z<ejdaejj/fdbejj0fdcejj3fgdtdddeZ=ejdaejj/fdbejj0fdcejj3fgdtdfdgZ>ejdhejj1fdiejj2fgdtdjdkZ?ejdhejj1fdiejj2fgdtdldmZ@dnS )u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   b/home/nk/hobo-godmode/plappi-mvp/.venv/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_arrayry   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   rx   STRINGr+   r   r   r   test_to_array_from_array_string   s   z/TestNumpyHelper.test_to_array_from_array_stringc                 C  s   t jg dt jd}t jtj|ddt jg d t jtj|ddt jg d t jtj|ddt jg d	 | 	t
 tjt jd
gt jddd W d    d S 1 s_w   Y  d S )N)      ?g      ?g      ?g      ?      ?g      ?rq   up)
round_mode)      r   r   r   r   down)r   r   r   r   r   r   nearest)r   r   r   r   r   r   r   bogus)r   r>   r*   r   assert_array_equalr   to_float8e8m0viewr.   rb   
ValueError)r   xr   r   r   test_to_float8e8m0_round_modes   s$   "z.TestNumpyHelper.test_to_float8e8m0_round_modesc              	   C  s   t jt jt jt j gt jd}dD ]$}dD ]}tj|||d}t jj|	t j
g dd| d| d qqt jd	gt jd}| tj|d
dd	t j
d d | tj|ddd	t j
d d d S )Nrq   )r   r   r   )TF)saturater   )   r   r   zmode=z, saturate=)err_msgg      GTr   r      Fr   )r   r>   naninfr*   r   r   r   r   r   r.   r   )r   specialmoder   outnear_maxr   r   r   !test_to_float8e8m0_extreme_values   s:   
z1TestNumpyHelper.test_to_float8e8m0_extreme_valuesc                 C  sZ   t jdgtd}| t}t| W d    n1 sw   Y  | dt|j	 d S )N*   rq   rh   )
r   r>   r?   rb   NotImplementedErrorr   r   assertInr   	exception)r   r   cmr   r   r   #test_from_array_object_invalid_type   s
   z3TestNumpyHelper.test_from_array_object_invalid_typec                 C  sD   t jg tjjd}| |jtjj t g }| |jtjj d S )Nrq   )r   	from_listrQ   SequenceProtoMAPr   	elem_typeTENSOR)r   seqseq2r   r   r   test_from_list_explicit_dtype   s   
z-TestNumpyHelper.test_from_list_explicit_dtypec                 C  sr   t tdtdd}|jd | t}t | W d    n1 s)w   Y  | 	dt
|j d S )Nr   g       @)rM   rB   rp   znot the same)r   rO   r   r>   keysappendrb   
IndexErrorto_dictr   r   r   )r   mr   r   r   r   test_to_dict_mismatched_lengths  s   z/TestNumpyHelper.test_to_dict_mismatched_lengthsc                 C  s:   |  t ti  W d    d S 1 sw   Y  d S r(   )rb   r   r   rO   r+   r   r   r   test_from_dict_empty  s   "z$TestNumpyHelper.test_from_dict_emptyc                 C  s\   |  t}ttdtdd W d    n1 sw   Y  | dt|j d S )NrM   rB   )r   g      @zUnsupported map key type)	rb   rc   r   rO   r   r>   r   r   r   )r   r   r   r   r   #test_from_dict_unsupported_key_type  s   z3TestNumpyHelper.test_from_dict_unsupported_key_typeuint4int4
float4e2m1c                 C  `   t  }||_|jdg d|_| jtdd t	| W d    d S 1 s)w   Y  d S N      #payload too small for declared dimsmsg
rQ   rx   r   r   extendr   rb   r   r   r   r   r   r   tensorr   r   r   -test_to_array_4bit_payload_too_small_raw_data  s   
"z=TestNumpyHelper.test_to_array_4bit_payload_too_small_raw_datac                 C  f   t  }||_|jdg |jd | jtdd t	
| W d    d S 1 s,w   Y  d S Nr   r   r   r   rQ   rx   r   r   r   
int32_datar   rb   r   r   r   r   r   r   r   /test_to_array_4bit_payload_too_small_int32_data%  s   
"z?TestNumpyHelper.test_to_array_4bit_payload_too_small_int32_datauint2int2c                 C  r   r   r   r   r   r   r   -test_to_array_2bit_payload_too_small_raw_data6  s   	"z=TestNumpyHelper.test_to_array_2bit_payload_too_small_raw_datac                 C  r   r   r   r   r   r   r   /test_to_array_2bit_payload_too_small_int32_dataF  s   	"z?TestNumpyHelper.test_to_array_2bit_payload_too_small_int32_dataN)r   r   r   r	   )r   r	   )T)rg   rh   ri   rC   )r   r   r   r   )r   r   r   rh   r   r	   )A__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   rx   ry   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   r   r   r   r   r   r   r   r   r   r   r      s    


	

























































r   __main__rB   )	verbosity)
__future__r   unittestnumpyr   r   rQ   onnx.referencer   r   TestCaser   r   mainr   r   r   r   <module>   s     I