o
    wi                     @  s  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z
d dlmZ d dlZd dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZ d(d	d
ZG dd dejZG dd dejZG dd dejZ G dd dejZ!G dd dejZ"ej#j$ddd e% D dd dd)ddZ&ej#j$ddd e% D d d dd)d!d"Z'G d#d$ d$ejZ(G d%d& d&ejZ)e*d'kre+  e+e,g dS dS )*    )annotationsN)Any)AttributeProto
GraphProto
ModelProtoOptionalProtoSequenceProtoTensorProto	TypeProto_custom_element_typescheckerdefshelpernumpy_helperarray
np.ndarrayreturnnpt.NDArray[np.uint8]c                 C  sx   |   tj }| j}|d dk}|r|j|d gdd |dM }|ddd  dK  < |ddd |ddd B S )	z[Convert a numpy array to flatten, packed int4/uint4. Elements must be in the correct range.      F)refcheck   N   r   )ravelviewnpuint8copysizeresize)r   
array_flatr   	odd_sized r"   R/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/test/helper_test.py
_pack_4bit"   s   r$   c                   @  s   e Zd Zd&ddZd&ddZd&ddZd&d	d
Zd&ddZd&ddZd&ddZ	d&ddZ
d&ddZd&ddZd&ddZd&ddZd&ddZd&ddZd&dd Zd&d!d"Zd&d#d$Zd%S )'TestHelperAttributeFunctionsr   Nonec                 C  sh   t dd}| |jd | |jd t| t dd}| |jd | |jd t| d S )Nfloat      ?g    _B)r   make_attributeassertEqualnamefr   check_attributeselfattrr"   r"   r#   test_attr_float0   s   
z,TestHelperAttributeFunctions.test_attr_floatc                 C  s   t dd}| |jd | |jd t| t dd}| |jd | |jd t| t dd}| |jd | |jd t| t dd}| |jd | |jd t| d S )Nint      i  i  )r   r)   r*   r+   ir   r-   r.   r"   r"   r#   test_attr_int<   s    


z*TestHelperAttributeFunctions.test_attr_intc                 C  sV   t dd}| |jd | |jd t ddd}| |jd | |jd d S )Navalue doc)r   r)   r*   r+   
doc_stringr.   r"   r"   r#   test_attr_doc_stringR   s   z1TestHelperAttributeFunctions.test_attr_doc_stringc                 C  s   t dd}| |jd | |jd t| t dd}| |jd | |jd t| t dd}| |jd | |jd t| t dd}| |jd | t |d t| d S )Nstrs   testtestr9       )r   r)   r*   r+   sr   r-   get_attribute_valuer.   r"   r"   r#   test_attr_stringZ   s    


z-TestHelperAttributeFunctions.test_attr_stringc                 C  B   t dddg}| |jd | t|jddg t| d S )Nfloatsr(          @r   r)   r*   r+   listrD   r   r-   r.   r"   r"   r#   test_attr_repeated_floatp      z5TestHelperAttributeFunctions.test_attr_repeated_floatc                 C  rC   )Nintsr   r   )r   r)   r*   r+   rG   rJ   r   r-   r.   r"   r"   r#   test_attr_repeated_intv   rI   z3TestHelperAttributeFunctions.test_attr_repeated_intc                 C  sB   t dg d}| |jd | t|jg d t| d S )Nmixed)r   r         @      @)r(   rE   rM   rN   rF   r.   r"   r"   r#   (test_attr_repeated_mixed_floats_and_ints|   rI   zETestHelperAttributeFunctions.test_attr_repeated_mixed_floats_and_intsc                 C  sB   t dddg}| |jd | t|jddg t| d S )Nstringsstr1str2s   str1s   str2)r   r)   r*   r+   rG   rP   r   r-   r.   r"   r"   r#   test_attr_repeated_str   rI   z3TestHelperAttributeFunctions.test_attr_repeated_strc                 C  sn   t jdtjdtddt jdtjdtddg}t d|}| |jd | t	|j
| t| d S )Nr7   r   r   r+   	data_typedimsvalsbtensors)r   make_tensorr	   FLOATr   onesr)   r*   r+   rG   rZ   r   r-   )r/   rZ   r0   r"   r"   r#   test_attr_repeated_tensor_proto   s   z<TestHelperAttributeFunctions.test_attr_repeated_tensor_protoc                 C  s   ddg}g d}t jdtjt|gt|tjdd}g d}t jdtj	t|gt|tj
dd}t |||}t d|}| |jd tt | t| d S )	Nr3   g    9?g    -?g   `Q?sparse_valuesFr+   rV   rW   rX   rawr   r3   r4   indicessparse_attr)r   r[   r	   r\   lenr   r   astypefloat32INT64int64make_sparse_tensorr)   r*   r+   r   check_sparse_tensorrA   r-   )r/   dense_shaper`   values_tensorlinear_indicesindices_tensorsparse_tensorr0   r"   r"   r#   test_attr_sparse_tensor_proto   s0   z:TestHelperAttributeFunctions.test_attr_sparse_tensor_protoc           
      C  s   ddg}g d}t jdtjt|gt|tjdd}g d}t jdtj	t|gt|tj
