
    bIgw                        d dl mZ d dl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Z
d dl
mZmZmZmZmZmZmZ  G d dej&                        Zedk(  r ej,                          yy)    )annotationsN)Sequence)
GraphProtoSparseTensorProtoTensorProtocheckerhelpernumpy_helpershape_inferencec                     e Zd Zed.d       Z	 d/	 	 	 	 	 	 	 	 	 	 	 d0dZd1dZd1dZd1dZd1dZ	d1dZ
d1dZd1d	Zd1d
Zd1dZd1dZd1dZd1dZd1dZd1dZd1dZd1dZd1dZd1dZd1dZd1dZed.d       Zd1dZd1dZd1dZd1dZd1dZd1dZ d1dZ!d1dZ"d1d Z#d1d!Z$d1d"Z%d1d#Z&d1d$Z'd1d%Z(d1d&Z)d1d'Z*d1d(Z+d) Z,d* Z-d+ Z.d, Z/y-)2TestCheckerc                   t         j                  j                  dd      j                  t         j                        }t        j                  dt        j                  d|j                  d      j                               S )N      test)r   r      name	data_typedimsvalsnprandomrandnastypefloat32r	   make_tensorr   FLOATreshapetolistselfnp_arrays     S/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/test/checker_test.py_sample_float_tensorz TestChecker._sample_float_tensor   ^    99??1a(//

;!!!''!!!$++-	
 	
    c                d   t               }|j                  j                  |       t        |      }|j                  j                  t        j                  |t        j                  |f|             |j                  j                  t        j                  dt        j                  ||             |S )Nspind)r   r   extendlenvaluesCopyFromr	   r   r   INT64indices)r#   shaper-   indices_shaper0   r   sparsennzs           r%   make_sparsezTestChecker.make_sparse%   s     #$5!&kt[%6%6G	
 	w(9(9='R	
 r(   c                d    t        j                  ddgdgd      }t        j                  |       y )NReluXYr   r   r	   	make_noder   
check_noder#   nodes     r%   test_check_nodezTestChecker.test_check_node9   s*    u6B4 r(   c                V   t        j                  dg dgd      }t        j                  |       t        j                  ddgdgd      }t        j                  |       t        j                  ddgdgd      }| j	                  t        j
                  t        j                  |       y )NGivenTensorFillr9   r   r:    r7   )r	   r<   r   r=   assertRaisesValidationErrorr>   s     r%   %test_check_node_input_marked_optionalz1TestChecker.test_check_node_input_marked_optional>   s     12u6J4   1B4#VL4  se&A'1173E3EtLr(   c                r   d}t        j                  dd      t        j                  |d      g}d}ddg}dg}t        j                  d	dgd
g|      t        j                  d	dgdg|      t        j                  dd
dgdg|      g}t        j                  ||||||      }t	        j
                  |       y )NlocalrC         func_nested_identity_addabcfunc_identitya1)domainb1func_add)r	   make_opsetidr<   make_functionr   check_function)r#   func_domainfunc_nested_opset_importsfunc_nested_identity_add_namefunc_nested_identity_add_inputs func_nested_identity_add_outputsfunc_nested_identity_add_nodesrK   s           r%   test_check_function_nestedz&TestChecker.test_check_function_nestedK   s    B'Q/%
!
 )C%+.*',/5(_sedVKP_sedVKPZ$u[Q*
&
 $*#7#7)+,*%$
  	78r(   c                   t         j                  j                         d_        dt        j
                  j                         i_        t         j                  j                         dfd}t        j                  ddgdgd      }t        j                  |gdt        j                  dt        j                  d	d
g      gt        j                  dt        j                  d	d
g      g      } ||       |j                  j!                  | j"                  g       d|j                  d   _        | j'                  t         j(                  ||       d|j                  d   _         ||       y )Nr   rC   c                4    t        j                  |        y N)r   check_graph)gctxlex_ctxs    r%   check_ir_version_3zETestChecker.test_check_graph_ir_version_3.<locals>.check_ir_version_3k   s    30r(   r7   r8   r9   r   r:   rJ   r   no-existr   )rb   r   returnNone)r   CCheckerContext
ir_versiononnxdefsonnx_opset_versionopset_importsLexicalScopeContextr	   r<   
make_graphmake_tensor_value_infor   r   initializerr+   r&   r   rD   rE   )r#   re   r?   graphrc   rd   s       @@r%   test_check_graph_ir_version_3z)TestChecker.test_check_graph_ir_version_3d   s-   ii&&(!=!=!?@))//1	1 u6B!!F**30A0AAq6JK**30A0AAq6JK	
 	5!  $";";!<=$.!!'113EuM$'!!5!r(   c                   t        j                  ddgdgd      }t        j                  |gdt        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |       |j                  j                  | j                  g       d|j                  d	   _        t        j                  |       d|j                  d	   _        t        j                  |       y )
