
    h                        S SK r S SKrS SKrS SKrS SKrS SKJs  Js  Js  J	r
  S SKJs  Js  Js  Jr  S SKJrJrJr  \R$                  R'                  \R$                  R)                  \5      5      r\R$                  R/                  \S5      rS\ R2                  SS4S jrS\ R2                  4S jrS
S jr\S	:X  a  \" 5         gg)    N)ONNX_MLTensorProtonumpy_helperdataargsreturnc                    S[         SS 4S jn[        R                  R                  U R                  S5      n[        [        R                  " U5       Vs/ s H+  n[        R                  R                  U5      (       d  M)  UPM-     sn5      nU R                  (       a  [        R                  R                  U5      (       as  [        R                  " U5       HY  n[        (       d  UR                  S5      (       a  M&  [        R                  " [        R                  R                  X%5      5        M[     [        R                  " 5       nU R                   (       a  U["        R$                  " 5       -  nO#U["        R                  " U R&                  5      -  nSnU GH  n[        R                  R                  U R                  UR(                  UR*                  5      n	U" U	5        UR(                  S:X  a  US-  nUR(                  S:X  ax  [-        [        R                  R                  U	S	5      S
5       n
[.        R0                  " UR2                  UR4                  UR6                  UR8                  S.U
SS9  S S S 5        M  UR:                  (       d   e[-        [        R                  R                  U	S5      S5       nUR=                  UR:                  R?                  5       5        S S S 5        UR@                  (       d   e[C        UR@                  5       GHH  u  nu  p[        R                  R                  U	SU 35      nU" U5        [C        U5       GH  u  nn[-        [        R                  R                  USU S35      S5       nUR:                  RD                  RF                  U   RH                  RK                  S5      (       aa  UR=                  [L        RN                  " UUR:                  RD                  RF                  U   R*                  5      R?                  5       5        GOUR:                  RD                  RF                  U   RH                  RK                  S5      (       aa  UR=                  [L        RP                  " UUR:                  RD                  RF                  U   R*                  5      R?                  5       5        GOxUR:                  RD                  RF                  U   RH                  RK                  S5      (       a`  UR=                  [L        RR                  " UUR:                  RD                  RF                  U   R*                  5      R?                  5       5        OUR:                  RD                  RF                  U   RH                  RK                  S5      (       d   e[U        U[V        5      (       a   UR=                  UR?                  5       5        O_UR=                  [L        RX                  " UUR:                  RD                  RF                  U   R*                  5      R?                  5       5        S S S 5        GM     [C        U5       GH  u  nn[-        [        R                  R                  USU S35      S5       nUR:                  RD                  R                  U   RH                  RK                  S5      (       aa  UR=                  [L        RN                  " UUR:                  RD                  R                  U   R*                  5      R?                  5       5        GOUR:                  RD                  R                  U   RH                  RK                  S5      (       aa  UR=                  [L        RP                  " UUR:                  RD                  R                  U   R*                  5      R?                  5       5        GOxUR:                  RD                  R                  U   RH                  RK                  S5      (       a`  UR=                  [L        RR                  " UUR:                  RD                  R                  U   R*                  5      R?                  5       5        OUR:                  RD                  R                  U   RH                  RK                  S5      (       d   e[U        U[V        5      (       a   UR=                  UR?                  5       5        O_UR=                  [L        RX                  " UUR:                  RD                  R                  U   R*                  5      R?                  5       5        S S S 5        GM     GMK     GM     U R                  (       d!  Xt:w  a  [Z        R\                  " S[^        SS9  g g g s  snf ! , (       d  f       GM  = f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GM  = f)Npathr   c                     [         R                  R                  U 5      (       a  [        R                  " U 5        [         R
                  " U 5        g N)osr
   existsshutilrmtreemakedirs)r
   s    U/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/cmd_tools.pyprepare_dir"generate_data.<locals>.prepare_dir   s-    77>>$MM$
D    nodetest_ai_onnx_ml_r      realz	data.jsonw)url
model_namertolatolT)	sort_keysz
model.onnxwbtest_data_set_input_z.pbmap_typesequence_typeoptional_typetensor_typeoutput_a  There are some models under 'onnx/backend/test/data/node' which cannot not be generated by the script from 'onnx/backend/test/case/node'. Please add '--clean' option for 'python onnx/backend/test/cmd_tools.py generate-data' to cleanup the existing directories and regenerate them.   )
stacklevel)0strr   r
   joinoutputlenlistdirisfilecleanr   r   
startswithr   r   
model_testcollect_testcasesdiff	node_testcollect_diff_testcasesop_typekindnameopenjsondumpr   r   r   r   modelwriteSerializeToString	data_sets	enumerategraphinputtypeHasFieldr   	from_dict	from_listfrom_optional
isinstancer   
from_arraywarningswarnWarning)r   r   	node_rootr9   original_dir_numbersub_dircasesnode_numbercase
output_dirfifiinputsoutputsdata_set_dirjrC   r,   s                      r   generate_datar\      s   # $  T[[&1I**Y/H/$277>>$3G/H zzbggnnY//zz),Gwg001CDDbggll9>? - ((*E yy1133,,T\\::KWW\\$++tyy$))D
J991K99bggll:{;SAR		#xx&*oo $		 $			 "	 BA :::bggll:|<dCq

4467 D>>!>(1$..(A$$F!ww||J.8LML) )& 1HAubggll<6!CI4PTU::++11!499BB:NNGG , 6 6$)4::+;+;+A+A!+D+I+I!""3"3"5
 "ZZ--33A6;;DD_UUGG , 6 6$)4::+;+;+A+A!+D+I+I!""3"3"5
 "ZZ--33A6;;DD_UUGG , : :$)4::+;+;+A+A!+D+I+I!""3"3"5 $(::#3#3#9#9!#<#A#A#J#J -$ $  $  *%== !(?(?(A B !$0$;$;(-tzz/?/?/E/Ea/H/M/M%&&7&7&9!"5 QP !2@ "+7!3IAvbggll<71#S9IJDQUV::++2215::CCJOOGG , 6 6$*DJJ,<,<,C,CA,F,K,K!""3"3"5
 "ZZ--44Q7<<EEoVVGG , 6 6$*DJJ,<,<,C,CA,F,K,K!""3"3"5
 "ZZ--44Q7<<EEoVVGG , : :$*DJJ,<,<,C,CA,F,K,K!""3"3"5 $(::#3#3#:#:1#=#B#B#K#K -$ $  $  *&+>> !(@(@(B C !$0$;$;(.

0@0@0G0G0J0O0O%&&7&7&9!"5 RQ "4G )B- r ::+<H 	
 =:S 	I, BA DC QP@ RQs?   (f f 6Af%*f8J=g
	J=g	%
f5	8
g	

g
g-c                  P   [         R                  " S5      n U R                  5       nUR                  SSS9nUR	                  SSSSS	S
9  UR	                  SS[
        SS9  UR	                  SSS SS9  UR	                  SSSSSS
9  UR                  [        S9  U R                  5       $ )Nzbackend-test-toolszgenerate-datazconvert testcases to test data.)helpz-cz--cleanF
store_truezEClean the output directory before generating data for node testcases.)defaultactionr^   z-oz--outputz'output directory (default: %(default)s))r`   r^   z-tz	--op_typezWop_type for test case generation. (generates test data for the specified op_type only.)z-dz--diffzOonly generates test data for those changed files (compared to the main branch).)func)	argparseArgumentParseradd_subparsers
add_parseradd_argumentDATA_DIRset_defaultsr\   
parse_args)parser
subparsers	subparsers      r   rj   rj      s    $$%9:F&&(J%%? & I T   6	   f	   ^   .r   c                  :    [        5       n U R                  U 5        g r   )rj   rb   )r   s    r   mainro      s    <DIIdOr   __main__)r   N)rc   r;   r   r   rK   onnx.backend.test.case.modelbackendtestrS   r=   r2   onnx.backend.test.case.noder   r5   onnxr   r   r   r
   realpathdirname__file__TOP_DIRr+   rh   	Namespacer\   rj   ro   __name__ r   r   <module>r}      s   
   	   1 1 / / 3 3
''

277??84
577<<({
** {
t {
|#H&& #L
 zF r   