dd}t |||}||g}t d|}| |jd t| t |D ]}	t|	 qXd S )	Nr3   r_   r`   Fra   rc   rd   sparse_attrs)r   r[   r	   r\   rf   r   r   rg   rh   ri   rj   rk   r)   r*   r+   r   r-   rA   rl   )
r/   rm   r`   rn   ro   rp   rq   repeated_sparser0   r@   r"   r"   r#   'test_attr_sparse_tensor_repeated_protos   s6   
zDTestHelperAttributeFunctions.test_attr_sparse_tensor_repeated_protosc                 C  sZ   t  t  g}d|d _d|d _td|}| |jd | t|j| t| d S )Nr7   r   rY   r   graphs)	r   r+   r   r)   r*   rG   rv   r   r-   )r/   rv   r0   r"   r"   r#   test_attr_repeated_graph_proto   s   

z;TestHelperAttributeFunctions.test_attr_repeated_graph_protoc                 C  s   t  }td|}| |jd | |j| | |jtj t  t  g}td|}| |jd | t	|j
| | |jtj d S )N
type_prototype_protos)r
   r   r)   r*   r+   tptyper   
TYPE_PROTOrG   ry   TYPE_PROTOS)r/   rx   r0   typesr"   r"   r#   test_attr_type_proto   s   z1TestHelperAttributeFunctions.test_attr_type_protoc                 C  sJ   t jdg tjd}| |jtj | t|jd | t	t jdg  d S )Nempty	attr_typer   )
r   r)   r   STRINGSr*   r{   rf   rP   assertRaises
ValueErrorr.   r"   r"   r#   test_attr_empty_list   s   z1TestHelperAttributeFunctions.test_attr_empty_listc                 C  sD   |  td tjddtjd W d    d S 1 sw   Y  d S )NzInferred attribute type 'FLOAT'r>   g@r   )assertRaisesRegex	TypeErrorr   r)   r   STRINGr/   r"   r"   r#   test_attr_mismatch   s   "z/TestHelperAttributeFunctions.test_attr_mismatchc                 C  sd   t  }| tjtj| t  }d|_| tjtj| t  }d|_d|_d|_| tjtj| d S )Nr>   r(   r   )r   r   r   ValidationErrorr-   r+   r,   r5   r.   r"   r"   r#   test_is_attr_legal   s   z/TestHelperAttributeFunctions.test_is_attr_legalc                   s   dddddd fddfddfdd fdd fdd fddg}t dD ]}t }d|_t|| t| q.t dD ]}t }d|_t|dD ]}|| qU| tj	tj| qGd S )Nr0   r   type_AttributeProto.AttributeTypevarr=   r8   r   r   r&   c                 S  s   t | || || _d S N)setattrr{   r0   r   r   r8   r"   r"   r#   _set  s   
zETestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>._set	list[Any]c                 S  s   | | || _d S r   )extendr{   r   r"   r"   r#   _extend  s   

zHTestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>._extendc                       | t jddS )Nr,   r(   )r   r\   r0   r   r"   r#   <lambda>      zITestHelperAttributeFunctions.test_is_attr_legal_verbose.<locals>.<lambda>c                   r   )Nr5   r   )r   INTr   r   r"   r#   r     r   c                   r   )Nr@   s   str)r   r   r   r   r"   r#   r     r   c                       | t j| jddgS )Nr(   rE   )r   FLOATSrD   r   r   r"   r#   r         c                   r   )Nr   r   )r   INTSrJ   r   r   r"   r#   r         c                   r   )N   a   b)r   r   rP   r   r   r"   r#   r     r   d   r>   r   )
r0   r   r   r   r   r=   r8   r   r   r&   )
r0   r   r   r   r   r   r8   r   r   r&   )
ranger   r+   randomchoicer   r-   sampler   r   )r/   SET_ATTR_ir0   funcr"   )r   r   r#   test_is_attr_legal_verbose  s*   

	