Nr7   r8   r9   r   r:   rJ   r   rf   r   )r	   r<   rq   rr   r   r   r   ra   rs   r+   r&   r   r#   r?   rt   s      r%   test_check_graphzTestChecker.test_check_graph   s    u6B!!F**30A0AAq6JK**30A0AAq6JK	
 	E"  $";";!<=$.!!E"$'!!E"r(   c                   t        j                  dddgdgd      }t        j                  ddgdgd	      }t        j                  ||gd
t        j                  dt        j
                  ddg      t        j                  dt        j                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |d
      }| j                  t        j                  t        j                  |d       t        j                  |       t        j                  ||gd
t        j                  dt        j
                  ddg      t        j                  dt        j                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |d
      }| j                  t        j                  t        j                  |d       t        j                  |       y )NDivr8   r9   Ztest_divr:   IdentityWtest_identityr   rJ   r   producer_nameT)r	   r<   rq   rr   r   r   BOOL
make_modelrD   r   InferenceErrorr   check_modelra   INT32)r#   node_divnode_identityrt   models        r%   test_check_graph_typesz"TestChecker.test_check_graph_types   s   
 ##EC:u:N((cUSEX!!}%--c;3D3Dq!fM--c;3C3CaVL
 **30A0AAq6JK	
 !!%v>**G,?,?	
 	E"!!}%--c;3D3Dq!fM--c;3D3Dq!fM
 **30A0AAq6JK	
 !!%v>**G,?,?	
 	E"r(   c                    t        j                  ddgdgd      }t        j                  |gdt        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |       |j                  j                  | j                  g       d|j                  d	   _        | j                  t        j                  t        j                  |       y )
Nr7   r8   r9   r   r:   rJ   r   rC   r   )r	   r<   rq   rr   r   r   r   ra   rs   r+   r&   r   rD   rE   rw   s      r%   'test_check_graph_empty_initializer_namez3TestChecker.test_check_graph_empty_initializer_name   s    u6B!!F**30A0AAq6JK**30A0AAq6JK	
 	E" 	  $";";!<=$&!!'1173F3FNr(   c                   t        j                  ddgdgd      }t        j                  |gdt        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |       | j                  dgg d	d
gg dd      }|j                  j                  |g       | j                  t        j                  t        j                  |       y )Nr7   r8   r9   r   r:   rJ   r   d            r   	      Q   rC   )r	   r<   rq   rr   r   r   r   ra   r5   sparse_initializerr+   rD   rE   r#   r?   rt   r3   s       r%   .test_check_graph_empty_sparse_initializer_namez:TestChecker.test_check_graph_empty_sparse_initializer_name   s    u6B!!F**30A0AAq6JK**30A0AAq6JK	
 	E" !!3%sKL  ''1'1173F3FNr(   c                n   t        j                  ddgdgd      }t        j                  |gdt        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |       |j                  j                  | j                  g       d|j                  d   _        | j                  d	gg d
dgg dd      }|j                  j                  |g       | j                  t        j                  t        j                  |       y )Nr7   r8   r9   r   r:   rJ   r   r   r   r   r   r   )r	   r<   rq   rr   r   r   r   ra   rs   r+   r&   r   r5   r   rD   rE   r   s       r%   %test_check_graph_duplicate_init_namesz1TestChecker.test_check_graph_duplicate_init_names   s   u6B!!F**30A0AAq6JK**30A0AAq6JK	
 	E"  $";";!<=$'!! !!3%sKM  ''1'1173F3FNr(   c                    t        j                  ddgdgd      }t        j                  |gdg t        j                  dt        j
                  ddg      g      }t        j                  |       y )NrB   rC   r9   r   r:   rJ   r   )r	   r<   rq   rr   r   r   r   ra   rw   s      r%   test_check_graph_optional_inputz+TestChecker.test_check_graph_optional_input   sg     1B4#VL!!F**30A0AAq6JK	
 	E"r(   c                   t        j                  ddgdgd      }t        j                  ddgdgd      }t        j                  ||gdt        j                  dt        j
                  d	d
