
    SiE                       S SK Jr  S SKrS SKrS SKJr  S SKrS SKrS SKJr  \(       a  S SK	J
r
   " S S\R                  5      r " S S	\R                  5      r " S
 S\R                  5      r " S S\R                  5      r " S S\R                  5      r\R"                  " SSS/ SQS.SSS/ SQS./5       " S S\R                  5      5       r\S:X  a  \R(                  " 5         gg)    )annotationsN)TYPE_CHECKING)defs)Sequencec                  F    \ 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r	g)

TestSchema   c                    [         R                  " S5      nU R                  UR                  [         R                  R
                  R                  5        g )NRelu)r   
get_schemaassertEqualnode_determinismOpSchemaNodeDeterminismDeterministic)selfrelu_schemas     T/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/test/schema_test.pytest_get_schemaTestSchema.test_get_schema   s9    oof-(($--*G*G*U*U	
    c                0    [         R                  " S5        g )NConv)r   r   r   s    r   test_typecheckTestSchema.test_typecheck   s    r   c                   [         R                  " S5      R                  S   R                  nU R	                  [        U5      [        R                  5        U R	                  UR
                  [        R                  R                  5        g )NBatchNormalizationepsilon)	r   r   
attributesdefault_valuer   typeonnxAttributeProtoFLOAT)r   vs     r   test_attr_default_value"TestSchema.test_attr_default_value   s\    OO01<<YGUUa$"5"56!4!4!:!:;r   c                   [         R                  " S5      nU R                  [        UR                  5      [
        R                  5        U R                  UR                  [         R                  R                  R                  5        g )NSelu)r   r   r   r"   function_bodyr#   FunctionProtor   r   r   r   )r   selu_schemas     r   test_function_bodyTestSchema.test_function_body"   sZ    oof-k778$:L:LM(($--*G*G*U*U	
r   c                |   [         R                  " S5      nU R                  UR                  [         R                  R
                  R                  5        U R                  UR                  5        [         R                  " S5      nU R                  UR                  [         R                  R
                  R                  5        U R                  UR                  5        [         R                  " S5      nU R                  UR                  [         R                  R
                  R                  5        U R                  UR                  5        [         R                  " S5      nU R                  UR                  [         R                  R
                  R                  5        U R                  UR                  5        g )NRandomNormalLiker   CastLikeIf)r   r   r   r   r   r   NonDeterministic
assertTruenon_deterministicr   assertFalse)r   rand_schema	bn_schemacast_like_schema	if_schemas        r   test_node_determinism TestSchema.test_node_determinism)   s8   oo&89(($--*G*G*X*X	
 	556OO$89	&&(E(E(S(S	
 	445??:6--MM))77	
 	);;<OOD)	&&MM))::	
 		334r    NreturnNone)
__name__
__module____qualname____firstlineno__r   r   r'   r.   r<   __static_attributes__r>   r   r   r   r      s    
 <

5r   r   c                  \    \ rS rSrS rSS jrSS jrSS jrS rS r	S r
S	 rS
 rS rSrg)TestOpSchemaB   c                    [         R                  " SSS5      nU R                  U[         R                  5        U R                  UR                  [         R                  R
                  R                  5        g Ntest_optest_domain   )r   r   assertIsInstancer   r   r   r   r   schemas     r   	test_initTestOpSchema.test_initC   sQ    y-;fdmm4##T]]%B%B%P%P	
r   c           	        [         R                  " SSS[         R                  R                  SS5      /SS/S4/S9nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        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                  5      S5        U R                  UR                  S	   R                  S5        U R                  UR                  S	   R                  S/5        g )
NrL   rM   rN   input1Ttensor(int64) inputstype_constraintsr   )r   r   FormalParameterr   namedomainsince_versionlenrZ   type_strr[   type_param_strallowed_type_strsr   	op_schemas     r   test_init_with_inputs"TestOpSchema.test_init_with_inputsK   sB   MMMM11(C@A"_$5r:;
	 	3))=900!4Y--.2))!,118<))!,55s;Y778!<33A6EEsK&&q);;o=N	