z7TestHelperAttributeFunctions.test_is_attr_legal_verboseNr   r&   )__name__
__module____qualname__r1   r6   r<   rB   rH   rK   rO   rS   r^   rr   ru   rw   r   r   r   r   r   r"   r"   r"   r#   r%   /   s$    












	


r%   c                   @  sp   e Zd ZdddZdddZdddZdd	d
ZdddZdddZdddZ	dddZ
dddZdddZdS )TestHelperNodeFunctionsr   r&   c                 C  sn   |  td tjddgdgdd}| |jd | |jd | t|j	dg | t|j
dg d S )NReluXYr>   r+   )
assertTruer   hasr   	make_noder*   op_typer+   rG   inputoutputr/   node_defr"   r"   r#   test_node_no_arg4  s   z(TestHelperNodeFunctions.test_node_no_argc                 C  s*   t jddgdgddd}| |jd d S )Nr   r   r   r>   r:   )r+   r;   )r   r   r*   r;   r   r"   r"   r#   r<   <  s   z,TestHelperNodeFunctions.test_attr_doc_stringc                 C  s   |  td tjddgdgdd}| |jd | t|jdg | t|j	dg | t
|jd | |jd tdd d S )Nr   r   r   r   )	arg_valuer   r   )r   r   r   r   r   r*   r   rG   r   r   rf   	attributer)   r   r"   r"   r#   test_node_with_arg@  s   z*TestHelperNodeFunctions.test_node_with_argc                 C  s,   t jddgdgdddd}| |jd d S )Nr   r   r   r>   r:   ztest.domain)r+   r;   domain)r   r   r*   r   r   r"   r"   r#   test_node_domainK  s   z(TestHelperNodeFunctions.test_node_domainc              
   C  s   t ddgdg}t dddgdg}t dtjddgg}t j||gdt dtjddggt dtjddggd |d	}| |jd | t|j	d | |j	d
 | | |j	d | | |j
d | |jd
 |d
  d S )Nr   r   r   AddZr   r   r>   r;   
value_infor   r9   )r   r   make_tensor_value_infor	   r\   
make_graphr*   r+   rf   noder;   r   )r/   	node_def1	node_def2r   graphr"   r"   r#   
test_graphQ  s"   z"TestHelperNodeFunctions.test_graphc                 C  s4   t g dg g d d}| |jd | |jd d S )Nmy graphzmy docs)r   r   r*   r+   r;   )r/   r   r"   r"   r#   test_graph_docstringd  s   z,TestHelperNodeFunctions.test_graph_docstringc                 C  s|   t ddgdg}t |gdt dtjddggt dtjddgg}| jtt j|dd t j|dd}| 	|j
d d S )	Nr   r   r   r>   r   r   )xxx)producer_name)r   r   r   r   r	   r\   r   AttributeError
make_modelr*   r   )r/   r   	graph_def	model_defr"   r"   r#   
test_modeli  s   z"TestHelperNodeFunctions.test_modelc                 C  s@   t g dg g }t j|dd}| t|d | |jd d S )Nr   r>   r;   r+   )r   r   r   assertFalsehasattrr*   r;   )r/   r   r   r"   r"   r#   test_model_docstringu  s   z,TestHelperNodeFunctions.test_model_docstringc                 C  s   t g dg g }t j|dd}t |ddd t| t |ddd t| |j }d|_d|_	| 
tjtj| d S )Nr   r>   r   z
test;graph)TitleKeywordsr   Other)r   r   r   set_model_propsr   check_modelmetadata_propsaddkeyr8   r   r   )r/   r   r   duper"   r"   r#   test_model_metadata_props}  s   




