
    bIg[@                       d dl mZ d dlZd dlZd dlmZ d dlZd dlZd dlmZ  G d dej                        Z
 G d dej                        Z G d	 d
ej                        Z G d dej                        Z G d dej                        Z ej                  dddg dddddg ddg       G d dej                               Zedk(  r ej$                          yy)    )annotationsN)Sequence)defsc                  ,    e Zd ZddZddZddZddZy)
TestSchemac                .    t        j                  d       y )NRelur   
get_schemaselfs    R/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/test/schema_test.pytest_get_schemazTestSchema.test_get_schema           c                .    t        j                  d       y )NConvr
   r   s    r   test_typecheckzTestSchema.test_typecheck   r   r   c                   t        j                  d      j                  d   j                  }| j	                  t        |      t        j                         | j	                  |j
                  t        j                  j                         y )NBatchNormalizationepsilon)	r   r   
attributesdefault_valueassertEqualtypeonnxAttributeProtoFLOAT)r   vs     r   test_attr_default_valuez"TestSchema.test_attr_default_value   s\    OO01<<YGUUa$"5"56!4!4!:!:;r   c                    | j                  t        t        j                  d      j                        t
        j                         y )NSelu)r   r   r   r   function_bodyr   FunctionProtor   s    r   test_function_bodyzTestSchema.test_function_body   s/    (6679K9K	
r   NreturnNone)__name__
__module____qualname__r   r   r    r%    r   r   r   r      s      <

r   r   c                  N    e Zd Zd ZddZddZddZd Zd Zd Z	d Z
d	 Zd
 Zy)TestOpSchemac                r    t        j                  ddd      }| j                  |t         j                         y Ntest_optest_domain   )r   OpSchemaassertIsInstancer   schemas     r   	test_initzTestOpSchema.test_init#   s(    y-;fdmm4r   c           	        t        j                  dddt         j                  j                  dd      gddgdfg      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  t        |j                        d       | j                  |j                  d	   j                  d       | j                  |j                  d	   j                  d       | j                  t        |j                        d       | j                  |j                  d	   j                  d       | j                  |j                  d	   j                  dg       y )
Nr1   r2   r3   input1Ttensor(int64) inputstype_constraintsr   )r   r4   FormalParameterr   namedomainsince_versionlenr?   type_strr@   type_param_strallowed_type_strsr   	op_schemas     r   test_init_with_inputsz"TestOpSchema.test_init_with_inputs(   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                Z   t        j                  dddt         j                  j                  dd      t         j                  j                  dd      gt         j                  j                  dd      t         j                  j                  dd      gdd	gd
fgt         j                  j                  dt         j                  j                  j
                  d      g      }| j                  t        |j                        d       | j                  |j                  d   j                  d       | j                  |j                  d   j                  d       | j                  |j                  d   j                  d       | j                  |j                  d   j                  d       | j                  t        |j                        d       | j                  |j                  d   j                  d       | j                  |j                  d   j                  d       | j                  |j                  d   j                  d       | j                  |j                  d   j                  d       | j                  t        |j                        d       | j                  |j                  d   j                  d       | j                  |j                  d   j                  d	g       | j                  t        |j                        d       | j                  |j                  d   j                  d       | j                  |j                  d   j                   t         j                  j                  j
                         | j                  |j                  d   j"                  d       y )Nr1   r2   r3   r:   r;   input2output1output2r<   r=   attr1attr1 descriptionr?   outputsr@   r      r   )r   r4   rA   	AttributeAttrTypeINTSr   rE   r?   rB   rF   rS   r@   rG   rH   r   r   descriptionrI   s     r   +test_init_creates_multi_input_output_schemaz8TestOpSchema.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                   t        j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  t        |j                        d       | j                  t        |j                        d       | j                  t        |j                        d       y )Nr1   r2   r3   r   )