g      t        j                  dt        j
                  d	d
g      gt        j                  dt        j
                  d	d
g      g      }| j                  t        j                  t        j                  |       y )Nr7   r8   r{   relu1r:   r9   relu2r   rJ   r   inputsoutputs
r	   r<   rq   rr   r   r   rD   r   rE   ra   )r#   r   r   rt   s       r%   test_check_graph_ssaz TestChecker.test_check_graph_ssa   s      #GD  #GD!!EN--c;3D3Dq!fM--c;3D3Dq!fM 2238I8IAq6RS
 	'1173F3FNr(   c                   t        j                  ddgdgdd      }t        j                  ddgdgdd	      }t        j                  ||gd
t        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }| j                  t        j                  t        j                  |       y )NScaler8   r9          @n1scaler   r{         @n2r   rJ   r   r   r   )r#   r   r   rt   s       r%   %test_check_graph_topologically_sortedz1TestChecker.test_check_graph_topologically_sorted
  s    guse3TJguse3TJ!!H11#{7H7H1a&QR2238I8IAq6RS	
 	'1173F3FNr(   c                \   t        j                  ddgdgd      }t        j                  |gdt        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |d      }t        j                  |       y 	Nr7   r8   r9   r   r:   rJ   r   r   )	r	   r<   rq   rr   r   r   r   r   r   r#   r?   rt   r   s       r%   test_check_modelzTestChecker.test_check_model  s    u6B!!F**30A0AAq6JK**30A0AAq6JK	
 !!%v>E"r(   c                x   t        j                  ddgdgd      }t        j                  |gdt        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |d      }t        j                  |j                                y r   )
r	   r<   rq   rr   r   r   r   r   r   SerializeToStringr   s       r%   test_check_serialized_modelz'TestChecker.test_check_serialized_model"  s    u6B!!F**30A0AAq6JK**30A0AAq6JK	
 !!%v>E3356r(   c                   t        j                  ddgdgd      }t        j                  |gdt        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  d	d      }t        j                  |d|g
      }t        j                  |       y )NPadr8   r9   )r   r   r   r   )paddingsr   rJ   r   rC   r   ro   