z1TestHelperNodeFunctions.test_model_metadata_propsc                   s8  d*dd d+ fd
d}|dgd |dgd |dgd |dgd |dgd |dgd |dgd |dgd |dgd |dgd |dgd |dgd |dgd |d gd |d!gd" |d#gd |d$gd |d%gd |d&gd |d'gd |d(gd |dd$gd  t d)g d S ),Nopset_versionslist[tuple[str, int]]r   r   c                 S  s(   t g dg g }t j|dd | D dS )Nr   c                 S  s   g | ]}t j| qS r"   )r   make_opsetid).0pairr"   r"   r#   
<listcomp>  r   zRTestHelperNodeFunctions.test_model_irversion.<locals>.mk_model.<locals>.<listcomp>)opset_imports)r   r   make_model_gen_version)r   r   r"   r"   r#   mk_model  s
   z>TestHelperNodeFunctions.test_model_irversion.<locals>.mk_model
ir_versionr2   r&   c                   s    | } |j| d S r   )r*   r   )r   r   modelr   r/   r"   r#   r>     s   z:TestHelperNodeFunctions.test_model_irversion.<locals>.test)r9   	   r   )r9   
   r4   )r9         )r9         )r9      )r9      )r9   r      )r9      )r9      )r9      )r9      r   )r9      )r9      r   )r9      )r9      r   )zai.onnxr   )
ai.onnx.mlr   )r  r3   )r  r   )r  r4   )zai.onnx.trainingr   )r9   r   )r   r   r   r   )r   r   r   r2   r   r&   )r   r   )r/   r>   r"   r   r#   test_model_irversion  s2   
z,TestHelperNodeFunctions.test_model_irversionNr   )r   r   r   r   r<   r   r   r   r   r   r   r   r  r"   r"   r"   r#   r   3  s    








r   c                   @  s  e Zd Zd,ddZd,ddZd,ddZd,d	d
Zd,ddZd,ddZd,ddZ	d,ddZ
d,ddZd,ddZd,ddZejeejejfdd,ddZejedd,ddZejeejejfdd,dd Zd,d!d"Zd,d#d$Zd,d%d&Zd,d'd(Zd,d)d*Zd+S )-TestHelperTensorFunctionsr   r&   c                 C  s:   dd dD }t jdtjd|dd}| |t|j d S )Nc                 S  s   g | ]}| d qS )zutf-8)encode)r   r@   r"   r"   r#   r     r   zETestHelperTensorFunctions.test_make_string_tensor.<locals>.<listcomp>)AmyBillyCindyDavidr>   )r   r   Fra   )r   r[   r	   r   r*   rG   string_data)r/   string_listtensorr"   r"   r#   test_make_string_tensor  s   z1TestHelperTensorFunctions.test_make_string_tensorc                 C  s   t jddgddgddgddgt jt jggt jd	}tjd
tj|j	|d}| 
|jd
 t jt|t j|tjt j d S )Nr(   rE   rM         @     ?     p??皙?dtyper>   rU   )r   r   naninfrh   r   r[   r	   BFLOAT16shaper*   r+   testingassert_equalr   to_arrayr   uint16rg   	ml_dtypesbfloat16)r/   np_arrayr  r"   r"   r#   test_make_bfloat16_tensor  s(   