r   r4   r   rB   rC   rD   rE   r?   rS   r@   rI   s     r   $test_init_without_optional_argumentsz1TestOpSchema.test_init_without_optional_argumentsf   s    MM)]A>	3))=900!4Y--.2Y../3Y778!<r   c                n   | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  ddd       d d d        t        j                  ddd      }| j	                  |j
                  d       y # 1 sw Y   rxY w# 1 sw Y   IxY w)Nr2   r3   )rC   rD   {   r1   )assertRaises	TypeErrorr   r4   r   rB   r6   s     r   	test_namezTestOpSchema.test_nameo   s    y) 	AMMa@	Ay) 	1MM#}a0	1 y-;i0	A 	A	1 	1   BB+B(+B4c                n   | j                  t              5  t        j                  dd       d d d        | j                  t              5  t        j                  ddd       d d d        t        j                  ddd      }| j	                  |j
                  d       y # 1 sw Y   rxY w# 1 sw Y   IxY w)Nr1   r3   )rB   rD   r]   r2   )r^   r_   r   r4   r   rC   r6   s     r   r2   zTestOpSchema.test_domainy   s    y) 	;MMy:	;y) 	-MM)S!,	- y-;6	; 	;	- 	-ra   c                    | j                  t              5  t        j                  dd       d d d        t        j                  ddd      }| j	                  |j
                  d       y # 1 sw Y   =xY wr0   )r^   r_   r   r4   r   rD   r6   s     r   test_since_versionzTestOpSchema.test_since_version   s]    y) 	4MM)]3	4 y-;--q1		4 	4s   A))A2c                n    t        j                  dddd      }| j                  |j                  d       y )Nr1   r2   r3   test_doc)doc)r   r4   r   rg   r6   s     r   rf   zTestOpSchema.test_doc   s*    y-
KZ0r   c           	        t         j                  j                  ddd      g}t        j                  ddd|ddgd	fg
      }| j                  t	        |j
                        d       | j                  |j
                  d   j                  d       | j                  |j
                  d   j                  d       | j                  |j
                  d   j                  d       y )Nr:   r;   The first input.rB   rF   rX   r1   r2   r3   r<   r=   r>   r   )	r   r4   rA   r   rE   r?   rB   rF   rX   )r   r?   r7   s      r   test_inputszTestOpSchema.test_inputs   s     MM))9K * 

 "_$5r:;
 	V]]+Q/q)..9q)22C8q)557IJr   c           	        t         j                  j                  ddd      g}t        j                  ddd|ddgd	fg
      }| j                  t	        |j
                        d       | j                  |j
                  d   j                  d       | j                  |j
                  d   j                  d       | j                  |j
                  d   j                  d       y )NrN   r;   zThe first output.rj   r1   r2   r3   r<   r=   )rS   r@   r   )	r   r4   rA   r   rE   rS   rB   rF   rX   )r   rS   r7   s      r   test_outputszTestOpSchema.test_outputs   s     MM)):M * 
 "_$5r:;
 	V^^,a0*//;*33S9*668KLr   Nr&   )r)   r*   r+   r8   rK   rY   r[   r`   r2   rd   rf   rk   rm   r,   r   r   r.   r.   "   s8    5

((YT=1721K(Mr   r.   c                      e Zd Zd Zy)TestFormalParameterc           	     |   d}d}d}t         j                  j                  j                  }d}d}t         j                  j                  j
                  }t         j                  j                  |||||||      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       y )Nr:   tensor(float)ri   Tr3   )param_optionis_homogeneous	min_aritydifferentiation_category)r   r4   FormalParameterOptionSingleDifferentiationCategoryUnknownrA   r   rB   rF   rX   optionrs   rt   ru   )	r   rB   rF   rX   rr   rs   rt   ru   formal_parameters	            r   r8   zTestFormalParameter.test_init   s   "(}}::AA	#'==#H#H#P#P ==88%)%= 9 
 	)..5)22H=)55{C)00,?)88.I)33Y?557O	
