
    SiP0                        S SK Jr  S SKrS SKJr  S SKrS SKJrJrJrJr   " S S\R                  5      r
\S:X  a  \R                  " SS	9  gg)
    )annotationsN)parameterized)
GraphProtoOperatorSetIdProtoTensorProtocheckerc                     \ rS rSrS3S jrS4S jrS4S jrS4S jrS4S jrS4S jr	\
R                  " S0 4S	S
S04SSS04SSSS.4/5            S5S j5       rS rS rS r\
R                  " / SQ5      S 5       r\
R                  " S\R$                  4S\R&                  4S\R(                  4S\R*                  4S\R,                  4S\R.                  4S\R0                  4S\R2                  4S\R4                  4S \R6                  4S!\R8                  4S"\R:                  4S#\R<                  4S$\R>                  4S%\R@                  4S&\RB                  4S'\RD                  4S(\RF                  4S)\RH                  4S*\RJ                  4S+\RL                  4S,\RN                  4S-\RP                  4S.\RR                  4S/\RT                  4/5      S4S0 j5       r+S1r,g2)6TestBasicFunctions   c                D   U R                  [        UR                  5      S5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                  S5        g )N   r   MatMul   Add   Softmax)assertEquallennodeop_type)selfgraphs     T/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/test/parser_test.pycheck_graphTestBasicFunctions.check_graph   st    UZZ!,A..9A..6A..	:    c                h    Sn[         R                  R                  U5      nU R                  U5        g )Nz
           agraph (float[N, 128] X, float[128,10] W, float[10] B) => (float[N] C)
           {
              T = MatMul(X, W)
              S = Add(T, B)
              C = Softmax(S)
           }
           )onnxparserparse_graphr   )r   inputr   s      r   test_parse_graph#TestBasicFunctions.test_parse_graph   s-     ''.r   c                    Sn[         R                  R                  U5      nU R                  UR                  S5        U R                  [        UR                  5      S5        U R                  UR                  5        g )Na@  
           <
             ir_version: 7,
             opset_import: [ "" : 10, "com.microsoft": 1]
           >
           agraph (float[N, 128] X, float[128,10] W, float[10] B) => (float[N] C)
           {
              T = MatMul(X, W)
              S = Add(T, B)
              C = Softmax(S)
           }
              r   )	r   r   parse_modelr   
ir_versionr   opset_importr   r   r   r!   models      r   test_parse_model#TestBasicFunctions.test_parse_model!   sb     ''.))1-U//0!4%r   c                f   ^ SmU R                  [        R                  R                  U4S j5        g )Nz
           agraph (float[N, 128] X, float[128,10] W, float[10] B) => (float[N] C)
           {
              T = MatMul[X, W]
              S = Add(T, B)
              C = Softmax(S)
           }
           c                 B   > [         R                  R                  T 5      $ N)r   r   r    r!   s   r   <lambda>;TestBasicFunctions.test_parse_graph_error.<locals>.<lambda>=       DKK,C,CE,Jr   assertRaisesr   r   
ParseErrorr   r!   s    @r   test_parse_graph_error)TestBasicFunctions.test_parse_graph_error3   s*     	KK""$J	
r   c                f   ^ SmU R                  [        R                  R                  U4S j5        g )NaA  
           <
             ir_version: 7,
             opset_import: [ "" : 10   "com.microsoft": 1]
           >
           agraph (float[N, 128] X, float[128,10] W, float[10] B) => (float[N] C)
           {
              T = MatMul(X, W)
              S = Add(T, B)
              C = Softmax(S)
           }
           c                 B   > [         R                  R                  T 5      $ r/   r   r   r&   r0   s   r   r1   ;TestBasicFunctions.test_parse_model_error.<locals>.<lambda>N   r3   r   r4   r7   s    @r   test_parse_model_error)TestBasicFunctions.test_parse_model_error@   s*     	KK""$J	
r   c                r    Sn[         R                  R                  U5      n[        R                  " U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)
           }
        )r   r   r&   r   check_modelr)   s      r   #test_parse_function_with_attributes6TestBasicFunctions.test_parse_function_with_attributesQ   s.    $L ''.E"r   zEagraph (float[N] x) => (float[N] out) { out = custom_domain.Selu(x) }zPagraph (float[N] x) => (float[N] out) { out = custom_domain.Selu<alpha=2.0>(x) }alphag       @zPagraph (float[N] x) => (float[N] out) { out = custom_domain.Selu<gamma=3.0>(x) }gammag      @z[agraph (float[N] x) => (float[N] out) { out = custom_domain.Selu<alpha=2.0, gamma=3.0>(x) })rD   rE   c                  ^