z3TestHelperTensorFunctions.test_make_bfloat16_tensorc                 C  X   t dtjdgg d}t|}tjg dtj	d}tj
|tj|tj d S )N
zero_pointr4   )r         ?r   P  333333$@r   r&  r   i  r   r  )r   r[   r	   FLOAT8E4M3FNr   r  r   r   r   float8_e4m3fnr  r  r   r   r/   yynpexpectedr"   r"   r#   test_make_float8e4m3fn_tensor     
"z7TestHelperTensorFunctions.test_make_float8e4m3fn_tensorc                 C  r$  )Nr%  r   )r   r&  r   r'  r(  gh㈵gh㈵>)r   r&  r      r   r   r   r  )r   r[   r	   FLOAT8E4M3FNUZr   r  r   r   r   float8_e4m3fnuzr  r  r   r   r,  r"   r"   r#   test_make_float8e4m3fnuz_tensor  s   
"z9TestHelperTensorFunctions.test_make_float8e4m3fnuz_tensorc                 C  r$  )Nr%  r4   )r   r&  r   r'  `   )r   r&  r      r6  r  )r   r[   r	   
FLOAT8E5M2r   r  r   r   r   float8_e5m2r  r  r   r   r,  r"   r"   r#   test_make_float8e5m2_tensor  r1  z5TestHelperTensorFunctions.test_make_float8e5m2_tensorc                 C  r$  )Nr%  r   )r   r&  r   r'  r6  gHzgHz>)r   r&  r   r7  r6  r   r   r  )r   r[   r	   FLOAT8E5M2FNUZr   r  r   r   r   float8_e5m2fnuzr  r  r   r   r,  r"   r"   r#   test_make_float8e5m2fnuz_tensor  s   

"z9TestHelperTensorFunctions.test_make_float8e5m2fnuz_tensorc                 C  sv   t jddgddgddgddgt jt jggtjd	t j}tj	d
t
j|j| dd}t jt|t j| d S )Nr(   rE   rM   r  r  r  r  r  r  r>   Tra   )r   r   r  r  r   r!  r   r  r   r[   r	   r  r  tobytesr  assert_allcloser   r  )r/   r   r  r"   r"   r#   test_make_bfloat16_tensor_raw  s&   
	 z7TestHelperTensorFunctions.test_make_bfloat16_tensor_rawc                 C     t jg dt jd}t jdd |D t jd}| }tjdtjt	|j
|dd}t|}t j|t j|tjt j d S )Nr)  r  c                 S     g | ]}t |qS r"   r   float32_to_float8e4m3r   xr"   r"   r#   r     r   zOTestHelperTensorFunctions.test_make_float8e4m3fn_tensor_raw.<locals>.<listcomp>r>   Tra   )r   r   rh   r   r>  r   r[   r	   r*  rG   r  r   r  r  r  r   rg   r   r+  r/   r/  f8packed_valuesr-  r.  r"   r"   r#   !test_make_float8e4m3fn_tensor_raw      
z;TestHelperTensorFunctions.test_make_float8e4m3fn_tensor_rawc                 C  rA  )N)r   r&  r   r2  r   r  c                 S  s   g | ]	}t j|d dqS )T)uzrC  rE  r"   r"   r#   r   -  s    zQTestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor_raw.<locals>.<listcomp>r>   Tra   )r   r   rh   r   r>  r   r[   r	   r3  rG   r  r   r  r  r  r   rg   r   r4  rG  r"   r"   r#   #test_make_float8e4m3fnuz_tensor_raw*  s"   

z=TestHelperTensorFunctions.test_make_float8e4m3fnuz_tensor_rawc                 C  rA  )Nr   r&  r   r7  r   r  c                 S  rB  r"   r   float32_to_float8e5m2rE  r"   r"   r#   r   @  r   zMTestHelperTensorFunctions.test_make_float8e5m2_tensor_raw.<locals>.<listcomp>r>   Tra   )r   r   rh   r   r>  r   r[   r	   r8  rG   r  r   r  r  r  r   rg   r   r9  rG  r"   r"   r#   test_make_float8e5m2_tensor_raw=  rK  z9TestHelperTensorFunctions.test_make_float8e5m2_tensor_rawc                 C  rA  )NrN  r  c                 S  s   g | ]
}t j|d d dqS )T)fnrL  rO  rE  r"   r"   r#   r   R  s    zQTestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor_raw.<locals>.<listcomp>r>   Tra   )r   r   rh   r   r>  r   r[   r	   r;  rG   r  r   r  r  r  r   rg   r   r<  rG  r"   r"   r#   #test_make_float8e5m2fnuz_tensor_rawO  s$   

