
    bIg%                       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ZddZ e
j                  ddiddidd	idd
ig       G d dej                                Z e
j                  ddiddidd	ig       G d dej                                Z G d dej                         Z G d dej                         Zedk(  r ej,                          yy)    )annotationsN)serializationc                     t        j                         } t         j                  | _        d| _        d| j
                  _        | S )Nz	onnx-testtest)onnx
ModelProto
IR_VERSION
ir_versionproducer_namegraphname)models    Q/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/test/basic_test.py_simple_modelr      s3    OOEE%EEKKL    c            
         t         j                  j                  dt         j                  j                  dt        d      D  cg c]  } | dz   	 c}       }|S c c} w )Nztest-tensor)            g      ?)r   	data_typedimsvals)r   helpermake_tensorTensorProtoFLOATrange)xtensors     r   _simple_tensorr!      sR    [[$$""(($Ry)!a#g)	 % F M *s   Aformatprotobuf	textprotojsononnxtxtc                  8    e Zd ZU ded<   ddZddZddZddZy)	TestIOstrr"   c                    t               }t        j                  j                  | j                        j                  |      }t        j                  || j                        }| j                  ||       y Nr"   )	r   r   registrygetr"   serialize_protor   load_model_from_stringassertEqualselfprotoproto_stringloaded_protos       r   #test_load_model_when_input_is_bytesz*TestIO.test_load_model_when_input_is_bytes1   sT    $--11$++>NNuU22<T-r   c                   t               }t        j                  j                  d      j	                  |      }t        j                         }t        j                  ||| j                         t        j                  t        j                  |j                               | j                        }| j                  ||       y )Nr#   r,   )r   r   r-   r.   r/   ioBytesIOr   
save_modelr"   
load_modelgetvaluer1   )r3   r4   r5   fr6   s        r   5test_save_and_load_model_when_input_has_read_functionz<TestIO.test_save_and_load_model_when_input_has_read_function7   s~     %--11*=MMeTJJLa<rzz!**,'?T-r   c                T   t               }t        j                         5 }t        j                  j                  |d      }t        j                  ||| j                         t        j                  || j                        }| j                  ||       d d d        y # 1 sw Y   y xY wNz
model.onnxr,   )r   tempfileTemporaryDirectoryospathjoinr   r;   r"   r<   r1   r3   r4   temp_dir
model_pathr6   s        r   0test_save_and_load_model_when_input_is_file_namez7TestIO.test_save_and_load_model_when_input_is_file_nameB   sx    ((* 	2hh=JOOE:dkkB??:dkkJLUL1		2 	2 	2   A6BB'c                @   t               }t        j                         5 }t        j                  |d      }t        j                  ||| j                         t        j                  || j                        }| j                  ||       d d d        y # 1 sw Y   y xY wrA   )
r   rB   rC   pathlibPathr   r;   r"   r<   r1   rG   s        r   /test_save_and_load_model_when_input_is_pathlikez6TestIO.test_save_and_load_model_when_input_is_pathlikeJ   st    ((* 	2h h=JOOE:dkkB??:dkkJLUL1		2 	2 	2   A,BBNreturnNone)__name__
__module____qualname____annotations__r7   r?   rJ   rO    r   r   r(   r(   &   s     K.	.22r   r(   c                  <    e Zd ZU dZded<   d	dZd	dZd	dZd	dZy)
TestIOTensorz'Test loading and saving of TensorProto.r)   r"   c                    t               }t        j                  j                  | j                        j                  |      }t        j                  || j                        }| j                  ||       y r+   )	r!   r   r-   r.   r"   r/   r   load_tensor_from_stringr1   r2   s       r   $test_load_tensor_when_input_is_bytesz1TestIOTensor.test_load_tensor_when_input_is_bytes`   sU     $--11$++>NNuU33LU-r   c                ,   t               }t        j                         }t        j                  ||| j
                         t        j                  t        j                  |j                               | j
                        }| j                  ||       y r+   )	r!   r9   r:   r   save_tensorr"   load_tensorr=   r1   )r3   r4   r>   r6   s       r   6test_save_and_load_tensor_when_input_has_read_functionzCTestIOTensor.test_save_and_load_tensor_when_input_has_read_functionf   s`     JJL$++6''

1::<(@U-r   c                T   t               }t        j                         5 }t        j                  j                  |d      }t        j                  ||| j                         t        j                  || j                        }| j                  ||       d d d        y # 1 sw Y   y xY wrA   )r!   rB   rC   rD   rE   rF   r   r_   r"   r`   r1   rG   s        r   1test_save_and_load_tensor_when_input_is_file_namez>TestIOTensor.test_save_and_load_tensor_when_input_is_file_namen   s}     ((* 	2hh=JUJt{{C++Jt{{KLUL1		2 	2 	2rK   c                @   t               }t        j                         5 }t        j                  |d      }t        j                  ||| j                         t        j                  || j                        }| j                  ||       d d d        y # 1 sw Y   y xY wrA   )
r!   rB   rC   rM   rN   r   r_   r"   r`   r1   rG   s        r   0test_save_and_load_tensor_when_input_is_pathlikez=TestIOTensor.test_save_and_load_tensor_when_input_is_pathlikew   sy     ((* 	2h h=JUJt{{C++Jt{{KLUL1		2 	2 	2rP   NrQ   )	rT   rU   rV   __doc__rW   r]   ra   rc   re   rX   r   r   rZ   rZ   S   s      2K..22r   rZ   c                  D    e Zd ZddZddZddZddZ	 	 ddZ	 	 ddZy)	TestSaveAndLoadFileExtensionsc                (   t               }t        j                         5 }t        j                  j                  |d      }t        j                  ||       t        j                  |d      }| j                  ||       d d d        y # 1 sw Y   y xY wNmodel.textprotor$   r,   
r   rB   rC   rD   rE   rF   r   r;   r<   r1   rG   s        r   3test_save_model_picks_correct_format_from_extensionzQTestSaveAndLoadFileExtensions.test_save_model_picks_correct_format_from_extension   so    ((* 	2hh0ABJOOE:.??:kJLUL1	2 	2 	2   A BBc                (   t               }t        j                         5 }t        j                  j                  |d      }t        j                  ||d       t        j                  |      }| j                  ||       d d d        y # 1 sw Y   y xY wrj   rl   rG   s        r   3test_load_model_picks_correct_format_from_extensionzQTestSaveAndLoadFileExtensions.test_load_model_picks_correct_format_from_extension   so    ((* 	2hh0ABJOOE:kB??:6LUL1	2 	2 	2rn   c                   t               }t        j                         5 }t        j                  j                  |d      }t        j                  ||d       t        j                  |d      }| j                  ||       | j                  t        j                  j                  j                        5  t        j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrk   r#   r,   )r   rB   rC   rD   rE   rF   r   r;   r<   r1   assertRaisesgoogler#   text_format
ParseErrorrG   s        r   0test_save_model_uses_format_when_it_is_specifiedzNTestSaveAndLoadFileExtensions.test_save_model_uses_format_when_it_is_specified   s    ((* 	,hh0ABJOOE:jA??:jILUL1""6??#>#>#I#IJ ,
+,	, 	,, ,	, 	,s$   BC'4C
C'C$	 C''C0c                   t               }t        j                         5 }t        j                  j                  |d      }t        j                  ||       | j                  t        j                  j                  j                        5  t        j                  |d       d d d        t        j                  |d      }| j                  ||       d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)Nzmodel.protobufr$   r,   r#   r   rB   rC   rD   rE   rF   r   r;   rr   rs   r#   rt   ru   r<   r1   rG   s        r   0test_load_model_uses_format_when_it_is_specifiedzNTestSaveAndLoadFileExtensions.test_load_model_uses_format_when_it_is_specified   s    ((* 		2hh0@AJOOE:.""6??#>#>#I#IJ @ 
;?@
  ??:jILUL1		2 		2@ @		2 		2s$   A*C'	C!1C'C$	 C''C0c                   t               }t        j                         5 }t        j                  j                  |d      }t        j                  ||d       | j                  t        j                  j                  j                        5  t        j                  |       d d d        t        j                  |d      }| j                  ||       d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)Nr   r$   r,   )r   rB   rC   rD   rE   rF   r   r;   rr   rs   r#   messageDecodeErrorr<   r1   rG   s        r   Ftest_load_and_save_model_to_path_without_specifying_extension_succeedszdTestSaveAndLoadFileExtensions.test_load_and_save_model_to_path_without_specifying_extension_succeeds   s     ((* 
	2hh8JOOE:kB""6??#:#:#F#FG , 
