
    bIg`6                        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mZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ  G d	 d
ej&                        Zedk(  r ej,                  d       yy)    )annotationsN)assert_allclose)TensorProtohelpernumpy_helper)onnx_opset_version)ReferenceEvaluator)update_model_dims)(replace_initializer_by_constant_of_shapec                  >    e Zd Zd
dZd Zd Zd Zd Zd Zd Z	d Z
y	)TestToolsFunctionsc                   t        j                  dddgdgddgddg      }t        j                  |gdt        j                  dt        j
                  g d	      t        j                  dt        j
                  g d
      gt        j                  dt        j
                  g d      g      }t        j                  |d      }t        j                  |g dg d
ddg di      }t        j                  j                  |       | j                  |j                  j                  d   j                  j                   j"                  j$                  d   j&                  d       | j                  |j                  j                  d   j                  j                   j"                  j$                  d   j&                  d       | j                  |j                  j(                  d   j                  j                   j"                  j$                  d   j&                  d       | j                  |j                  j(                  d   j                  j                   j"                  j$                  d   j&                  d       y )NConvxWy      )inputsoutputskernel_shapestridestest)   r      r   )r   r   r   r   )r   r   r   r   )producer_name)r   r   x1)r   r   )r   r   r   r   r   r   x_3y_2y_3)r   	make_node
make_graphmake_tensor_value_infor   FLOAT
make_modelr
   update_inputs_outputs_dimsonnxcheckercheck_modelassertEqualgraphinputtypetensor_typeshapedim	dim_paramoutput)selfnode_def	graph_def	model_defupdated_defs        Q/var/www/html/answerous/venv/lib/python3.12/site-packages/onnx/test/tools_test.pytest_update_inputs_outputs_dimz1TestToolsFunctions.test_update_inputs_outputs_dim   s   ##:EQF
 %%J--c;3D3DlS--c;3D3DlS **30A0A<PQ
	 %%ivF	'BB%!
 ^	
 	  -##A&++77==AA!DNNPT	
 	##A&++77==AA!DNNPU	
 	$$Q',,88>>BB1EOOQV	
 	$$Q',,88>>BB1EOOQV	
    c                d   t         j                  }t         j                  j                  dd      j	                  |      }t        j                  |d      }t        j                  dg|      }t        j                  |d      }t        j                  dt        j                  d d g      }t        j                  d	t        j                  d g      }t        j                  d
ddgdg      }t        j                  dddgd	g      }t        j                  ||gd|g|g||g      }	t        j                  |	      }
t        j                  g d      j	                  t         j                        j                  d      }t!        |
      }|j#                  d d|i      d   }t%        |
      }|j&                  j(                  D ch c]  }|j*                   }}| j-                  d|       t!        |      }d|d d d d f<   d|dd d f<   |j#                  d d|i      d   }t/        ||       y c c}w )Nr   d   Anamer   dtypeCXYMatMulAXSublrr   r      r   r   rK   r   r   r   ConstantOfShape      @      ?npfloat32randomrandnastyper   
from_arrayarrayr   r$   r   r%   r"   r#   r&   reshaper	   runr   r,   nodeop_typeassertInr   )r4   rB   valuer>   rC   rD   rE   node1node2r,   r7   r   oinf1y1repln
node_typesoinf2y2s                      r9   test_replace_initializerz+TestToolsFunctions.test_replace_initializer>   s   

		3'..u5##E4!E*##E4))#{/@/@4,O))#{/@/@4&I  C:v>  scU;!!5%.$aS1a&I%%e,	HH'(//

;CCFK"9-YYtc1X&q)7	B)-9Aaii9
9'4"4(1a41a4YYtc1X&q)B :s   H-c                   t         j                  }t         j                  j                  dd      j	                  |      }t        j                  |d      }t        j                  dg|      }t        j                  |d      }t        j                  dt        j                  d d g      }t        j                  d	t        j                  d g      }t        j                  d
g dg|      }t        j                  dddgdg      }t        j                  dddgd	g      }	t        j                  |||	gd|g|g|g      }
t        j                  |
      }t        j                  g d      j	                  t         j                        j                  d      }t!        |      }|j#                  d d|i      d   }t%        |      }|j&                  j(                  D ch c]  }|j*                   }}| j-                  d|       t!        |      }d|d d d d f<   d|dd d f<   |j#                  d d|i      d   }t/        ||       y c c}w )Nr   r=   r>   r?   r   rA   rC   rD   rE   Constantr]   rF   rG   rH   rI   rJ   rL   r   rM   rN   rO   rP   r4   rB   r]   r>   rC   rD   rE   node0r^   r_   r,   r7   r   r`   ra   rb   rc   rd   re   rf   s                       r9   test_replace_constantz(TestToolsFunctions.test_replace_constantX   s   

		3'..u5##E4!E*##E4))#{/@/@4,O))#{/@/@4&I  R#a@  C:v>  scU;!!5%"7sQC!M%%e,	HH'(//

;CCFK"9-YYtc1X&q)7	B)-9Aaii9
9'4"4(1a41a4YYtc1X&q)B :s   Ic                   t         j                  }t         j                  j                  dd      j	                  |      }t        j                  |d      }t        j                  dg|      }t        j                  |d      }t        j                  dt        j                  d d g      }t        j                  d	t        j                  d g      }t        j                  d
g dg|      }t        j                  dddgdg      }t        j                  dddgd	g      }	t        j                  |||	gd|g|g|g      }
t        j                  |
      }t        j                  g d      j	                  t         j                        j                  d      }t!        |      }|j#                  d d|i      d   }t%        |d      }|j&                  j(                  D ch c]  }|j*                   }}| j-                  d|       | j/                  d|       t!        |      }|j#                  d d|i      d   }t1        |j2                  |j2                         y c c}w )Nr   r=   r>   r?   r   rA   rC   rD   rE   ri   rj   rF   rG   rH   rI   rJ   rL   r   T	use_rangeRangerM   )rQ   rR   rS   rT   rU   r   rV   rW   r   r$   r   r%   r"   r#   r&   rX   r	   rY   r   r,   rZ   r[   r\   assertNotInr   r0   rk   s                       r9   test_replace_rangez%TestToolsFunctions.test_replace_ranges   s   

		3'..u5##E4!E*##E4))#{/@/@4,O))#{/@/@4&I  R#a@  C:v>  scU;!!5%"7sQC!M%%e,	HH'(//

;CCFK"9-YYtc1X&q)7	TR)-9Aaii9
9gz**J7"4(YYtc1X&q)"((+ :s   Ic           
        t         j                  }t         j                  j                  dd      j	                  |      }t        j                  |d      }t        j                  dg|      }t        j                  |d      }t        j                  dt        j                  d d g      }t        j                  d	t        j                  d g      }t        j                  d