r	   r<   rq   rr   r   r   rT   r   r   r   r#   r?   rt   onnx_idr   s        r%   test_check_old_modelz TestChecker.test_check_old_model.  s    uselK!!F**30A0AAq6JK**30A0AAq6JK	
 %%b!,!!%vgYWE"r(   c                D   | j                   }t        j                  |       t        j                  j                  dd      j                  t        j                        j                         |_	        | j                  t        j                  t        j                  |       y )Nr   r   )r&   r   check_tensorr   r   r   r   r   tobytesraw_datarD   rE   r#   tensors     r%   test_check_tensorzTestChecker.test_check_tensor;  sg    **V$))//!Q/66rzzBJJL'1173G3GPr(   c                b   t               }t         j                  |_        |j                  j	                  d       |j
                  j	                  d       t        j                  |       |j
                  d d = d|_        | j                  t        j                  t        j                  |       y )NrJ   s   Test)r   STRINGr   r   appendstring_datar   r   r   rD   rE   r   s     r%   test_check_string_tensorz$TestChecker.test_check_string_tensorB  s~    &--1!!'*V$q!!'1173G3GPr(   c                    | j                   }t        j                  |_        | j	                  t
        j                  t
        j                  |       y r`   )r&   r   r   r   rD   r   rE   r   r   s     r%   "test_check_tensor_mismatched_fieldz.TestChecker.test_check_tensor_mismatched_fieldN  s9    **&,,'1173G3GPr(   c                n   t        j                  ddgdgdd      }t        j                  ddgdgdd	      }t        j                  ||gd
g t        j                  dt        j
                  ddg      g      }t        j                  ddgdg||      }t        j                  |gdt        j                  dt        j                  dg      t        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  |       y Nr   r8   r9   r   r   r   r{   r   r   nestedrJ   r   r   Ifcond)then_branchelse_branchr   )	r	   r<   rq   rr   r   r   r   r   ra   )r#   r   r   rt   i1s        r%   test_nested_graphzTestChecker.test_nested_graphS  s   guse3TJguse3TJ!!H2238I8IAq6RS	
 6(SEu%
 !!D--fk6F6FL--c;3D3Dq!fM 2238I8IAq6RS
 	E"r(   c                   t        j                  ddgdgdd      }t        j                  ddgdgdd	      }t        j                         }d|_        t        j
                  ||gd
g t        j                  dt        j                  ddg      g      }t        j                  ddgdg||      }t        j
                  |gdt        j                  dt        j                  dg      t        j                  dt        j                  ddg      gt        j                  dt        j                  ddg      g      }t        j                  |       y r   )r	   r<   rl   ValueInfoProtor   rq   rr   r   r   r   r   ra   )r#   r   r   input_xrt   r   s         r%   .test_nested_graph_without_subgraph_input_shapez:TestChecker.test_nested_graph_without_subgraph_input_shapen  s2   guse3TJguse3TJ%%'!!H2238I8IAq6RS	
 6(SEu%
 !!D--fk6F6FL--c;3D3Dq!fM 2238I8IAq6RS
 	E"r(   c                   t         j                  j                  dd      j                  t         j                        }t        j                  dt        j                  d|j                  d      j                               S )Nr   r   r   )r   r   r   r   r"   s     r%   _sample_0_elem_tensorz!TestChecker._sample_0_elem_tensor  r'   r(   c                F    | j                   }t        j                  |       y r`   )r   r   r   r   s     r%   test_check_tensor_zero_elemz'TestChecker.test_check_tensor_zero_elem  s    ++V$r(   c                h    t        j                  dg dgdddg      }t        j                  |       y )NConstantFillr9   r   rJ   r   )r   r1   r;   r>   s     r%   "test_check_removed_experimental_opz.TestChecker.test_check_removed_experimental_op  s/    SEqRSfU4 r(   c                   t        j                  ddgdgdd      }t        j                  |gdt        j                  dt        j
                  ddg      gt        j                  dt        j
                  ddg      g      }t        j                  dd      }t        j                  |d|g	      }t        j                  |       y )
N
NonExistOpr8   r9   r   ztest.domain)r   rQ   rJ   r   r   r   r   s        r%   -test_skip_schema_check_on_non_standard_domainz9TestChecker.test_skip_schema_check_on_non_standard_domain  s    3%#VM
 !!F**30A0AAq6JK**30A0AAq6JK	
 %%mQ7!!%vgYWE"r(   c                b    | j                  dgg ddgg d      }t        j                  |       y )Nr   r   r   r   r5   r   check_sparse_tensorr#   r3   s     r%   test_check_sparse_tensorz$TestChecker.test_check_sparse_tensor  s*    !!3%sKH##F+r(   c                    | j                  dgg ddgg d      }| j                  t        j                  t        j                  |       y )Nr   r   r   )r   r      r5   rD   r   rE   r   r   s     r%   &test_check_sparse_tensor_invalid_indexz2TestChecker.test_check_sparse_tensor_invalid_index  s;    !!3%sLI'1173N3NPVWr(   c                    | j                  dgg ddgg d      }| j                  t        j                  t        j                  |       y )Nr   r   r   )r   r   r   r   r   s     r%   "test_check_sparse_tensor_unorderedz.TestChecker.test_check_sparse_tensor_unordered  s;    !!3%sKH'1173N3NPVWr(   c                f    | j                  ddgg dddgg d      }t        j                  |       y )N
   r   r   r   r   r   r         rJ   r   r   s     r%   #test_check_sparse_tensor_coo_formatz/TestChecker.test_check_sparse_tensor_coo_format  s/    !!2r(L1a&BTU##F+r(   c                    | j                  ddgg dddgg d      }| j                  t        j                  t        j                  |       y )Nr   r   r   r   )r   r   r   r   r   rJ   r   r   s     r%   1test_check_sparse_tensor_coo_format_invalid_indexz=TestChecker.test_check_sparse_tensor_coo_format_invalid_index  s@    !!2r(L1a&BUV'1173N3NPVWr(   c                    | j                  ddgg dddgg d      }| j                  t        j                  t        j                  |       y )Nr   r   r   r   r   r   r   s     r%   1test_check_sparse_tensor_coo_format_invalid_shapez=TestChecker.test_check_sparse_tensor_coo_format_invalid_shape  s@    !!2r(L1a&BTU'1173N3NPVWr(   c                    | j                  ddgg dddgg d      }| j                  t        j                  t        j                  |       y )Nr   r   r   rJ   )r   rJ   r   r   r   s     r%   0test_check_sparse_tensor_coo_format_invalid_dim2z<TestChecker.test_check_sparse_tensor_coo_format_invalid_dim2  s?    !!2r(L1a&)L'1173N3NPVWr(   c                   d}d}t        j                  dt        j                  |g      }| j	                  ||gg ddgg d      }t        j
                  dg dg|	      }t        j                  d
