
    h8%                         S SK r S SKJr  S SKrS SKJrJrJr   " S S\ R                  5      r\S:X  a  \ R                  " 5         gg)    N)parameterized)
GraphProtoOperatorSetIdProtocheckerc            	           \ rS rSrS\SS4S jrSS jrSS jrSS jrSS	 jr	SS
 jr
\R                  " S0 4SSS04SSS04SSSS.4/5      S\S\SS4S j5       rS r\R                  " / SQ5      S 5       rSrg)TestBasicFunctions   graphreturnNc                 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)selfr
   s     O/var/www/fran/franai/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_error1   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%   r/   s   r   r0   ;TestBasicFunctions.test_parse_model_error.<locals>.<lambda>L   r2   r   r3   r6   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_attributesO   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) })rC   rD   
graph_textexpected_attributec                   ^
^ 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   rC   r   rD   )r   	functionsattribute_protorJ   rK   )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   )rS   opset_importsr   )r   r   parse_functionr   r   helper
make_modelr   r@   r
   r   )r   rE   rF   rP   rZ   function_textrS   r
   ra   r)   rX   rY   s             @@r   -test_composite_parse_function_with_attributes@TestBasicFunctions.test_composite_parse_function_with_attributesy   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   rI   rc   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   ))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   r0   DTestBasicFunctions.test_parse_various_float_values.<locals>.<lambda>   s    0G0G
0Sr      FunctionProtoTestz1.0r   r   value_float)r4   r   r   r5   r%   r   r&   producer_nameproducer_versionr   r
   r   rI   rJ   typeAttributeProtoFLOATstrrK   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    )r   N)__name__
__module____qualname____firstlineno__r   r   r!   r*   r7   r=   rA   r   expandr   dictrf   ru   r   __static_attributes__r   r   r   r   r      s    ; ; ;
 &$

"(#T  X
 c#
 c#
 n,	
(BNBN37BN	BN)(BNH
1 	
 ! r   r   __main__)
unittestr   r   r   r   r   TestCaser   r   mainr   r   r   <module>r      sC     '  8 8** D zMMO r   