r   c                V   [         R                  " SSS[         R                  R                  SS5      [         R                  R                  SS5      /[         R                  R                  SS5      [         R                  R                  SS5      /SS	/S
4/[         R                  R                  S[         R                  R                  R
                  S5      /S9n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        U R                  UR                  S   R                  S5        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        U R                  UR                  S   R                  S5        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                  5      S5        U R                  UR                  S   R                  S5        U R                  UR                  S   R                   [         R                  R                  R
                  5        U R                  UR                  S   R"                  S5        g )NrL   rM   rN   rU   rV   input2output1output2rW   rX   attr1attr1 descriptionrZ   outputsr[   r       r   )r   r   r\   	AttributeAttrTypeINTSr   r`   rZ   r]   ra   ro   r[   rb   rc   r    r"   descriptionrd   s     r   +test_init_creates_multi_input_output_schema8TestOpSchema.test_init_creates_multi_input_output_schema_   s   MM--h<--h<
 --i=--i=  #_$5r:;''T]]3388:M
	& 	Y--.2))!,118<))!,55s;))!,118<))!,55s;Y../3**1-22I>**1-66<**1-22I>**1-66<Y778!<33A6EEsK&&q);;o=N	
 	Y112A6--g6;;WE  )..0F0F0K0K	
 	--g6BBDWXr   c                   [         R                  " SSS5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR
                  S5        U R                  [        UR                  5      S5        U R                  [        UR                  5      S5        U R                  [        UR                  5      S5        g )NrL   rM   rN   r   )
r   r   r   r]   r^   r_   r`   rZ   ro   r[   rd   s     r   $test_init_without_optional_arguments1TestOpSchema.test_init_without_optional_arguments   s    MM)]A>	3))=900!4Y--.2Y../3Y778!<r   c                   U R                  [        5         [        R                  " SSS9  S S S 5        U R                  [        5         [        R                  " SSS5        S S S 5        [        R                  " SSS5      nU R	                  UR
                  S5        g ! , (       d  f       Ny= f! , (       d  f       NT= f)NrM   rN   )r^   r_   {   rL   )assertRaises	TypeErrorr   r   r   r]   rP   s     r   	test_nameTestOpSchema.test_name   s~    y)MMa@ *y)MM#}a0 * y-;i0 *)))   B	B0
B-0
B>c                   U R                  [        5         [        R                  " SSS9  S S S 5        U R                  [        5         [        R                  " SSS5        S S S 5        [        R                  " SSS5      nU R	                  UR
                  S5        g ! , (       d  f       Ny= f! , (       d  f       NT= f)NrL   rN   )r]   r_   r{   rM   )r|   r}   r   r   r   r^   rP   s     r   rM   TestOpSchema.test_domain   s~    y)MMy: *y)MM)S!, * y-;6 *)))r   c                    U R                  [        5         [        R                  " SS5        S S S 5        [        R                  " SSS5      nU R	                  UR
                  S5        g ! , (       d  f       NC= frK   )r|   r}   r   r   r   r_   rP   s     r   test_since_versionTestOpSchema.test_since_version   sV    y)MM)]3 * y-;--q1	 *)s   A++
A9c                j    [         R                  " SSSSS9nU R                  UR                  S5        g )NrL   rM   rN   test_doc)doc)r   r   r   r   rP   s     r   r   TestOpSchema.test_doc   s*    y-
KZ0r   c           	        [         R                  R                  SSSS9/n[         R                  " SSSUSS/S	4/S
9n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 )NrU   rV   The first input.r]   ra   rt   rL   rM   rN   rW   rX   rY   r   )	r   r   r\   r   r`   rZ   r]   ra   rt   )r   rZ   rQ   s      r   test_inputsTestOpSchema.test_inputs   s     MM))9K * 

 "_$5r:;
 	V]]+Q/q)..9q)22C8q)557IJr   c           	        [         R                  R                  SSSS9/n[         R                  " SSSUSS/S	4/S
9n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 )Nrj   rV   zThe first output.r   rL   rM   rN   rW   rX   )ro   r[   r   )	r   r   r\   r   r`   ro   r]   ra   rt   )r   ro   rQ   s      r   test_outputsTestOpSchema.test_outputs   s     MM)):M * 
 "_$5r:;
 	V^^,a0*//;*33S9*668KLr   r>   Nr?   )rB   rC   rD   rE   rR   rf   ru   rx   r~   rM   r   r   r   r   rF   r>   r   r   rH   rH   B   s8    

((YT=1721K(Mr   rH   c                      \ rS rSrS rSrg)TestFormalParameter   c           
        SnSnSn[         R                  R                  R                  nSnSn[         R                  R                  R
                  n[         R                  R                  UUUUUUUS9nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  [        5        U R                  UR                  U5        U R                  UR                  U5        U R                  UR                  U5        U R                  UR                   U5        U R                  UR"                  U5        g )NrU   tensor(float)r   TrN   )param_optionis_homogeneous	min_aritydifferentiation_category)r   r   FormalParameterOptionSingleDifferentiationCategoryUnknownr\   r   r]   ra   rO   typessetrt   optionr   r   r   )	r   r]   ra   rt   r   r   r   r   formal_parameters	            r   rR   TestFormalParameter.test_init   s2   "(}}::AA	#'==#H#H#P#P ==88%)%= 9 
 	)..5)22H=.44c:)55{C)00,?)88.I)33Y?557O	
r   r>   N)rB   rC   rD   rE   rR   rF   r>   r   r   r   r      s    
r   r   c                      \ rS rSr\R                  R                  SSS/S4SSSS/S4S/5                SS	 j5       rS
rg)TestTypeConstraintParam   single_typerV   r   Test descriptiondouble_typesrW   )tuplerV   )r   rW   r   c                    [         R                  R                  X#U5      nU R                  UR                  U5        U R                  UR
                  [        U5      5        U R                  UR                  U5        g N)r   r   TypeConstraintParamr   rt   rc   listrb   )r   _rb   allowed_typesrt   type_constraints         r   rR   !TestTypeConstraintParam.test_init   sf    & --;;;
 	44kB::D<OP77Hr   r>   N)
r   strrb   r   r   zSequence[str]rt   r   r@   rA   )rB   rC   rD   rE   parameterizedexpandrR   rF   r>   r   r   r   r      s      ''C/!24FG /2"	 S		
II I %	I
 I 
IIr   r   c                       \ rS rSrS rS rSrg)TestAttributei  c                <   Sn[         R                  R                  R                  nSn[         R                  R	                  XU5      nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  U5        g )N	test_attrzTest attribute)	r   r   rr   STRINGSrq   r   r]   r"   rt   )r   r]   type_rt   	attributes        r   rR   TestAttribute.test_init  su    &&..&MM++DE	./..<r   c                   [         R                  " S5      R                  S   R                  nU R	                  U[
        R                  5        [         R                  R                  SUS5      nU R                  XR                  5        U R                  SUR                  5        U R                  SUR                  5        g )Nr   r   rl   rm   )r   r   r    r!   rO   r#   r$   r   rq   r   r]   rt   )r   r!   r   s      r   test_init_with_default_value*TestAttribute.test_init_with_default_value!  s    OO01<<YGUU 	 	mT-@-@AMM++G]DWX	(?(?@)..1,i.C.CDr   r>   N)rB   rC   rD   rE   rR   r   rF   r>   r   r   r   r     s    =Er   r   CustomOp   rX   )rN   rp         )op_type
op_version	op_domaintrap_op_versiontestc                  v    \ rS rSr% S\S'   S\S'   S\S'   S\S'   SS	 jrSS
 jrS rS rS r	S r
S rS rSrg)TestOpSchemaRegisteri,  r   r   intr   r   z	list[int]r   c                    U R                  [        R                  R                  U R                  U R
                  5      5        g r   )r7   r#   r   hasr   r   r   s    r   setUpTestOpSchemaRegister.setUpE  s'    t||T^^DEr   c                @   / U R                   QU R                  P Hn  n[        R                  " [        R
                  R                  5         [        R
                  R                  U R                  XR                  5        S S S 5        Mp     g ! , (       d  f       M  = fr   )
r   r   
contextlibsuppressr#   r   SchemaErrorderegister_schemar   r   )r   versions     r   tearDownTestOpSchemaRegister.tearDownI  sd    ?--?t?G$$TYY%:%:;		++DLL'>>R <; @;;s   5B
B	c                   / U R                   QU R                  P H  n[        R                  " U R                  U R
                  U5      n[        R                  R                  U5        U R                  [        R                  R                  U R                  XR
                  5      5        M     / U R                   QU R                  P H  n[        R                  R                  WR                  XR                  5      n[        R                  " U R                  U R
                  U5      nU R                  [        U5      [        U5      5        M     g r   )r   r   r   r   r   r   r#   register_schemar5   r   r   r]   r^   r   r   )r   r   re   registered_ops       r   test_register_multi_schema/TestOpSchemaRegister.test_register_multi_schemaO  s    ?--?t?GI
 II%%i0OODIIMM$,,PQ @ @--?t?G II00)9)9M I
 S/Y@ @r   c                   SU R                    SU R                   SU R                    SU R                   S3	n[        R                  R                  U5      n[        R                  " U R                  U R                   U R                  [        R                  R                  SS5      [        R                  R                  SS	5      /[        R                  R                  S
S5      /SS/S4/[        R                  R                  S[        R                  R                  R                  S5      /S9nU R                  [        R                  R                  5         [        R                  R                  USS9  S S S 5        [        R                  R!                  U5        U R"                   Hj  n[        R                  R!                  [        R                  " U R                  U R                   U[        R                  R                  S
S	5      /S95        Ml     [        R                  R                  USS9  g ! , (       d  f       N= f)Nzc
            <
                ir_version: 7,
                opset_import: [
                    "z" : z
                ]
            >
            agraph (float[N, 128] X, int32 Y) => (float[N] Z)
            {
                Z = .z-<attr1=[1,2]>(X, Y)
            }
           rU   rV   ri   int32rj   r   rX   rl   rm   rn   T)check_custom_domain)ro   )r   r   r   r#   parserparse_modelr   r   r\   rq   rr   rs   r|   checkerValidationErrorcheck_modelr   r   )r   inputmodelre   r   s        r   .test_using_the_specified_version_in_onnx_checkCTestOpSchemaRegister.test_using_the_specified_version_in_onnx_checkd  s    nn%T$//): ;
 ^^$Adll^ 4 ''.MMLLNNOO--h<--h@
 --i=  #_$5r:;''T]]3388:M
	$ t||;;<LL$$U$E =		!!),++GII%%LLNN55iI		 , 	  D A =<s   H;;
I	c                r   [         R                  " U R                  U R                  U R                  5      n[
        R                   R                  U5        U R                  [
        R                   R                  5         [
        R                   R                  U5        S S S 5        g ! , (       d  f       g = fr   )	r   r   r   r   r   r#   r   r|   r   rd   s     r   Atest_register_schema_raises_error_when_registering_a_schema_twiceVTestOpSchemaRegister.test_register_schema_raises_error_when_registering_a_schema_twice  so    MMLLNNOO
	
 			!!),tyy445II%%i0 655s   ? B((
B6c                   / U R                   QU R                  P H  n[        R                  " U R                  U R
                  U5      n[        R                  R                  U5        U R                  [        R                  R                  UR                  XR                  5      5        M     [        R                  R                  WR                  U R                  UR                  5        U R                    HF  nU R                  [        R                  R                  UR                  XR                  5      5        MH     [        R                  R                  UR                  U R                  UR                  5      (       af  [        R                  R                  UR                  U R                  UR                  5      nU R                  UR                  U R                  5        g g r   )r   r   r   r   r   r   r#   r   r5   r   r]   r^   r   r   
assertLessr_   )r   r   re   rQ   s       r   $test_deregister_the_specified_schema9TestOpSchemaRegister.test_deregister_the_specified_schema  sD   ?--?t?GI
 II%%i0OODIIMM)..'CSCSTU @ 			##INNDOOYEUEUV++GOODIIMM)..'CSCSTU , 99==):J:JKKYY))1A1AF OOF00$//B	 Lr   c                   U R                  [        R                  R                  5         [        R                  R	                  U R
                  U R                  U R                  5        S S S 5        g ! , (       d  f       g = fr   )r|   r#   r   r   r   r   r   r   r   s    r   @test_deregister_schema_raises_error_when_opschema_does_not_existUTestOpSchemaRegister.test_deregister_schema_raises_error_when_opschema_does_not_exist  sH    tyy445II''doot~~V 655s   A A33
Bc                  ^ [         R                  " U R                  U R                  U R                  5      m[
        R                   R                  T5        [
        R                   R                  TR                  TR                  TR                  5      n[
        R                   R                  TR                  TR                  5      nU4S jnU" [
        R                   R                  5       5      nU" [
        R                   R                  5       5      nU R                  [        U5      S5        U R                  [        U5      S5        U R                  [        U5      [        T5      5        U R                  [        U5      [        T5      5        U R                  [        US   5      [        T5      5        U R                  [        US   5      [        T5      5        g )Nc                j   > U  Vs/ s H   oR                   TR                   :X  d  M  UPM"     sn$ s  snf r   )r]   )schemasopre   s     r   filter_schemaZTestOpSchemaRegister.test_legacy_schema_accessible_after_deregister.<locals>.filter_schema  s(    !(F2GGy~~,EBFFFs   00rN   r   )r   r   r   r   r   r#   r   r   r]   r_   r^   get_all_schemasget_all_schemas_with_historyr   r`   r   )r   schema_aschema_br   schema_cschema_dre   s         @r   .test_legacy_schema_accessible_after_deregisterCTestOpSchemaRegister.test_legacy_schema_accessible_after_deregister  sO   MMLLNNOO
	
 			!!),99''NNI33Y5E5E
 99''		8H8HI	G !!:!:!<= !G!G!IJX*X*XI7XI7Xa[)3y>:Xa[)3y>:r   r>   Nr?   )rB   rC   rD   rE   __annotations__r   r   r   r   r   r   r   r  rF   r>   r   r   r   r   ,  sH    & LONFSA*/Bb1C&W;r   r   __main__)
__future__r   r   unittesttypingr   r   r#   r   collections.abcr   TestCaser   rH   r   r   r   parameterized_classr   rB   mainr>   r   r   <module>r     s    #       (,5"" ,5^VM8$$ VMr
(++ 
>Ih// I8EH%% E, "" "+		
 "+		
$O;8,, O;%$O;d zMMO r   