r   N)r)   r*   r+   r8   r,   r   r   ro   ro      s    
r   ro   c                      e Zd Zej                  j	                  dddgdfddddgdfdg      	 	 	 	 	 	 	 	 	 	 d
d       Zy	)TestTypeConstraintParamsingle_typer;   rq   Test descriptiondouble_typesr<   )tupler;   )rq   r<   r   c                    t         j                  j                  |||      }| j                  |j                  |       | j                  |j
                  t        |             | j                  |j                  |       y N)r   r4   TypeConstraintParamr   rX   rH   listrG   )r   _rG   allowed_typesrX   type_constraints         r   r8   z!TestTypeConstraintParam.test_init   sh    & --;;M;
 	44kB::D<OP77Hr   N)
r   strrG   r   r   zSequence[str]rX   r   r'   r(   )r)   r*   r+   parameterizedexpandr8   r,   r   r   r}   r}      s      ''C/!24FG /2"	 S		
II I %	I
 I 
IIr   r}   c                      e Zd Zd Zd Zy)TestAttributec                >   d}t         j                  j                  j                  }d}t         j                  j	                  |||      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  |       y )N	test_attrzTest attribute)	r   r4   rV   STRINGSrU   r   rB   r   rX   )r   rB   type_rX   	attributes        r   r8   zTestAttribute.test_init   sw    &&..&MM++D%E	./..<r   c                   t        j                  d      j                  d   j                  }| j	                  |t
        j                         t         j                  j                  d|d      }| j                  ||j                         | j                  d|j                         | j                  d|j                         y )Nr   r   rP   rQ   )r   r   r   r   r5   r   r   r4   rU   r   rB   rX   )r   r   r   s      r   test_init_with_default_valuez*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   N)r)   r*   r+   r8   r   r,   r   r   r   r      s    =Er   r   CustomOp   r=   )r3   rT         )op_type
op_version	op_domaintrap_op_versiontestc                  j    e Zd ZU ded<   ded<   ded<   ded<   ddZdd	Zd
 Zd Zd Zd Z	d Z
d Zy)TestOpSchemaRegisterr   r   intr   r   z	list[int]r   c                    | j                  t        j                  j                  | j                  | j
                               y r   )assertFalser   r   hasr   r   r   s    r   setUpzTestOpSchemaRegister.setUp!  s'    t||T^^DEr   c                0   g | j                   | j                  D ]m  }t        j                  t        j
                  j                        5  t        j
                  j                  | j                  || j                         d d d        o y # 1 sw Y   zxY wr   )
r   r   
contextlibsuppressr   r   SchemaErrorderegister_schemar   r   )r   versions     r   tearDownzTestOpSchemaRegister.tearDown%  s|    ?--?t? 	SG$$TYY%:%:; S		++DLL'4>>RS S	SS Ss   6BB	c                   g | j                   | j                  D ]  }t        j                  | j                  | j
                  |      }t        j                  j                  |       | j                  t        j                  j                  | j                  || j
                                g | j                   | j                  D ]  }t        j                  j                  j                  ||j                        }t        j                  | j                  | j
                  |      }| j                  t        |      t        |              y r   )r   r   r   r4   r   r   r   register_schema
assertTruer   r   rB   rC   r   r   )r   r   rJ   registered_ops       r   test_register_multi_schemaz/TestOpSchemaRegister.test_register_multi_schema+  s   ?--?t? 	RGI
 II%%i0OODIIMM$,,PQ	R @--?t? 
	AG II00)9)9M I
 S/Y@
	Ar   c                   d| j                    d| j                   d| j                    d| j                   d	}t        j                  j                  |      }t        j                  | j                  | j                   | j                  t        j                  j                  dd      t        j                  j                  dd	      gt        j                  j                  d