g dg|      }t        j                  d
g dg|      }t        j                  dddgdg      }	t        j                  dddgd	g      }
t        j                  dt                     t        j                  dd      g}t        j                  dddgd	g|||	|
g|      }t        j                  ddgd	gd      }t        j                   |gd|g|g|g      }t        j"                  ||g|      }t        j                  g d      j	                  t         j                        j%                  d      }t'        |      }|j)                  d d|i      d   }t+        |      }|j,                  d   j.                  D ch c]  }|j0                   }}| j3                  d|       t'        |      }d|d d d d f<   d|dd d f<   |j)                  d d|i      d   }t5        ||       y c c}w )Nr   r=   r>   r?   r   rA   rC   rD   rE   ri   rj   rF   rG   rH    customunittestdomainrI   	functionsopset_importsrJ   rL   r   rM   rN   rO   )rQ   rR   rS   rT   rU   r   rV   rW   r   r$   r   r%   r"   make_opsetidr   make_functionr#   r&   rX   r	   rY   r   r{   rZ   r[   r\   r   r4   rB   r]   r>   rC   rD   rE   nodeCrl   r^   r_   r|   fctrZ   r,   r7   r   r`   ra   rb   rc   rd   re   rf   s                           r9   test_replace_constant_functionz1TestToolsFunctions.test_replace_constant_function   s   

		3'..u5##E4!E*##E4))#{/@/@4,O))#{/@/@4&I  R#a@  R#a@  C:v>  scU;$6$89!,
 ""EEE5%(
 
SEC5J!!4&$aS1#>%%cU-
	 HH'(//

;CCFK"9-YYtc1X&q)7	B)-):)?)?@Aaii@
@'4"4(1a41a4YYtc1X&q)B As   +Kc           
        t         j                  }t         j                  j                  dd      j	                  |      }t        j                  |d      }t        j                  dg|      }t        j                  |d      }t        j                  dt        j                  d d g      }t        j                  d	t        j                  d g      }t        j                  d
g dg|      }t        j                  d
g dg|      }t        j                  dddgdg      }	t        j                  dddgd	g      }
t        j                  dt                     t        j                  dd      g}t        j                  dddgd	g|||	|
g|      }t        j                  ddgd	gd      }t        j                   |gd|g|g|g      }t        j"                  ||g|      }t        j                  g d      j	                  t         j                        j%                  d      }t'        |      }|j)                  d d|i      d   }t+        |d      }|j,                  d   j.                  D ch c]  }|j0                   }}| j3                  d|       | j5                  d|       t'        |      }|j)                  d d|i      d   }t7        |j8                  |j8                         y c c}w )Nr   r=   r>   r?   r   rA   rC   rD   rE   ri   rj   rF   rG   rH   ru   rv   rw   rx   rI   rz   rJ   rL   r   Tro   rq   rM   )rQ   rR   rS   rT   rU   r   rV   rW   r   r$   r   r%   r"   r}   r   r~   r#   r&   rX   r	   rY   r   r{   rZ   r[   r\   rr   r   r0   r   s                           r9   test_replace_range_functionz.TestToolsFunctions.test_replace_range_function   s   

		3'..u5##E4!E*##E4))#{/@/@4,O))#{/@/@4&I  R#a@  R#a@  C:v>  scU;$6$89!,
 ""EEE5%(
 
SEC5J!!4&$aS1#>%%cU-
	 HH'(//

;CCFK"9-YYtc1X&q)7	TR)-):)?)?@Aaii@
@gz**J7"4(YYtc1X&q)"((+ As   -K)c                   t        j                  dgt         j                        }t        j                  |d      }t        j                  dt        j                  j                  d d g      }t        j                  dt        j                  j                  d g      }t        j                  ddgdg      }t        j                  d	ddgd
g      }t        j                  dt        j                  j                  d       }t        j                  t        j                  dgdz        j                  t         j                              }t        j                  dg dg|d      }	t        j                  |	gdg |g      }
t        j                  dt        j                  j                  d       }t        j                  t        j                  dgdz        j                  t         j                              }t        j                  dg dg|d      }t        j                  |gdg |g      }t        j
                  j                  dd