+,
  ??:kJLUL1
	2 
	2, ,	
	2 
	2s$   A,C'C!1C'C$	 C''C0c                4   t               }t        j                         5 }t        j                  j                  |d      }t        j                  ||       | j                  t        j                  j                  j                        5  t        j                  |d       d d d        t        j                  |      }| j                  ||       t        j                  |d      }| j                  ||       d d d        y # 1 sw Y   bxY w# 1 sw Y   y xY w)Nr   r$   r,   r#   rx   )r3   r4   rH   rI   r6   #loaded_proto_as_explicitly_protobufs         r   Ttest_load_and_save_model_without_specifying_extension_or_format_defaults_to_protobufzrTestSaveAndLoadFileExtensions.test_load_and_save_model_without_specifying_extension_or_format_defaults_to_protobuf   s     ((* 	Ihh8JOOE:.""6??#>#>#I#IJ @
;?@  ??:6LUL126//:3/ U$GH	I 	I@ @		I 	Is%   A*D	D!ADD	DDNrQ   )	rT   rU   rV   rm   rp   rv   ry   r}   r   rX   r   r   rh   rh      s2    22
,22	2 I	Ir   rh   c                      e Zd ZddZddZy)TestBasicFunctionsc                    t         j                  }t         j                  }t         j                  }t         j                  }y )N)r   AttributeProto	NodeProto
GraphProtor   )r3   _s     r   test_protos_existz$TestBasicFunctions.test_protos_exist   s(    NNOOOOr   c                l   t        j                         }| j                  |j                  d             t         j                  |_        |j                         }|j                  |       | j                  |j                  d             | j                  |j
                  t         j                         y )Nr
   )
r   r   assertFalseHasFieldr	   r
   SerializeToStringParseFromString
assertTruer1   )r3   r   model_strings      r   test_version_existsz&TestBasicFunctions.test_version_exists   s~    !56  ??..0l+|45))4??;r   NrQ   )rT   rU   rV   r   r   rX   r   r   r   r      s    <r   r   __main__)rR   zonnx.ModelProto)rR   zonnx.TensorProto)
__future__r   r9   rD   rM   rB   unittestgoogle.protobuf.messagers   google.protobuf.text_formatparameterizedr   r   r   r!   parameterized_classTestCaser(   rZ   rh   r   rT   mainrX   r   r   <module>r      s   # 	 	     "    #""	:	;	6	9	"2X "2"2J #""	:	;	6#28$$ #2#2LMIH$5$5 MI`<** <, zHMMO r   