^ Sm
SmS nU
U4S jnST
 ST S3n[         R                  R                  U5      /n[         R                  R                  U5      n[	        SS	S
9[	        SSS
9/n[         R
                  R                  XvUS9n	[        R                  " U	5        U" U	5        U" U	R                  R                  S   U5        g )Ng   ?g   ?c                    U HX  nU R                    Vs/ s H  o3R                  U:X  d  M  UPM     nn[        U5      S:X  d   eUS   R                  X   :X  a  MX   e   g s  snf )Nr   r   )	attributenamer   f)r   
attributeskeyattr
match_attrs        r   expect_custom_node_attributefTestBasicFunctions.test_composite_parse_function_with_attributes.<locals>.expect_custom_node_attribute   sZ    !/3~~R~tcAQd~
R:!+++!!}*/999 "Rs
   A A c                  > [        U R                  S   R                  5      S:X  d   eU R                  S   R                   Vs/ s H  nUR                  S:X  d  M  UPM     nn[        U5      S:X  a  US   R                  T:X  d   eU R                  S   R                   Vs/ s H  nUR                  S:X  d  M  UPM     nn[        U5      S:X  a  US   R                  T:X  d   eg s  snf s  snf )Nr   r   rD   r   rE   )r   	functionsattribute_protorI   rJ   )r*   
attr_protoattr_proto_alphaattr_proto_gammadefault_alphadefault_gammas       r   expect_model_function_attributeiTestBasicFunctions.test_composite_parse_function_with_attributes.<locals>.expect_model_function_attribute   s    uq)99:a??? #(//!"4"D"D "DJ??g- "D   
 '(A-2B12E2G2G=2XXX #(//!"4"D"D "DJ??g- "D   
 '(A-2B12E2G2G=2XXX2X  s   C)C)$C.<C.z
         <
         domain: "custom_domain",
         opset_import: [ "" : 15],
         doc_string: "Test function proto"
         >
           Selu
           <alpha: float=z, gamma: float=a  >
           (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)
           }
            )domainversioncustom_domainr   )rR   opset_importsr   )r   r   parse_functionr    r   helper