gdg|
|      }t        j                  |||gd|g|g|g      }t        j                  |t        j                  dt                     g      }| j!                  dt#        |             t        j$                  dt         j                        }t'        |      }|j)                  d d|i      d   }t+        |      }| j-                  dt#        |             t'        |      }|j)                  d d|i      d   }|j/                         }d|d d  t1        ||       y )Nr   rA   zeror?   rD   rE   	ReduceSumrsumGreatercondthen_outr      ri   cst1r   r   r]   r@   	then_bodyelse_outr   cst2	else_bodyIfthen_branchelse_branchifru   r|   rM   rL   rO   )rQ   rW   rR   r   rV   r   r$   r(   r   r%   r"   rU   r#   r&   r}   r   rr   stronesr	   rY   r   r\   copyr   r4   r]   r   rD   rE   r   r   r   then_cstthen_const_noder   r   else_cstelse_const_noder   if_noder,   
onnx_modelr   r`   ra   rb   re   rf   s                           r9   test_replace_constant_graphz.TestToolsFunctions.test_replace_constant_graph   s   !BJJ/&&u6:))#t/?/?/E/Ed|T))#t/?/?/E/EvNcUVH=	FF+;fXF00((..
  **288QC#I+>+E+Ebjj+QR **rJ<xf
 %%&7b8*U	00((..
  **288RD3J+?+F+Frzz+RS **rJ<xf
 %%&7b8*U	++''6(SEyi ( 
 !!4w"7sQC$P&&&"5"5b:L:N"O!P

 	*C
O<GGF"**-":.YYtc1X&q)7
C'T3"4(YYtc1X&q)WWY1Br;   c                   t        j                  dgt         j                        }t        j                  |d      }t        j                  dt        j                  j                  d d g      }t        j                  dt        j                  j                  d g      }t        j                  ddgdg      }t        j                  d	ddgd
g      }t        j                  dt        j                  j                  d       }t        j                  t        j                  dgdz        j                  t         j                              }t        j                  dg dg|d      }	t        j                  |	gdg |g      }
t        j                  dt        j                  j                  d       }t        j                  t        j                  dgdz        j                  t         j                              }t        j                  dg dg|d      }t        j                  |gdg |g      }t        j
                  j                  dd
gdg|
|      }t        j                  |||gd|g|g|g      }t        j                  |t        j                  dt                     g      }| j!                  dt#        |             t        j$                  dt         j                        }t'        |      }|j)                  d d|i      d   }t+        |d      }| j!                  dt#        |             | j-                  dt#        |             t'        |      }|j)                  d d|i      d   }t/        |j0                  |j0                         y ) Nr   rA   r   r?   rD   rE   r   r   r   r   r   r   r   ri   r   r   r   r   r   r   r   r   r   r   ru   r   rM   rL   Tro   rq   )rQ   rW   rR   r   rV   r   r$   r(   r   r%   r"   rU   r#   r&   r}   r   rr   r   r   r	   rY   r   r\   r   r0   r   s                           r9   test_replace_range_graphz+TestToolsFunctions.test_replace_range_graph  s   !BJJ/&&u6:))#t/?/?/E/Ed|T))#t/?/?/E/EvNcUVH=	FF+;fXF00((..
  **288QC#I+>+E+Ebjj+QR **rJ<xf
 %%&7b8*U	00((..
  **288RD3J+?+F+Frzz+RS **rJ<xf
 %%&7b8*U	++''6(SEyi ( 
 !!4w"7sQC$P&&&"5"5b:L:N"O!P

 	*C
O<GGF"**-":.YYtc1X&q)7
dS*CI6gs4y)"4(YYtc1X&q)"((+r;   N)returnNone)__name__
__module____qualname__r:   rg   rm   rs   r   r   r   r    r;   r9   r   r      s.    (
T 4 6,4* X),V/ b.,r;   r   __main__r   )	verbosity)
__future__r   rw   numpyrQ   numpy.testingr   r(   r   r   r   	onnx.defsr   onnx.referencer	   
onnx.toolsr
   onnx.tools.replace_constantsr   TestCaser   r   mainr   r;   r9   <module>r      sZ    #   )  2 2 ( - ( Qp,** p,f	 zHMMA r;   