z=TestHelperTensorFunctions.test_make_float8e5m2fnuz_tensor_raw)r4   r   r   r   r   r4   r3   r3   rT   )i   c           	      C  s   t jdt jdi}tjj|| d || d d |d}td||j|}t	
t|jd }tt|j}tj|| t|}tj|| d S )Nr   r   ir   r   r   highr   r-  rE   )r	   UINT4INT4r   r   randintr   r[   r  mathceilprodrf   bytes
int32_datar  r  r   r  )	r/   r  rW   
type_rangedatar-  expected_data_sizeactual_data_sizer.  r"   r"   r#   test_make_4bit_tensorc  s   
z/TestHelperTensorFunctions.test_make_4bit_tensorc                 C  sh   t |}t jdg| t jd|}tdtj|j	|}t
|d }tt|j}t j|| d S )Nr  r-  rE   )r   r`  r   int8reshaper   r[   r	   r\  r  r^  r_  rf   ra  rb  r  r  )r/   rW   	num_elemsrd  r-  re  rf  r"   r"   r#   test_4bit_tensor_size|  s   
z/TestHelperTensorFunctions.test_4bit_tensor_size)rT  rU  rV  rT   c                 C  s   t jdt jdi}tjj|| d || d d |dtj}t|}t	j
d||| dd}t|}tj|tj| d S )	NrW  rX  r   r   rY  packed_int4Trb   )r	   r[  r\  r   r   r]  rg   r   r$   r   r[   r>  r   r  r  r  r   )r/   r  rW   rc  rd  packed_datar-  r.  r"   r"   r#   test_make_4bit_raw_tensor  s   
z3TestHelperTensorFunctions.test_make_4bit_raw_tensorc                 C  sh   t jg dtjd}|t j}t|}tjdt	j
|j| dd}t|}t j|t j| d S )N)r   r&  r   r2  r   r  packed_fp4e2m1Trn  )r   r   r   float4_e2m1fnr   r   r$   r   r[   r	   
FLOAT4E2M1r  r>  r   r  r  r  )r/   rd  r/  ro  r-  r.  r"   r"   r#   test_make_float4e2m1_raw_tensor  s   
z9TestHelperTensorFunctions.test_make_float4e2m1_raw_tensorc                 C  sP   t dtjdgg d}t|}tjg dtj	d
tj}tj|| d S )Nr%  r   )r   r&  r   r'  g333333i)r   r&  r   r   g      irh  r  )r   r[   r	   rt  r   r  r   r   r   rs  r   r   r  r  r,  r"   r"   r#   test_make_float4e2m1_tensor  s   

z5TestHelperTensorFunctions.test_make_float4e2m1_tensorc                 C  sz   g d}t jdtjd|d}g d}t jdtjd|d}dg}t |||}| |j| | |j| | |j	| d S )Ng?g@gffffff
@g@g      @r>   r4   rU   )r   r3   r4   r   r   test_indicesr   )
r   r[   r	   r\   ri   rk   r*   valuesrd   rW   )r/   r{  rn   rd   rp   rm   sparser"   r"   r#   test_make_sparse_tensor  s   

z1TestHelperTensorFunctions.test_make_sparse_tensorc                 C  8   t dtjd}t| t dtjd}t| d S )Nr   )r   r   r   r"   )r   r   r	   r\   r   check_value_infor/   vir"   r"   r#   test_make_tensor_value_info     
z5TestHelperTensorFunctions.test_make_tensor_value_infoc                 C  r~  )Nr   )r   r3   r   r"   )r   make_sparse_tensor_value_infor	   r\   r   r  r  r"   r"   r#   "test_make_sparse_tensor_value_info  r  z<TestHelperTensorFunctions.test_make_sparse_tensor_value_infoNr   )r   r   r   r  r#  r0  r5  r:  r=  r@  rJ  rM  rQ  rS  parameterizedexpand	itertoolsproductr	   r[  r\  rg  rl  rp  ru  rw  r}  r  r  r"   r"   r"   r#   r    sH    















r  c                   @  *   e Zd Zd
ddZd
ddZd
ddZd	S )&TestHelperOptionalAndSequenceFunctionsr   r&   c                 C  s   g d}t jdtjd|d}t jdtj|d}| |jd | |j	tj | |j
| t jdtj||gd}t jdtj|d}| |jd | |j	tj | |j| t jdtjd d}| |jd | |j	tj | |d d S )Nrx  r>   ry  rU   )r+   	elem_typer8   )r+   r  r{  tensor_value)r   r[   r	   r\   make_optionalr   TENSORr*   r+   r  r  make_sequencer   SEQUENCEsequence_value	UNDEFINEDr   HasField)r/   r{  rn   optionalvalues_sequenceoptional_noner"   r"   r#   test_make_optional  s6   
z9TestHelperOptionalAndSequenceFunctions.test_make_optionalc                 C  s   t jddgd}t jd|d}t |}t jd|d}| |jd | |jj | |jjj	|j t 
|}t |}t jd|d}| |jd | |jj t jd|d}| |jjj	jj	|j d S )Nr   r4   r  r  r>   r+   rx   )r   make_tensor_type_protomake_value_infomake_optional_type_protor*   r+   r   r{   optional_typer  make_sequence_type_protosequence_type)r/   tensor_type_prototensor_val_intooptional_type_protooptional_val_infosequence_type_protosequence_value_infor"   r"   r#   test_make_optional_value_info  s6   


zDTestHelperOptionalAndSequenceFunctions.test_make_optional_value_infoc                 C  sF   t jdd d}t |}t jd|d}t jddd d}| || d S )Nr   r  r>   r  )r+   r  r  )r   r  r  r  make_tensor_sequence_value_infor*   )r/   r  r  sequence_val_infosequence_val_info_primr"   r"   r#   test_make_seuence_value_info   s   
zCTestHelperOptionalAndSequenceFunctions.test_make_seuence_value_infoNr   )r   r   r   r  r  r  r"   r"   r"   r#   r    s    

!!r  c                   @  r  )TestPrintableGraphr   r&   c                 C  s   t dddgdg}t dtjdgg}t j|gdt dtjdgt dtjdggt dtjdggt dtjdgdggd |d}t |}| d	|v | d S )
Nr   r   Y_Initializerr   r   r   r>   r   zI) optional inputs with matching initializers (
  %Y_Initializer[FLOAT, 1]	r   r   r   r	   r\   r   r[   printable_graphr   r/   r   r   r   	graph_strr"   r"   r#   *test_initializer_with_matching_graph_input.  s*   
z=TestPrintableGraph.test_initializer_with_matching_graph_inputc                 C  s   t dddgdg}t dtjdgg}t j|gdt dtjdggt dtjdggt dtjdgdggd |d}t |}| d	|v | d S )
Nr   r   r  r   r   r   r>   r   z+) initializers (
  %Y_Initializer[FLOAT, 1]r  r  r"   r"   r#   (test_initializer_no_matching_graph_inputI  s&   
z;TestPrintableGraph.test_initializer_no_matching_graph_inputc                 C  s   t jt dddgdggdt dtjd ggt dtjd ggt dtjdgdggd d}t |}t	| t 
|}| d| d S )	Nr   r   r  r   r>   r   r   zX[FLOAT, ?])r   r   r   r   r	   r\   r[   r   r   r   r  assertIn)r/   r   r   r  r"   r"   r#   test_unknown_dimensionsa  s   



z*TestPrintableGraph.test_unknown_dimensionsNr   )r   r   r   r  r  r  r"   r"   r"   r#   r  -  s    

r  tensor_dtypec                 C  sD   g | ]}|t jt jt jt jt jt jt jt jt j	t j
t jhvr|qS r"   )r	   r  r*  r3  r8  r;  r[  r\  r   	COMPLEX64
COMPLEX128rt  r   tr"   r"   r#   r   u  s$    r   c                 C  
   t | S r   r   tensor_dtype_to_stringr  r"   r"   r#   r        
 r   )idsr2   r&   c                 C  sF   t jddt| }tjd| |j|d}t j	|t
| d S )Nr   r3   r>   rU   )r   r   randnrg   r   tensor_dtype_to_np_dtyper[   r  r  r  r   r  r  r"  r  r"   r"   r#   test_make_tensor_valss  s   
r  c                 C  s<   g | ]}|t jt jt jt jt jt jt jt jt j	h	vr|qS r"   )
r	   r  r   r*  r3  r8  r;  r[  r\  rt  r  r"   r"   r#   r     s     c                 C  r  r   r  r  r"   r"   r#   r     r  c                 C  sL   t jddt| }tjd| |j| dd}t j	
|t| d S )Nr   r3   r>   Tra   )r   r   r  rg   r   r  r[   r  r>  r  r  r   r  r  r"   r"   r#   test_make_tensor_raw  s   r  c                   @  s   e Zd ZejddddZejddddZejdddd	Zejddd
dZ	dddZ
dddZdddZdS )TestHelperMappingFunctionszerror::DeprecationWarningr   r&   c                 C     t tj}d S r   )r   r  r	   r\   r/   _r"   r"   r#   /test_tensor_dtype_to_np_dtype_not_throw_warning     zJTestHelperMappingFunctions.test_tensor_dtype_to_np_dtype_not_throw_warningc                 C  r  r   )r   $tensor_dtype_to_storage_tensor_dtyper	   r\   r  r"   r"   r#   ;test_tensor_dtype_to_storage_tensor_dtype_not_throw_warning  r  zVTestHelperMappingFunctions.test_tensor_dtype_to_storage_tensor_dtype_not_throw_warningc                 C  r  r   )r   tensor_dtype_to_fieldr	   r\   r  r"   r"   r#   ,test_tensor_dtype_to_field_not_throw_warning  r  zGTestHelperMappingFunctions.test_tensor_dtype_to_field_not_throw_warningc                 C  s   t td}d S Nrh   )r   np_dtype_to_tensor_dtyper   r  r  r"   r"   r#   /test_np_dtype_to_tensor_dtype_not_throw_warning  s   zJTestHelperMappingFunctions.test_np_dtype_to_tensor_dtype_not_throw_warningc                 C  s   |  ttjtd d S r  )r*   r   r  r	   r  r   r  r   r"   r"   r#   &test_tensor_dtype_to_np_dtype_bfloat16  s   zATestHelperMappingFunctions.test_tensor_dtype_to_np_dtype_bfloat16c                 C  s   |  ttjtj d S r   )r*   r   r  r	   r  UINT16r   r"   r"   r#   2test_tensor_dtype_to_storage_tensor_dtype_bfloat16  s   
zMTestHelperMappingFunctions.test_tensor_dtype_to_storage_tensor_dtype_bfloat16c                 C  s   |  ttjd d S )Nrb  )r*   r   r  r	   r  r   r"   r"   r#   #test_tensor_dtype_to_field_bfloat16  s   z>TestHelperMappingFunctions.test_tensor_dtype_to_field_bfloat16Nr   )r   r   r   pytestmarkfilterwarningsr  r  r  r  r  r  r  r"   r"   r"   r#   r    s    





r  c                   @  s   e Zd Zejejjdfejjdfejj	dfejj
dfejjdfejjdfejjdfejjdfejjd	fejjd
fejjdfejjdfejjdfejjdfgdd Zdd Zdd ZdS )TestAttrTypeToStrr\   r   r   r  GRAPHSPARSE_TENSORr|   r   r   r   TENSORSGRAPHSSPARSE_TENSORSr}   c                 C  s   t |}| || d S r   r   _attr_type_to_strr*   )r/   r   expected_strresultr"   r"   r#   test_attr_type_to_str  s   
z'TestAttrTypeToStr.test_attr_type_to_strc                 C  s   t d}| |d d S )Ni'  r  r  )r/   r  r"   r"   r#   test_attr_type_to_str_undefined  s   
z1TestAttrTypeToStr.test_attr_type_to_str_undefinedc                 C  s6   dd }t j D ]\}}| t||| q	d S )Nc                 S  s(   t t| r
tt| S d|  } tt| S )Nfloat8)r   r   getattrr   r"   r"   r#   _get  s   



z1TestAttrTypeToStr.test_custom_types.<locals>._get)r   mapping_name_to_data_typeitemsr*   r   r  )r/   r  kvr"   r"   r#   test_custom_types  s   z#TestAttrTypeToStr.test_custom_typesN)r   r   r   r  r  r   AttributeTyper\   r   r   r  r  r  r|   r   r   r   r  r  r  r}   r  r  r  r"   r"   r"   r#   r    s*    














r  __main__)r   r   r   r   )r  r2   r   r&   )-
__future__r   r  r^  r   unittesttypingr   r   numpyr   numpy.typingnptr  r  onnxr   r   r   r   r   r	   r
   r   r   r   r   r   r$   TestCaser%   r   r  r  r  r  parametrizeget_all_tensor_dtypesr  r  r  r  r   main__file__r"   r"   r"   r#   <module>   sZ   8
     )PF
&&