d      gddgdfgt        j                  j                  dt        j                  j                  j                  d      g      }| j                  t        j                  j                        5  t        j                  j                  |d       d d d        t        j                  j!                  |       | j"                  D ]k  }t        j                  j!                  t        j                  | j                  | j                   |t        j                  j                  d
d	      g             m t        j                  j                  |d       y # 1 sw Y   xY w)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)
            }
           r:   r;   rM   int32rN   rq   r=   rP   rQ   rR   T)check_custom_domain)rS   )r   r   r   r   parserparse_modelr   r4   rA   rU   rV   rW   r^   checkerValidationErrorcheck_modelr   r   )r   inputmodelrJ   r   s        r   .test_using_the_specified_version_in_onnx_checkzCTestOpSchemaRegister.test_using_the_specified_version_in_onnx_check@  s    nn%T$//): ;
 ^^$Adll^ 4 ''.MMLLNNOO--h<--h@
 --i=  #_$5r:;''T]]3388:M
	$ t||;;< 	FLL$$U$E	F		!!),++ 
	GII%%LLNN55iI		
	 	  D A	F 	Fs   "IIc                f   t        j                  | j                  | j                  | j                        }t
        j                   j                  |       | j                  t
        j                   j                        5  t
        j                   j                  |       d d d        y # 1 sw Y   y xY wr   )	r   r4   r   r   r   r   r   r^   r   rI   s     r   Atest_register_schema_raises_error_when_registering_a_schema_twicezVTestOpSchemaRegister.test_register_schema_raises_error_when_registering_a_schema_twiceq  sx    MMLLNNOO
	
 			!!),tyy445 	1II%%i0	1 	1 	1s   > B''B0c                   g | j                   | j                  D ]  }t        j                  | j                  | j
                  |      }t        j                  j                  |       | j                  t        j                  j                  |j                  ||j                                t        j                  j                  j                  | j                  |j                         | j                   D ]F  }| j                  t        j                  j                  |j                  ||j                               H t        j                  j                  |j                  | j                  |j                        rft        j                  j                  |j                  | j                  |j                        }| j                  |j                  | j                         y y r   )r   r   r   r4   r   r   r   r   r   r   rB   rC   r   r   
assertLessrD   )r   r   rJ   r7   s       r   $test_deregister_the_specified_schemaz9TestOpSchemaRegister.test_deregister_the_specified_schema{  sR   ?--?t? 	VGI
 II%%i0OODIIMM)..'9CSCSTU	V 			##INNDOOYEUEUV++ 	VGOODIIMM)..'9CSCSTU	V 99==):J:JKYY))1A1AF OOF00$//B	 Lr   c                    | j                  t        j                  j                        5  t        j                  j	                  | j
                  | j                  | j                         d d d        y # 1 sw Y   y xY wr   )r^   r   r   r   r   r   r   r   r   s    r   @test_deregister_schema_raises_error_when_opschema_does_not_existzUTestOpSchemaRegister.test_deregister_schema_raises_error_when_opschema_does_not_exist  sU    tyy445 	WII''doot~~V	W 	W 	Ws   A A33A<c                   t        j                  | j                  | j                  | j                        t
        j                   j                         t
        j                   j                  j                  j                  j                        }t
        j                   j                  j                  j                        }fd} |t
        j                   j                               } |t
        j                   j                               }| j                  t        |      d       | j                  t        |      d       | j                  t        |      t                     | j                  t        |      t                     | j                  t        |d         t                     | j                  t        |d         t                     y )Nc                b    | D cg c]  }|j                   j                   k(  s|  c}S c c}w r   )rB   )schemasoprJ   s     r   filter_schemazZTestOpSchemaRegister.test_legacy_schema_accessible_after_deregister.<locals>.filter_schema  s&    !(F2BGGy~~,EBFFFs   ,,r3   r   )r   r4   r   r   r   r   r   r   rB   rD   rC   get_all_schemasget_all_schemas_with_historyr   rE   r   )r   schema_aschema_br   schema_cschema_drJ   s         @r   .test_legacy_schema_accessible_after_deregisterzCTestOpSchemaRegister.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   Nr&   )r)   r*   r+   __annotations__r   r   r   r   r   r   r   r   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   TestCaser   r.   ro   r}   r   parameterized_classr   r)   mainr,   r   r   <module>r      s    #      
"" 
$SM8$$ SMl
(++ 
<Ih// I8EH%% E, #"" "+		
 "+		
$O;8,, O;%$O;d zHMMO r   