
    h4                         S SK r S SKrS SKJr  S SKrS SKJrJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJr   " S S	\ R"                  5      r\S
:X  a  \ R(                  " SS9  gg)    N)assert_allclose)TensorProtohelpernumpy_helper)onnx_opset_version)ReferenceEvaluator)update_model_dims)(replace_initializer_by_constant_of_shapec                   H    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rSrg)TestToolsFunctions   Nc                    [         R                  " SSS/S/SS/SS/S9n[         R                  " U/S[         R                  " S[        R
                  / S	Q5      [         R                  " S[        R
                  / S
Q5      /[         R                  " S[        R
                  / SQ5      /5      n[         R                  " USS9n[        R                  " U/ SQ/ S
QS.S/ SQ05      n[        R                  R                  U5        U R                  UR                  R                  S   R                  R                   R"                  R$                  S   R&                  S5        U R                  UR                  R                  S   R                  R                   R"                  R$                  S   R&                  S5        U R                  UR                  R(                  S   R                  R                   R"                  R$                  S   R&                  S5        U R                  UR                  R(                  S   R                  R                   R"                  R$                  S   R&                  S5        g )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        N/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/test/tools_test.pytest_update_inputs_outputs_dim1TestToolsFunctions.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                 f   [         R                  n[         R                  R                  SS5      R	                  U5      n[
        R                  " USS9n[         R                  " S/US9n[
        R                  " USS9n[        R                  " S[        R                  S S /5      n[        R                  " S	[        R                  S /5      n[        R                  " S
SS/S/5      n[        R                  " SSS/S	/5      n[        R                  " Xx/SU/U/X4/5      n	[        R                  " U	5      n
[         R                  " / SQ5      R	                  [         R                  5      R                  S5      n[!        U
5      nUR#                  S SU05      S   n[%        U
5      nUR&                  R(                   Vs1 s H  oR*                  iM     nnU R-                  SU5        [!        U5      nSUS S 2S S 24'   SUSS S 24'   UR#                  S SU05      S   n[/        UU5        g s  snf )Nr   d   Anamer   dtypeCXYMatMulAXSublrr   r      r   r   rL   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   rC   valuer?   rD   rE   rF   node1node2r,   r7   r   oinf1y1repln
node_typesoinf2y2s                      r9   test_replace_initializer+TestToolsFunctions.test_replace_initializer=   s   

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

;CCFK"9-YYtc1X&q)7	B)-9Aii
9'4"4(1a41a4YYtc1X&q)B :s   H.c                    [         R                  n[         R                  R                  SS5      R	                  U5      n[
        R                  " USS9n[         R                  " S/US9n[
        R                  " USS9n[        R                  " S[        R                  S S /5      n[        R                  " S	[        R                  S /5      n[        R                  " S
/ S/US9n[        R                  " SSS/S/5      n[        R                  " SSS/S	/5      n	[        R                  " XxU	/SU/U/U/5      n
[        R                  " U
5      n[         R                  " / SQ5      R	                  [         R                  5      R                  S5      n[!        U5      nUR#                  S SU05      S   n[%        U5      nUR&                  R(                   Vs1 s H  nUR*                  iM     nnU R-                  SU5        [!        U5      nSUS S 2S S 24'   SUSS S 24'   UR#                  S SU05      S   n[/        UU5        g s  snf )Nr   r>   r?   r@   r   rB   rD   rE   rF   Constantr^   rG   rH   rI   rJ   rK   rM   r   rN   rO   rP   rQ   r4   rC   r^   r?   rD   rE   rF   node0r_   r`   r,   r7   r   ra   rb   rc   rd   re   rf   rg   s                       r9   test_replace_constant(TestToolsFunctions.test_replace_constantW   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)-9Aaii
9'4"4(1a41a4YYtc1X&q)B :s   Ic                    [         R                  n[         R                  R                  SS5      R	                  U5      n[
        R                  " USS9n[         R                  " S/US9n[
        R                  " USS9n[        R                  " S[        R                  S S /5      n[        R                  " S	[        R                  S /5      n[        R                  " S
/ S/US9n[        R                  " SSS/S/5      n[        R                  " SSS/S	/5      n	[        R                  " XxU	/SU/U/U/5      n
[        R                  " U
5      n[         R                  " / SQ5      R	                  [         R                  5      R                  S5      n[!        U5      nUR#                  S SU05      S   n[%        USS9nUR&                  R(                   Vs1 s H  nUR*                  iM     nnU R-                  SU5        U R/                  SU5        [!        U5      nUR#                  S SU05      S   n[1        UR2                  UR2                  5        g s  snf )Nr   r>   r?   r@   r   rB   rD   rE   rF   rk   rl   rG   rH   rI   rJ   rK   rM   r   T	use_rangeRangerN   )rR   rS   rT   rU   rV   r   rW   rX   r   r$   r   r%   r"   r#   r&   rY   r   rZ   r
   r,   r[   r\   r]   assertNotInr   r0   rm   s                       r9   test_replace_range%TestToolsFunctions.test_replace_ranger   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)-9Aaii
9gz**J7"4(YYtc1X&q)"((+ :s   Ic           
         [         R                  n[         R                  R                  SS5      R	                  U5      n[
        R                  " USS9n[         R                  " S/US9n[
        R                  " USS9n[        R                  " S[        R                  S S /5      n[        R                  " S	[        R                  S /5      n[        R                  " S
/ S/US9n[        R                  " S
/ S/US9n[        R                  " SSS/S/5      n	[        R                  " SSS/S	/5      n
[        R                  " S[        5       5      [        R                  " SS5      /n[        R                  " SSS/S	/XxX/U5      n[        R                  " SS/S	/SS9n[        R                   " U/SU/U/U/5      n[        R"                  " X/US9n[         R                  " / SQ5      R	                  [         R                  5      R%                  S5      n['        U5      nUR)                  S SU05      S   n[+        U5      nUR,                  S   R.                   Vs1 s H  nUR0                  iM     nnU R3                  SU5        ['        U5      nSUS S 2S S 24'   SUSS S 24'   UR)                  S SU05      S   n[5        UU5        g s  snf )Nr   r>   r?   r@   r   rB   rD   rE   rF   rk   rl   rG   rH   rI    customunittestdomainrJ   	functionsopset_importsrK   rM   r   rN   rO   rP   )rR   rS   rT   rU   rV   r   rW   rX   r   r$   r   r%   r"   make_opsetidr   make_functionr#   r&   rY   r   rZ   r
   r   r[   r\   r]   r   r4   rC   r^   r?   rD   rE   rF   nodeCrn   r_   r`   r   fctr[   r,   r7   r   ra   rb   rc   rd   re   rf   rg   s                           r9   test_replace_constant_function1TestToolsFunctions.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5(
 
SEC5J!!4&$aS1#>%%U-
	 HH'(//

;CCFK"9-YYtc1X&q)7	B)-):)?)?@)?Aaii)?
@'4"4(1a41a4YYtc1X&q)B As   #Kc           
         [         R                  n[         R                  R                  SS5      R	                  U5      n[
        R                  " USS9n[         R                  " S/US9n[
        R                  " USS9n[        R                  " S[        R                  S S /5      n[        R                  " S	[        R                  S /5      n[        R                  " S
/ S/US9n[        R                  " S
/ S/US9n[        R                  " SSS/S/5      n	[        R                  " SSS/S	/5      n
[        R                  " S[        5       5      [        R                  " SS5      /n[        R                  " SSS/S	/XxX/U5      n[        R                  " SS/S	/SS9n[        R                   " U/SU/U/U/5      n[        R"                  " X/US9n[         R                  " / SQ5      R	                  [         R                  5      R%                  S5      n['        U5      nUR)                  S SU05      S   n[+        USS9nUR,                  S   R.                   Vs1 s H  nUR0                  iM     nnU R3                  SU5        U R5                  SU5        ['        U5      nUR)                  S SU05      S   n[7        UR8                  UR8                  5        g s  snf )Nr   r>   r?   r@   r   rB   rD   rE   rF   rk   rl   rG   rH   rI   ry   rz   r{   r|   rJ   r~   rK   rM   r   Trr   rt   rN   )rR   rS   rT   rU   rV   r   rW   rX   r   r$   r   r%   r"   r   r   r   r#   r&   rY   r   rZ   r
   r   r[   r\   r]   ru   r   r0   r   s                           r9   test_replace_range_function.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5(
 
SEC5J!!4&$aS1#>%%U-
	 HH'(//

;CCFK"9-YYtc1X&q)7	TR)-):)?)?@)?Aaii)?
@gz**J7"4(YYtc1X&q)"((+ As   "K!c                    [         R                  " S/[         R                  S9n[        R                  " USS9n[
        R                  " S[        R                  R                  S S /5      n[
        R                  " S[        R                  R                  S /5      n[
        R                  " SS/S/5      n[
        R                  " S	SS/S
/5      n[
        R                  " S[        R                  R                  S 5      n[        R                  " [         R                  " S/S-  5      R                  [         R                  5      5      n[
        R                  " S/ S/USS9n	[
        R                  " U	/S/ U/5      n
[
        R                  " S[        R                  R                  S 5      n[        R                  " [         R                  " S/S-  5      R                  [         R                  5      5      n[
        R                  " S/ S/USS9n[
        R                  " U/S/ U/5      n[        R
                  R                  SS
/S/XS9n[
        R                  " XVU/SU/U/U/5      n[
        R                  " U[
        R                  " S[        5       5      /S9nU R!                  S[#        U5      5        [         R$                  " S[         R                  S9n['        U5      nUR)                  S SU05      S   n[+        U5      nU R-                  S[#        U5      5        ['        U5      nUR)                  S SU05      S   nUR/                  5       nSUS S & [1        UU5        g )Nr   rB   zeror@   rE   rF   	ReduceSumrsumGreatercondthen_outr      rk   cst1r   r   r^   rA   	then_bodyelse_outr   cst2	else_bodyIfthen_branchelse_branchifry   r   rN   rM   rP   )rR   rX   rS   r   rW   r   r$   r(   r   r%   r"   rV   r#   r&   r   r   ru   stronesr   rZ   r
   r]   copyr   r4   r^   r   rE   rF   r   r   r   then_cstthen_const_noder   r   else_cstelse_const_noder   if_noder,   
onnx_modelr   ra   rb   rc   rf   rg   s                           r9   test_replace_constant_graph.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(SEy ( 
 !!4w"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                    [         R                  " S/[         R                  S9n[        R                  " USS9n[
        R                  " S[        R                  R                  S S /5      n[
        R                  " S[        R                  R                  S /5      n[
        R                  " SS/S/5      n[
        R                  " S	SS/S
/5      n[
        R                  " S[        R                  R                  S 5      n[        R                  " [         R                  " S/S-  5      R                  [         R                  5      5      n[
        R                  " S/ S/USS9n	[
        R                  " U	/S/ U/5      n
[
        R                  " S[        R                  R                  S 5      n[        R                  " [         R                  " S/S-  5      R                  [         R                  5      5      n[
        R                  " S/ S/USS9n[
        R                  " U/S/ U/5      n[        R
                  R                  SS
/S/XS9n[
        R                  " XVU/SU/U/U/5      n[
        R                  " U[
        R                  " S[        5       5      /S9nU R!                  S[#        U5      5        [         R$                  " S[         R                  S9n['        U5      nUR)                  S SU05      S   n[+        USS9nU R!                  S[#        U5      5        U R-                  S[#        U5      5        ['        U5      nUR)                  S SU05      S   n[/        UR0                  UR0                  5        g ) Nr   rB   r   r@   rE   rF   r   r   r   r   r   r   r   rk   r   r   r   r   r   r   r   r   r   r   ry   r   rN   rM   Trr   rt   )rR   rX   rS   r   rW   r   r$   r(   r   r%   r"   rV   r#   r&   r   r   ru   r   r   r   rZ   r
   r]   r   r0   r   s                           r9   test_replace_range_graph+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(SEy ( 
 !!4w"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<    )returnN)__name__
__module____qualname____firstlineno__r:   rh   ro   rv   r   r   r   r   __static_attributes__r   r<   r9   r   r      s.    (
T 4 6,4* X),V/ b.,r<   r   __main__r   )	verbosity)r{   numpyrR   numpy.testingr   r(   r   r   r   	onnx.defsr   onnx.referencer   
onnx.toolsr	   onnx.tools.replace_constantsr
   TestCaser   r   mainr   r<   r9   <module>r      sU   
   )  2 2 ( - ( Qp,** p,f	 zMMA r<   