
    Si 2                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	rS SK
r
S SKrS SKJr  SS jrSS jr\
R                  " SS0SS0SS	0SS
0/5       " S S\R                   5      5       r\
R                  " SS0SS0SS	0/5       " S S\R                   5      5       r " S S\R                   5      r " S S\R                   5      r\S:X  a  \R,                  " 5         gg)    )annotationsN)serializationc                     [         R                  " 5       n [         R                  U l        SU l        SU R
                  l        U $ )Nz	onnx-testtest)onnx
ModelProto
IR_VERSION
ir_versionproducer_namegraphname)models    S/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/test/basic_test.py_simple_modelr      s3    OOEE%EEKKL    c            
         [         R                  R                  S[         R                  R                  S[        S5       V s/ s H  o S-   PM	     sn S9$ s  sn f )Nztest-tensor)            g      ?)r   	data_typedimsvals)r   helpermake_tensorTensorProtoFLOATrange)xs    r   _simple_tensorr       sP    ;;""""(($Ry)y!#gy)	 #   *s   Aformatprotobuf	textprotojsononnxtxtc                  H    \ rS rSr% S\S'   S
S jrS
S jrS
S jrS
S jrSr	g	)TestIO%   strr!   c                    [        5       n[        R                  R                  U R                  5      R                  U5      n[        R                  " X R                  S9nU R                  X5        g 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_bytes*TestIO.test_load_model_when_input_is_bytes0   sP    $--11$++>NNuU22<T-r   c                   [        5       n[        R                  R                  S5      R	                  U5      n[
        R                  " 5       n[        R                  " X#U R                  S9  [        R                  " [
        R                  " UR                  5       5      U R                  S9nU R                  X5        g )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_function<TestIO.test_save_and_load_model_when_input_has_read_function6   sz     %--11*=MMeTJJL<rzz!**,'?T-r   c                R   [        5       n[        R                  " 5        n[        R                  R                  US5      n[        R                  " XU R                  S9  [        R                  " X0R                  S9nU R                  X5        S S S 5        g ! , (       d  f       g = f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_name7TestIO.test_save_and_load_model_when_input_is_file_nameA   si    ((*hh=JOOEdkkB??:kkJLU1	 +**   A/B
B&c                @   [        5       n[        R                  " 5        n[        R                  " US5      n[
        R                  " XU R                  S9  [
        R                  " X0R                  S9nU R                  X5        S S S 5        g ! , (       d  f       g = frC   )
r   rD   rE   pathlibPathr   r<   r!   r=   r1   rI   s        r   /test_save_and_load_model_when_input_is_pathlike6TestIO.test_save_and_load_model_when_input_is_pathlikeI   se    ((*h h=JOOEdkkB??:kkJLU1	 +**   A&B
B NreturnNone)
__name__
__module____qualname____firstlineno____annotations__r7   r@   rL   rR   __static_attributes__rU   r   r   r'   r'   %   s     K.	.22r   r'   c                  L    \ rS rSr% SrS\S'   SS jrSS jrSS jrSS jr	S	r
g
)TestIOTensorR   z'Test loading and saving of TensorProto.r)   r!   c                    [        5       n[        R                  R                  U R                  5      R                  U5      n[        R                  " X R                  S9nU R                  X5        g r+   )	r    r   r-   r.   r!   r/   r   load_tensor_from_stringr1   r2   s       r   $test_load_tensor_when_input_is_bytes1TestIOTensor.test_load_tensor_when_input_is_bytes_   sQ     $--11$++>NNuU33LU-r   c                $   [        5       n[        R                  " 5       n[        R                  " XU R
                  S9  [        R                  " [        R                  " UR                  5       5      U R
                  S9nU R                  X5        g r+   )	r    r:   r;   r   save_tensorr!   load_tensorr>   r1   )r3   r4   r?   r6   s       r   6test_save_and_load_tensor_when_input_has_read_functionCTestIOTensor.test_save_and_load_tensor_when_input_has_read_functione   s\     JJL$++6''

1::<(@U-r   c                R   [        5       n[        R                  " 5        n[        R                  R                  US5      n[        R                  " XU R                  S9  [        R                  " X0R                  S9nU R                  X5        S S S 5        g ! , (       d  f       g = frC   )r    rD   rE   rF   rG   rH   r   rg   r!   rh   r1   rI   s        r   1test_save_and_load_tensor_when_input_is_file_name>TestIOTensor.test_save_and_load_tensor_when_input_is_file_namem   sn     ((*hh=JUt{{C++J{{KLU1	 +**rN   c                @   [        5       n[        R                  " 5        n[        R                  " US5      n[
        R                  " XU R                  S9  [
        R                  " X0R                  S9nU R                  X5        S S S 5        g ! , (       d  f       g = frC   )
r    rD   rE   rP   rQ   r   rg   r!   rh   r1   rI   s        r   0test_save_and_load_tensor_when_input_is_pathlike=TestIOTensor.test_save_and_load_tensor_when_input_is_pathlikev   sj     ((*h h=JUt{{C++J{{KLU1	 +**rT   rU   NrV   )rY   rZ   r[   r\   __doc__r]   rd   ri   rl   ro   r^   rU   r   r   r`   r`   R   s      2K..22r   r`   c                  X    \ rS rSrS
S jrS
S jrS
S jrS
S jr  S
S jr  S
S jr	Sr
g	)TestSaveAndLoadFileExtensions   c                .   [        5       n[        R                  " 5        n[        R                  R                  US5      n[        R                  " X5        [        R                  " USS9nU R                  X5        S S S 5        g ! , (       d  f       g = fNmodel.textprotor#   r,   
r   rD   rE   rF   rG   rH   r   r<   r=   r1   rI   s        r   3test_save_model_picks_correct_format_from_extensionQTestSaveAndLoadFileExtensions.test_save_model_picks_correct_format_from_extension   sb    ((*hh0ABJOOE.??:kJLU1 +**   AB
Bc                .   [        5       n[        R                  " 5        n[        R                  R                  US5      n[        R                  " XSS9  [        R                  " U5      nU R                  X5        S S S 5        g ! , (       d  f       g = frv   rx   rI   s        r   3test_load_model_picks_correct_format_from_extensionQTestSaveAndLoadFileExtensions.test_load_model_picks_correct_format_from_extension   sb    ((*hh0ABJOOEkB??:6LU1 +**r{   c                   [        5       n[        R                  " 5        n[        R                  R                  US5      n[        R                  " XSS9  [        R                  " USS9nU R                  X5        U R                  [        R                  R                  R                  5         [        R                  " U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nrw   r"   r,   )r   rD   rE   rF   rG   rH   r   r<   r=   r1   assertRaisesgoogler"   text_format
ParseErrorrI   s        r   0test_save_model_uses_format_when_it_is_specifiedNTestSaveAndLoadFileExtensions.test_save_model_uses_format_when_it_is_specified   s    ((*hh0ABJOOEjA??:jILU1""6??#>#>#I#IJ
+ K +* KJ +*s$   BC(/CC(
C%	!C((
C6c                   [        5       n[        R                  " 5        n[        R                  R                  US5      n[        R                  " X5        U R                  [        R                  R                  R                  5         [        R                  " USS9  S S S 5        [        R                  " USS9nU R                  X5        S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)Nzmodel.protobufr#   r,   r"   r   rD   rE   rF   rG   rH   r   r<   r   r   r"   r   r   r=   r1   rI   s        r   0test_load_model_uses_format_when_it_is_specifiedNTestSaveAndLoadFileExtensions.test_load_model_uses_format_when_it_is_specified   s    ((*hh0@AJOOE.""6??#>#>#I#IJ 
;? K
  ??:jILU1 +* KJ +*s$   A*C(
C .C(
C%	!C((
C6c                   [        5       n[        R                  " 5        n[        R                  R                  US5      n[        R                  " XSS9  U R                  [        R                  R                  R                  5         [        R                  " U5        S S S 5        [        R                  " USS9nU R                  X5        S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)Nr   r#   r,   )r   rD   rE   rF   rG   rH   r   r<   r   r   r"   messageDecodeErrorr=   r1   rI   s        r   Ftest_load_and_save_model_to_path_without_specifying_extension_succeedsdTestSaveAndLoadFileExtensions.test_load_and_save_model_to_path_without_specifying_extension_succeeds   s     ((*hh8JOOEkB""6??#:#:#F#FG 
+ H
  ??:kJLU1 +* HG	 +*s$   A)C(	C .C(
C%	!C((
C6c                @   [        5       n[        R                  " 5        n[        R                  R                  US5      n[        R                  " X5        U R                  [        R                  R                  R                  5         [        R                  " USS9  S S S 5        [        R                  " U5      nU R                  X5        [        R                  " USS9nU R                  X5        S S S 5        g ! , (       d  f       Nd= f! , (       d  f       g = f)Nr   r#   r,   r"   r   )r3   r4   rJ   rK   r6   #loaded_proto_as_explicitly_protobufs         r   Ttest_load_and_save_model_without_specifying_extension_or_format_defaults_to_protobufrTestSaveAndLoadFileExtensions.test_load_and_save_model_without_specifying_extension_or_format_defaults_to_protobuf   s     ((*hh8JOOE.""6??#>#>#I#IJ
;? K  ??:6LU126//:3/ UH +* KJ	 +*s%   A*D
C> AD>
D	D
DrU   NrV   )rY   rZ   r[   r\   ry   r}   r   r   r   r   r^   rU   r   r   rs   rs      s2    22
,22	2 I	Ir   rs   c                  <    \ rS rSrSS jrSS jrSS jrSS jrSrg)	TestBasicFunctions   c                    [         R                  n[         R                  n[         R                  n[         R                  ng )N)r   AttributeProto	NodeProto
GraphProtor   )r3   _s     r   test_protos_exist$TestBasicFunctions.test_protos_exist   s(    NNOOOOr   c                n   [         R                  " 5       nU R                  UR                  S5      5        [         R                  Ul        UR                  5       nUR                  U5        U R                  UR                  S5      5        U R                  UR
                  [         R                  5        g )Nr
   )
r   r   assertFalseHasFieldr	   r
   SerializeToStringParseFromString
assertTruer1   )r3   r   model_strings      r   test_version_exists&TestBasicFunctions.test_version_exists   s~    !56  ??..0l+|45))4??;r   c                   [        5       n[        U5      nU R                  US5        Sn[        R                  R                  U5      n[        U5      nU R                  US5        [        UR                  5      nU R                  US5        g )NzNModelProto(ir_version=13, producer_name='onnx-test', graph=GraphProto('test'))a  
           <
             ir_version: 10,
             opset_import: [ "" : 19]
           >
           agraph (float[N] X) => (float[N] C)
           <
             float[1] weight = {1}
           >
           {
              C = Cast<to=1>(X)
           }
        zModelProto(ir_version=10, opset_import={'': 19}, graph=GraphProto('agraph', input=<1 inputs>, output=<1 outputs>, initializer=<1 initializers>, node=<1 nodes>))zhGraphProto('agraph', input=<1 inputs>, output=<1 outputs>, initializer=<1 initializers>, node=<1 nodes>))r   reprr1   r   parserparse_modelr   )r3   r   
model_repr
text_model
graph_reprs        r   test_model_and_graph_repr,TestBasicFunctions.test_model_and_graph_repr   s    %[
\	


 ''
3%[
 o	

 %++&
v	
r   c                    Sn[         R                  R                  U5      nU R                  [	        U5      S5        [	        UR
                  S   5      nU R                  US5        g )Nac  
            <
            ir_version: 9,
            opset_import: [ "" : 15, "custom_domain" : 1],
            producer_name: "FunctionProtoTest",
            producer_version: "1.0",
            model_version: 1,
            doc_string: "A test model for model local functions."
          >
         agraph (float[N] x) => (float[N] out)
         {
            out = custom_domain.Selu<alpha=2.0, gamma=3.0>(x)
         }
         <
         domain: "custom_domain",
         opset_import: [ "" : 15],
         doc_string: "Test function proto"
         >
           Selu
           <alpha: float=1.67326319217681884765625, gamma: float=1.05070102214813232421875>
           (X) => (C)
           {
               constant_alpha = Constant<value_float: float=@alpha>()
               constant_gamma = Constant<value_float: float=@gamma>()
               alpha_x = CastLike(constant_alpha, X)
               gamma_x = CastLike(constant_gamma, X)
               exp_x = Exp(X)
               alpha_x_exp_x = Mul(alpha_x, exp_x)
               alpha_x_exp_x_ = Sub(alpha_x_exp_x, alpha_x)
               neg = Mul(gamma_x, alpha_x_exp_x_)
               pos = Mul(gamma_x, X)
               _zero = Constant<value_float=0.0>()
               zero = CastLike(_zero, X)
               less_eq = LessOrEqual(X, zero)
               C = Where(less_eq, neg, pos)
           }
        zModelProto(ir_version=9, opset_import={'': 15, 'custom_domain': 1}, producer_name='FunctionProtoTest', producer_version='1.0', graph=GraphProto('agraph', input=<1 inputs>, output=<1 outputs>, node=<1 nodes>), functions=<1 functions>)r   z{FunctionProto('Selu', domain='custom_domain', opset_import={'': 15}, input=<1 inputs>, output=<1 outputs>, node=<13 nodes>))r   r   r   r1   r   	functions)r3   textr   function_reprs       r   test_function_repr%TestBasicFunctions.test_function_repr  sg    $J ''-K x	
 U__Q/0 J	
r   rU   NrV   )	rY   rZ   r[   r\   r   r   r   r   r^   rU   r   r   r   r      s    <!
F/
r   r   __main__)rW   zonnx.ModelProto)rW   zonnx.TensorProto)
__future__r   r:   rF   rP   rD   unittestgoogle.protobuf.messager   google.protobuf.text_formatparameterizedr   r   r   r    parameterized_classTestCaser'   r`   rs   r   rY   mainrU   r   r   <module>r      s   # 	 	     "    ""	:	;	6	9	"2X "2"2J ""	:	;	6#28$$ #2#2LMIH$5$5 MI`g
** g
T zMMO r   