t        j                  |g      }t        j
                  dddgd
g      }t        j                  ||gd|g|g      }t        j                  |       y )N   r   r8   )r   r   rJ   r   )r      %   Constantri   )sparse_valuer9   MatMulsparse_matmul)	r	   rr   r   r   r5   r<   rq   r   ra   )	r#   MNr8   sparse_tensornode1r9   node2rt   s	            r%   test_check_sparse_matmulz$TestChecker.test_check_sparse_matmul  s    ))#{/@/@1#F((!QQCM  R#]S))#{/@/@1#F  C:u=!!5%./A3LE"r(   c                   d}t        j                  dt        j                  |g      }t        j                  dt        j                  |g      }t        j                  dt        j                  |g      }t        j
                  dd      }t        j                  dddgdg      }t        j                  |gd||g|g      }t        j                  |d	|g
      }| j                  t        j                  t        j                  |d       y Nr   r8   r9   r{   rC   r   Addtest_add_inputr   r   T)r	   rr   r   r   r   rT   r<   rq   r   rD   r   r   r   r   	r#   r  r8   r9   r{   r   r?   rt   r   s	            r%   'test_check_model_unsupported_input_typez3TestChecker.test_check_model_unsupported_input_type  s    ))#{/?/?!E))#{/@/@1#F))#{/@/@1#F%%b!,SzC59!!4&*:QFQCH!!%vgYW**G,?,?	
r(   c                   d}t        j                  dt        j                  |g      }t        j                  dt        j                  |g      }t        j                  dt        j                  |g      }t        j
                  dd      }t        j                  dddgdg      }t        j                  |gd||g|g      }t        j                  |d	|g
      }| j                  t        j                  t        j                  |d       y r	  )r	   rr   r   r   r   rT   r<   rq   r   rD   r   r   r   r   r  s	            r%   "test_check_model_inconsistent_typez.TestChecker.test_check_model_inconsistent_type  s    ))#{/@/@1#F))#{/@/@1#F))#{/@/@1#F%%b!,SzC59!!4&*:QFQCH!!%vgYW**G,?,?	
r(   c                   d}t        j                  dt        j                  |g      }t        j                  dt        j                  |g      }t        j                  dt        j                  |g      }t        j
                  dd      }t        j                  dddgdg      }t        j                  |gd||g|g      }t        j                  |d	|g
      }| j                  t        j                  t        j                  |d       y r	  )r	   rr   r   r   r   rT   r<   rq   r   rD   r   r   r   r   r  s	            r%   (test_check_model_unsupported_output_typez4TestChecker.test_check_model_unsupported_output_type  s    ))#{/@/@1#F))#{/@/@1#F))#{/?/?!E%%b!,SzC59!!4&*:QFQCH!!%vgYW**G,?,?	