make_modelr   rA   r   r   )r   
graph_textexpected_attributerO   rY   function_textrR   r   r`   r*   rW   rX   s             @@r   -test_composite_parse_function_with_attributes@TestBasicFunctions.test_composite_parse_function_with_attributes{   s    . 21	:	Y ( G	4 [[//>?	''
3b"5oqA

 &&m ' 
 	E"'.$U[[%5%5a%8:LMr   c                   [         R                  R                  S5      nU R                  [	        UR
                  5      SS/5        U R                  [	        UR                  5      SS/5        U R                  [        UR                  5      S5        [         R                  R                  US5      nU R                  US5        U R                  UR                  S5        U R                  UR                  S	5        g )
Nz5out1, out2 = SomeDomain.SomeOp <attr1 = 1> (in1, in2)in1in2out1out2r   attr1
SomeDomainSomeOp)r   r   
parse_noder   listr!   outputr   rH   rb   get_node_attr_valuer]   r   )r   r   attr_vals      r   test_parse_node"TestBasicFunctions.test_parse_node   s    {{%%C
 	djj)E5>:dkk*VV,<=T^^,a0;;224A1%l3x0r   c                \   [         R                  R                  S5      nU R                  [	        UR
                  5      / 5        U R                  [	        UR                  5      / 5        [         R                  R                  S5      nU R                  [	        UR
                  5      S/5        U R                  [	        UR                  5      S/5        [         R                  R                  S5      nU R                  [	        UR
                  5      S/5        U R                  [	        UR                  5      S/5        [         R                  R                  S5      nU R                  [	        UR
                  5      SS/5        U R                  [	        UR                  5      SS/5        g )Nz= SomeOp ()z, = SomeOp (,)r[   zx, = SomeOp (y,)yxz,x = SomeOp (,y)r   r   rq   r   rr   r!   rs   r   r   s     r   test_missing_identifier*TestBasicFunctions.test_missing_identifier   s-   {{%%m4djj)2.dkk*B/{{%%&67djj)B40dkk*RD1{{%%&89djj)C51dkk*SE2{{%%&89djj)B95dkk*RI6r   c                   [         R                  R                  S5      nU R                  [	        UR
                  5      S/5        U R                  [	        UR                  5      S/5        [         R                  R                  S5      nU R                  [	        UR
                  5      SS/5        U R                  [	        UR                  5      SS/5        g )Nz"" = SomeOp ("")r[   z"",x = SomeOp ("",y)ry   rz   r{   r|   s     r   test_quoted_empty_identifier/TestBasicFunctions.test_quoted_empty_identifier   s    {{%%&89djj)B40dkk*RD1{{%%&<=djj)B95dkk*RI6r   ))not_a_good_floatT)inf1T)z-inf1T)nan0T)z-nan0T)naninfT)infF)z-infF)infinityF)z	-infinityF)nanF)z-NaNFc                   ^ SU S3mU(       a/  U R                  [        R                  R                  U4S j5        g [        R                  R	                  T5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  [        UR                  R                  5      S5        U R                  [        UR                  R                  S   R                  5      S5        U R                  UR                  R                  S   R                  S   R                  S	5        U R                  UR                  R                  S   R                  S   R                  [        R                  R                   5        U R                  [#        UR                  R                  S   R                  S   R$                  5      [#        ['        U5      5      5        g )
Nz
        <
        ir_version: 8,
        opset_import: ["" : 18, "this" : 1],
        producer_name: "FunctionProtoTest",
        producer_version: "1.0"
        >
        _func () => ()
        {
        tmp = Constant <value_float = z>()
        }
        c                 B   > [         R                  R                  T 5      $ r/   r<   )
model_texts   r   r1   DTestBasicFunctions.test_parse_various_float_values.<locals>.<lambda>  s    0G0G
0Sr      FunctionProtoTestz1.0r   r   value_float)r5   r   r   r6   r&   r   r'   producer_nameproducer_versionr   r   r   rH   rI   typeAttributeProtoFLOATstrrJ   float)r   test_literalexpect_exceptionr*   r   s       @r   test_parse_various_float_values2TestBasicFunctions.test_parse_various_float_values   s   "	' (4n 5	
 &&(S KK++J7EU--q1U002EFU33U;S!1!12A6S!1!1!!4!>!>?CU[[--a0::1=BBMR  #--a055t7J7J7P7P EKK$$Q'11!4667U<=P9Qr   bfloat16bool	complex64
complex128doublefloat16r   float8e4m3fnfloat8e4m3fnuz
float8e5m2float8e5m2fnuzint2int4int8int16int32int64stringuint2uint4uint8uint16uint32uint64
float4e2m1c           	         U[         R                  :X  a  SOSnSU SU SU SU S3	n[        R                  R	                  U5      nU R                  [        UR                  R                  5      S5        g )	Nz{"0"}z{0}z
           <
             ir_version: 10,
             opset_import: [ "" : 19]
           >
           agraph (float[N] X) => (z![N] C)
           <
             z[1] weight = z5
           >
           {
              C = Cast<to=z>(X)
           }
           r   )	r   STRINGr   r   r&   r   r   r   r   )r   rI   itypew
text_graphr   s         r   test_parse_graph_types)TestBasicFunctions.test_parse_graph_types%  s    <  2 22G$
 %)6 *V= $ !' "
 ''
3U[[--.2r    N)r   r   returnNone)r   r   )rd   r   re   dictr   r   )-__name__
__module____qualname____firstlineno__r   r"   r+   r8   r>   rB   r   expandrg   rv   r}   r   r   r   BFLOAT16BOOL	COMPLEX64
COMPLEX128DOUBLEFLOAT16r   FLOAT8E4M3FNFLOAT8E4M3FNUZ
FLOAT8E5M2FLOAT8E5M2FNUZINT2INT4INT8INT16INT32INT64r   UINT2UINT4UINT8UINT16UINT32UINT64
FLOAT4E2M1r   __static_attributes__r   r   r   r
   r
      sc   ;
 &$

"(#T  X
 c#
 c#
 n,	
(BNBN37BN	BN)(BNH
177 	
 ! @ --.[%%&+//0;112{))*++,k''([556{99:;112{99:[%%&[%%&[%%&k''(k''(k''({))*k''(k''(k''({))*{))*{))*;1123	
:3;:3r   r
   __main__r   )	verbosity)
__future__r   unittestr   r   r   r   r   r   TestCaser
   r   mainr   r   r   <module>r      sI    #  '  E ED3** D3N
 zMMA r   