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Zd dlZd dl	Zd dl
Z
d dlZd dlmZ dddZdd	d
Ze
ddiddiddiddigG dd dejZe
ddiddiddigG dd dejZG dd dejZG dd dejZedkre  dS dS )    )annotationsN)serializationreturnonnx.ModelProtoc                  C  s"   t  } t j| _d| _d| j_| S )Nz	onnx-testtest)onnx
ModelProto
IR_VERSION
ir_versionproducer_namegraphname)model r   Q/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/test/basic_test.py_simple_model   s
   r   onnx.TensorProtoc                  C  s*   t jjdt jjddd tdD d} | S )Nztest-tensor)         c                 S  s   g | ]}|d  qS )g      ?r   ).0xr   r   r   
<listcomp>!   s    z"_simple_tensor.<locals>.<listcomp>   )r   	data_typedimsvals)r   helpermake_tensorTensorProtoFLOATrange)tensorr   r   r   _simple_tensor   s   r#   formatprotobuf	textprotojsononnxtxtc                   @  s>   e Zd ZU ded< dddZdddZdd	d
ZdddZdS )TestIOstrr$   r   Nonec                 C  :   t  }tj| j|}tj|| jd}| || d S Nr$   )	r   r   registrygetr$   serialize_protor   load_model_from_stringassertEqualselfprotoproto_stringloaded_protor   r   r   #test_load_model_when_input_is_bytes1      z*TestIO.test_load_model_when_input_is_bytesc                 C  s\   t  }tjd|}t }tj||| j	d tj
t| | j	d}| || d S )Nr%   r.   )r   r   r/   r0   r1   ioBytesIOr   
save_modelr$   
load_modelgetvaluer3   )r5   r6   r7   fr8   r   r   r   5test_save_and_load_model_when_input_has_read_function7   s   z<TestIO.test_save_and_load_model_when_input_has_read_functionc                 C  p   t  }t '}tj|d}tj||| jd tj	|| jd}| 
|| W d    d S 1 s1w   Y  d S Nz
model.onnxr.   )r   tempfileTemporaryDirectoryospathjoinr   r=   r$   r>   r3   r5   r6   temp_dir
model_pathr8   r   r   r   0test_save_and_load_model_when_input_is_file_nameB   s   
"z7TestIO.test_save_and_load_model_when_input_is_file_namec                 C  n   t  }t &}t|d}tj||| jd tj|| jd}| 	|| W d    d S 1 s0w   Y  d S rC   )
r   rD   rE   pathlibPathr   r=   r$   r>   r3   rI   r   r   r   /test_save_and_load_model_when_input_is_pathlikeJ   s   
"z6TestIO.test_save_and_load_model_when_input_is_pathlikeNr   r+   )__name__
__module____qualname____annotations__r9   rA   rL   rP   r   r   r   r   r)   &   s   
 	


r)   c                   @  sB   e Zd ZU dZded< dddZddd	Zdd
dZdddZdS )TestIOTensorz'Test loading and saving of TensorProto.r*   r$   r   r+   c                 C  r,   r-   )	r#   r   r/   r0   r$   r1   r   load_tensor_from_stringr3   r4   r   r   r   $test_load_tensor_when_input_is_bytes`   r:   z1TestIOTensor.test_load_tensor_when_input_is_bytesc                 C  sJ   t  }t }tj||| jd tjt| | jd}| || d S r-   )	r#   r;   r<   r   save_tensorr$   load_tensorr?   r3   )r5   r6   r@   r8   r   r   r   6test_save_and_load_tensor_when_input_has_read_functionf   s
   zCTestIOTensor.test_save_and_load_tensor_when_input_has_read_functionc                 C  rB   rC   )r#   rD   rE   rF   rG   rH   r   rY   r$   rZ   r3   rI   r   r   r   1test_save_and_load_tensor_when_input_is_file_namen   s   
"z>TestIOTensor.test_save_and_load_tensor_when_input_is_file_namec                 C  rM   rC   )
r#   rD   rE   rN   rO   r   rY   r$   rZ   r3   rI   r   r   r   0test_save_and_load_tensor_when_input_is_pathlikew   s   
"z=TestIOTensor.test_save_and_load_tensor_when_input_is_pathlikeNrQ   )	rR   rS   rT   __doc__rU   rX   r[   r\   r]   r   r   r   r   rV   S   s   
 	


	rV   c                   @  sH   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S )TestSaveAndLoadFileExtensionsr   r+   c                 C  sh   t  }t #}tj|d}t|| tj|dd}| 	|| W d    d S 1 s-w   Y  d S Nmodel.textprotor&   r.   