r(   c           #     	   t        j                  t        j                  dd      gdt        j                  dt        j                  dt
        j                  dg      t        j                  dt
        j                  g       t        j                  d	t
        j                  dg      t        j                  d
t
        j                  g       t        j                  dt
        j                  dg      gt        j                  dt
        j                  dg      gt        j                  t        j                  dt        j                        d      t        j                  t        j                  dgt        j                        d	      t        j                  t        j                  dt        j                        d
      t        j                  t        j                  dgt        j                        d      gt        j                   ddgdgddt
        j                        t        j                   ddd
gdgdd      t        j                   ddgdgdd      t        j                   dg ddd gd!t        j                  d"t        j                  d#t
        j                  g       t        j                  d$t
        j"                  g       t        j                  d%t
        j                  dg      t        j                  d&t
        j                  dg      t        j                  d't
        j                  g       gt        j                  d(t
        j"                  g       t        j                  d)t
        j                  dg      t        j                  d&t
        j                  dg      gt        j                  t        j                  dt        j                        d'      gt        j                   d*d%d&gd)gd+,      t        j                   dd)gd-gd.dt
        j                        t        j                   dd-d'gd/gd0d      t        j                   dd/gd(gd1d      g2      3      t        j                   d4dgd5gd6d7g8      t        j                   d9d5d	gdgd9,      g2      :      }t%        j&                  |d;<       y )=NrC   r   r   	test-loopinput_0rJ   r1   while_maximum_iterations_0const_fold_opt__18const_fold_opt__17Const_0output_0    dtyper:         $@Castwhile_cond_158_while_Less__13_0while_cond_158_while_Less__13r   r   r   rQ   toLesswhile_cond_158_while_Less_0while_cond_158_while_Lessr   r   r   rQ   Squeezewhile_cond_158_while_Squeeze_0while_cond_158_while_SqueezeLoopr  r*  r  r  while_loop_0while_loop_1
while_loop
while_bodywhile_while_loop_counter_0
cond__15_0while_placeholder_0while_add_const_0_0const_fold_opt__191cond___while_Identity_graph_outputs_Identity__3_0while_Identity_2_0r
  	while_Addr   r   r   cond___while_Less__13_0cond___while_Less__13cond___while_Less_0cond___while_Lesscond___while_Squeezer   r   r   rs   nodesr   r   r   body	UnsqueezeReshape_tensor_0Reshape_tensorr   r   r   r   axesReshapero   rk   rt   T
full_check)r	   r   make_operatorsetidrq   rr   r   r   r/   r   r
   
from_arrayr   arrayint64r   int32r<   r   r   r   r#   r   s     r%   /test_loop_with_same_initializer_input_below_ir4z;TestChecker.test_loop_with_same_initializer_input_below_ir4  s   
 !!!44R;<## 11!;#4#4QC 114k6G6Gr 11,k.?.?s 11,k.?.?r 11!;#4#4QC$ 11"K$5$5aS !++!4BHHE9 !++"RXX6=Q !++RZZ8?S !++!BHH5I  $$ ){!B C<!&,, $$=0  "? ?8!	 $$! =>!A B;! $$  "0 @)#..!- & = =$@$/$5$5*,!"
 !' = =$0+2B2B"!" !' = =$9;;L;LUVTW!" !' = =$9;;L;LUVTW!" !' = =$8+:K:KSU!"$( !' = =$W$/$4$4*,!"
 !' = =$8+:K:KTUSV!" !' = =$9;;L;LUVTW!"% !- 7 7$&HHT$D)=!") !' 0 0$)(=(=,& .B,B)4!" !' 0 0$*,@+A-F,G)@+-'2'8'8!" !' 0 0$*(A(<,& .C,C)<+-	!" !' 0 0$-,A+B([-& *@+-!"9%#QNYt $$# ./!3 4-S $$! 24HI!+&	wAOim
^ 	Ed3r(   c           "        t        j                  t        j                  dd      gdt        j                  dt        j                  dt
        j                  dg      t        j                  dt
        j                  g       t        j                  d	t
        j                  dg      t        j                  d
t
        j                  g       t        j                  dt
        j                  dg      gt        j                  dt
        j                  dg      gt        j                  t        j                  dt        j                        d      t        j                  t        j                  dgt        j                        d	      t        j                  t        j                  dt        j                        d
      t        j                  t        j                  dgt        j                        d      gt        j                   ddgdgddt
        j                        t        j                   ddd
gdgdd      t        j                   ddgdgdd      t        j                   dg ddd gd!t        j                  d"t        j                  d#t
        j                  g       t        j                  d$t
        j"                  g       t        j                  d%t
        j                  dg      t        j                  d&t
        j                  dg      t        j                  d	t
        j                  g       gt        j                  d't
        j"                  g       t        j                  d(t
        j                  dg      t        j                  d&t
        j                  dg      gg t        j                   d)d%d&gd(gd*+      t        j                   dd(gd'gd,dt
        j"                        g-      .      t        j                   d/dgd0gd1d2g3      t        j                   d4d0d	gdgd4+      g-      5      }| j%                  t&        j(                  t*        j,                  |d6       y )7NrC   r   r   r  r  rJ   r  r  r  r  r  r  r  r  r:   r  r  r   r!  r"  r#  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r;  r8  r
  r9  r:  r<  r@  rB  rD  rE  rF  r   rG  rI  rJ  Tr	   r   rM  rq   rr   r   r   r/   r   r
   rN  r   rO  rP  r   rQ  r<   r   rD   r   r   r   r   rR  s     r%   4test_loop_with_different_initializer_input_below_ir4z@TestChecker.test_loop_with_different_initializer_input_below_ir4  s-   
 !!!44R;<## 11!;#4#4QC 114k6G6Gr 11,k.?.?s 11,k.?.?r 11!;#4#4QC$ 11"K$5$5aS !++!4BHHE9 !++"RXX6=Q !++RZZ8?S !++!BHH5I  $$ ){!B C<!&,, $$=0  "? ?8!	 $$! =>!A B;! $$  "0 @)#..!- & = =$@$/$5$5*,!"
 !' = =$0+2B2B"!" !' = =$9;;L;LUVTW!" !' = =$9;;L;LUVTW!" !' = =$8+:K:KSU!"!$* !' = =$=$/$4$4*,!"
 !' = =$8+:K:KTUSV!" !' = =$9;;L;LUVTW!"% )+ & 0 0$)(=(=,& .B,B)4!" !' 0 0$*,@+A-F,G)@+-'2'7'7!"#I7BF $$# ./!3 4-S $$! 24HI!+&	IjORV
n 	**G,?,?	
r(   c           #     	   t        j                  t        j                  dd      gdt        j                  dt        j                  dt
        j                  dg      t        j                  dt
        j                  g       t        j                  d	t
        j                  dg      t        j                  d
t
        j                  g       t        j                  dt
        j                  dg      gt        j                  dt
        j                  dg      gt        j                  t        j                  dt        j                        d      t        j                  t        j                  dgt        j                        d	      t        j                  t        j                  dt        j                        d
      t        j                  t        j                  dgt        j                        d      gt        j                   ddgdgddt
        j                        t        j                   ddd
gdgdd      t        j                   ddgdgdd      t        j                   dg ddd gd!t        j                  d"t        j                  d#t
        j                  g       t        j                  d$t
        j"                  g       t        j                  d%t
        j                  dg      t        j                  d&t
        j                  dg      gt        j                  d't
        j"                  g       t        j                  d(t
        j                  dg      t        j                  d&t
        j                  dg      gt        j                  t        j                  d)t        j                        d#      gt        j                   d*d%d&gd(gd+,      t        j                   dd(gd-gd.dt
        j                        t        j                   dd-d#gd/gd0d      t        j                   dd/gd'gd1d      g2      3      t        j                   d4dgd5gd6d7g8      t        j                   d9d5d	gdgd9,      g2      :      }| j%                  t&        j(                  t*        j,                  |d;       y )<NrC   r   r   r  r  rJ   r  r  r  r  r  r  r  r  r:   r  r  r   r!  r"  r#  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r7  r8  r   r
  r9  r:  r;  r<  r=  r>  r?  r@  rB  rD  rE  rF  r   rG  rI  rJ  TrU  rR  s     r%   /test_loop_with_same_initializer_input_above_ir4z;TestChecker.test_loop_with_same_initializer_input_above_ir4W  s    !!!44R<=## 11!;#4#4QC 114k6G6Gr 11,k.?.?s 11,k.?.?r 11!;#4#4QC$ 11"K$5$5aS !++!4BHHE9 !++"RXX6=Q !++RZZ8?S !++!BHH5I  $$ ){!B C<!&,, $$=0  "? ?8!	 $$! =>!A B;! $$  "0 @)#..!- & = =$@$/$5$5*,!"
 !' = =$0+2B2B"!" !' = =$9;;L;LUVTW!" !' = =$9;;L;LUVTW!"$" !' = =$W$/$4$4*,!"
 !' = =$8+:K:KTUSV!" !' = =$9;;L;LUVTW!"% !- 7 7$&HHRrxx$@)E!") !' 0 0$)(=(=,& .B,B)4!" !' 0 0$*,@+A-F,G)@+-'2'8'8!" !' 0 0$*(A(D,& .C,C)<+-	!" !' 0 0$-,A+B([-& *@+-!"9%#MLWp $$# ./!3 4-S $$! 24HI!+&	sOgk
X 	**G,?,?	
r(   c                    t         j                  j                  d      }t        j                  |d       t         j                  j                  d      }t        j                  |d       y )Nz
            <
                ir_version: 7,
                opset_import: [ "" : 17]
            >
            agraph (float[N] x) => (int64[M] y)
            {
                y = Constant <value_ints: ints = []>()
            }
        TrK  z
            <
                ir_version: 7,
                opset_import: [ "" : 17]
            >
            agraph (float[N] x) => (float[M] y)
            {
                y = Constant <value_floats: floats = []>()
            }
        )rl   parserparse_modelr   r   rR  s     r%   test_empty_list_attributez%TestChecker.test_empty_list_attribute  sX    ''	
 	Ed3''	
 	Ed3r(   c                F   t        j                  dt        j                  j                  dg      }t        j                  dt        j                  j                  dg      }t        j
                  ddgdg      }t        j                  |gd|g|g      }t        j                  |d      }t        j                         5 }t        j                  j                  |d      }t        j                  ||       t        j                  |d	       d d d        y # 1 sw Y   y xY w)
NinputrJ   outputr}   r   r   u   模型モデル모델✨.onnxTrK  )r	   rr   rl   r   r   r<   rq   r   tempfileTemporaryDirectoryospathjoinsaver   r   )r#   input_tensoroutput_tensorr?   rt   r   temp_dirunicode_model_paths           r%   &test_check_model_supports_unicode_pathz2TestChecker.test_check_model_supports_unicode_path)  s    44T%%++aS
 55d&&,,qc
 
WIzB!!4&&<.=/R!!%v>((* 	Eh!#h8W!XIIe/0 2tD	E 	E 	Es    ADD c                    t         j                  j                  d      }| j                  t        j
                  t        j                  |       y )Nz
            <ir_version: 7, opset_import: [ "" : 17]>
            agraph (float[N] x) => (float[N] y, float[N] z)
            {
                y = Add(x, x)
            }
            # Error: z is not defined
        rl   rZ  r[  rD   r   rE   r   rR  s     r%   test_graph_output_is_definedz(TestChecker.test_graph_output_is_defined9  s;    ''	
 	'1173F3FNr(   c                    t         j                  j                  d      }| j                  t        j
                  t        j                  |       y )Nap  
            <ir_version: 7, opset_import: [ "" : 17]>
            agraph (float[N] x, bool cond) => (float[N] y)
            {
                sum = Add (x, x)
                prod = Mul (x, x)
                y = If (cond) <
                    then_branch = then_graph () => (sum) {},
                    else_branch = else_graph () => (prod) {}
                >
            }
            # Error: sum/prod are accessible inside if-then-else branches, but cannot
            # be used as outputs of the then/else branch implicitly.
            # An explicit "Identity(sum)" must be used to return sum as output.
        rl  rR  s     r%   -test_graph_output_is_defined_within_sub_graphz9TestChecker.test_graph_output_is_defined_within_sub_graphF  s;    ''
" 	'1173F3FNr(   N)rg   r   )spval)r1   Sequence[int]r-   rq  r2   rq  r0   rq  r   strrg   r   )rg   rh   )0__name__
__module____qualname__propertyr&   r5   r@   rF   r]   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rS  rV  rX  r\  rj  rm  ro   r(   r%   r   r      sQ   
 
   %	
   
(!
M92"8#$,#\OOO$	#O
O
#
7#Q
QQ
#6#: 
 
%!#,X
X
,XXX#"


t4l^
@r
h4<E OOr(   r   __main__)
__future__r   rb  r`  unittesttypingr   numpyr   	onnx.defsrl   onnx.parserr   r   r   r   r	   r
   r   TestCaser   rs  mainrw  r(   r%   <module>r     s_    # 	        ~O(## ~OB" zHMMO r(   