r   rD   rE   rF   rG   rH   r   r=   r>   r3   rI   r   r   r   3test_save_model_picks_correct_format_from_extension   s   
"zQTestSaveAndLoadFileExtensions.test_save_model_picks_correct_format_from_extensionc                 C  sh   t  }t #}tj|d}tj||dd t|}| 	|| W d    d S 1 s-w   Y  d S r`   rb   rI   r   r   r   3test_load_model_picks_correct_format_from_extension   s   

"zQTestSaveAndLoadFileExtensions.test_load_model_picks_correct_format_from_extensionc              	   C  s   t  }t J}tj|d}tj||dd tj|dd}| 	|| | 
tjjj t| W d    n1 s<w   Y  W d    d S W d    d S 1 sTw   Y  d S )Nra   r%   r.   )r   rD   rE   rF   rG   rH   r   r=   r>   r3   assertRaisesgoogler%   text_format
ParseErrorrI   r   r   r   0test_save_model_uses_format_when_it_is_specified   s   
"zNTestSaveAndLoadFileExtensions.test_save_model_uses_format_when_it_is_specifiedc              	   C  s   t  }t B}tj|d}t|| | t	j
jj tj|dd W d    n1 s/w   Y  tj|dd}| || W d    d S 1 sLw   Y  d S )Nzmodel.protobufr&   r.   r%   r   rD   rE   rF   rG   rH   r   r=   re   rf   r%   rg   rh   r>   r3   rI   r   r   r   0test_load_model_uses_format_when_it_is_specified   s   
"zNTestSaveAndLoadFileExtensions.test_load_model_uses_format_when_it_is_specifiedc              	   C  s   t  }t B}tj|d}tj||dd | t	j
jj t| W d    n1 s/w   Y  tj|dd}| || W d    d S 1 sLw   Y  d S )Nr   r&   r.   )r   rD   rE   rF   rG   rH   r   r=   re   rf   r%   messageDecodeErrorr>   r3   rI   r   r   r   Ftest_load_and_save_model_to_path_without_specifying_extension_succeeds   s   
"zdTestSaveAndLoadFileExtensions.test_load_and_save_model_to_path_without_specifying_extension_succeedsc              	   C  s   t  }t M}tj|d}t|| | t	j
jj tj|dd W d    n1 s/w   Y  t|}| || tj|dd}| || W d    d S 1 sWw   Y  d S )Nr   r&   r.   r%   rj   )r5   r6   rJ   rK   r8   #loaded_proto_as_explicitly_protobufr   r   r   Ttest_load_and_save_model_without_specifying_extension_or_format_defaults_to_protobuf   s   

"zrTestSaveAndLoadFileExtensions.test_load_and_save_model_without_specifying_extension_or_format_defaults_to_protobufNrQ   )	rR   rS   rT   rc   rd   ri   rk   rn   rp   r   r   r   r   r_      s    

	
	

r_   c                   @  s    e Zd ZdddZdddZdS )	TestBasicFunctionsr   r+   c                 C  s   t j}t j}t j}t j}d S )N)r   AttributeProto	NodeProto
GraphProtor   )r5   _r   r   r   test_protos_exist   s   
z$TestBasicFunctions.test_protos_existc                 C  sV   t  }| |d t j|_| }|| | |d | 	|jt j d S )Nr
   )
r   r   assertFalseHasFieldr	   r
   SerializeToStringParseFromString
assertTruer3   )r5   r   model_stringr   r   r   test_version_exists   s   
z&TestBasicFunctions.test_version_existsNrQ   )rR   rS   rT   rv   r}   r   r   r   r   rq      s    
rq   __main__)r   r   )r   r   )
__future__r   r;   rF   rN   rD   unittestgoogle.protobuf.messagerf   google.protobuf.text_formatparameterizedr   r   r   r#   parameterized_classTestCaser)   rV   r_   rq   rR   mainr   r   r   r   <module>   sB   


%&P