
    i                        S SK r S SKJr  S SKrS SKrS SKJrJr  S SKJ	r	  S SK
Jr  S rS r " S S	5      r\R                  " \" 5       R!                  5        V s/ s HQ  n \R#                  U \" \R&                  S
U R(                   35      \" \R&                  SU R*                   35      /S9PMS     sn \S9S 5       r\R0                  " SS9S 5       r\R0                  " SS9S 5       rgs  sn f )    N)Any)	all_flowsTestFlow)_sum_op_counts)run_testc                    U H  n[        USS 5      nUc  M  UR                  R                  S5      n[        U[        5      (       d  MG  UR
                  =(       d    UR                  nUR                  U5      (       d  M~  UR                  [        R                  R                  SUR                   S3S95        M     g )Ncallspectest_runnerzSkipped by z skip_patterns)reason)getattrparamsget
isinstancer   originalnamenameshould_skip_test
add_markerpytestmarkskip)configitemsitemr	   flow	test_names         f/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/test/suite/conftest.pypytest_collection_modifyitemsr      s    4T2""=1$))%%2	  ++OO  +dii[(O P     c           	      d   [        5       n[        5       R                  5        H  nU R                  SSUR                   SUR                   S35        UR
                  U;  d  MB  U R                  SSUR
                   SUR
                   S35        UR                  UR
                  5        M     g )Nmarkersflow_z: mark a test as testing the z flowbackend_z backend)setr   valuesaddinivalue_liner   backendadd)r   backendsr   s      r   pytest_configurer)      s    uH""$DII;;DII;eL	

 <<x'##4<<.(Edll^S[\ LL& %r   c                   p    \ rS rSrS rS\S-  4S jr  S
S\R                  R                  S\
4S jjrS	rg)
TestRunner,   c                 n    Xl         X l        X0l        SU l        / U l        U R                  5       U l        g )Nr   )_flow
_test_name_test_base_name_subtest_results_resolve_artifact_dir_artifact_dir)selfr   r   test_base_names       r   __init__TestRunner.__init__-   s1    
#-!779r   returnNc                     [         R                  R                  S5      nU(       d  g [         R                  R	                  XR
                  R                  5      $ )NGOLDEN_ARTIFACTS_DIR)osenvironr   pathjoinr.   r   )r5   bases     r   r3    TestRunner._resolve_artifact_dir5   s6    zz~~45ww||D**//22r   modelinputsc                    [        UUU R                  U R                  U R                  U R                  S UUU R
                  S9
nU =R                  S-  sl        U R                  R                  U5        UR                  R                  5       (       dY  UR                  R                  5       (       a  [        S5      UR                  e[        R                  " SUR                   35        g g )N)generate_random_test_inputsdynamic_shapesartifact_dir   zTest failure.z;Test failed for reasons other than backend failure. Error: )r   r.   r/   r0   r1   r4   r2   appendresult
is_successis_backend_failureRuntimeErrorerrorr   r   )r5   rB   rC   rE   rF   run_summarys         r   lower_and_run_modelTestRunner.lower_and_run_model;   s     JJOO  MM(C)++
 	[)!!,,..!!4466"?39J9JJ QR]RcRcQde /r   )r4   r.   r2   r1   r0   r/   )TN)__name__
__module____qualname____firstlineno__r7   strr3   torchnnModuler   rP   __static_attributes__ r   r   r+   r+   ,   sC    :3sTz 3 %)xx  r   r+   r!   r"   )marks)r   idsc                     [        U R                  U R                  R                  U R                  R                  5      $ )N)r+   paramnoder   r   )requests    r   r
   r
   \   s+     gmmW\\%6%68Q8QRRr   T)optionalhookc                 P   S/ 0n[        U S5      (       Ga  SU R                  ;   Ga~  U R                  S   nUR                   GH^  n0 nSnUR                  b5  [	        UR                  5      n[        U5      S:  a  US S S-   USS  -   nOUnUR                  US	'   UR                  US
'   UR                  US'   UR                  US'   UR                  R                  5       US'   UR                  R                  5       US'   XeS'   UR                  5       (       a  SOSUS'   UR                  (       a  UR                  R                  5       S OS US'   UR                   (       a  UR                   R                  5       S OS US'   [#        UR$                  5       HD  u  pU	R&                  S USU S3'   U	R(                  S USU S3'   U	R*                  S USU S3'   MF     [-        UR.                  5      US'   [-        UR0                  5      US'   UR.                  (       a  [3        UR.                  5      US'   UR0                  (       a  [3        UR0                  5      US'   UR4                  (       a  UR4                  S-  S OSUS'   US   R7                  U5        GMa     U$ ) Nsubtestsfuncargsr
    i     z...i8Test ID	Test CaseSubtestFlowResultResult DetailErrorTrueFalse	Delegatedz.3fzQuantize Time (s)zLower Time (s)zOutput z
 Error Maxz
 Error MAEz SNRzDelegated NodeszUndelegated NodeszDelegated OpszUndelegated Opsg     @@zPTE Size (Kb))hasattrre   r2   rN   rV   lenr   	base_namesubtest_indexr   rJ   to_short_strto_detail_stris_delegatedquantize_timetotal_seconds
lower_time	enumeratetensor_error_statistics	error_max	error_maesqnrr   delegated_op_countsundelegated_op_countsdictpte_size_bytesrI   )
r   callmetadatarunner_instancerecordsubtest_metadataerror_message	error_str
output_idxerror_statss
             r   pytest_json_runtest_metadatar   m   s    BHtZ  ]dmm%C--6%..F!M||'-	y>C'$-dsOe$;i>N$NM$-M*0++Y',2,<,<[)*0*>*>Y''-{{V$)/)C)C)EX&060K0K0M_-(5W%6<6I6I6K6KFQX[) '' ''557< 01 $$ $$224S9 -. ,5V5S5S+T'
",,S1 !7:,j!AB #,,S1 !7:,j!AB CNBRBRSVAW 7:,d!;< ,U 3A**3./ 5C,,501 ))489S9S4T 1++6:6;W;W6X !23;A;P;P6((61#6VX _- Z ''(89k /l Or   c           
      `   U S    H  nSU;  a  0 US'   US   nSU;  a  / US'   US   nSU;   d  M+  US   R                  S5      nUR                  S5      S   nU[        U5      S	-   S
 R                  S5      nUS   nUUUSSUS   R                  SS5      S.nUR	                  U5        M     g )Ntestsr   rd   z???nodeidz::[r   rH   -FailzProcess CrashlongreprzProcess crashed.)rh   ri   rk   rl   rm   rn   )removeprefixsplitrs   r   rI   )	json_report	test_datar   rd   test_idtest_base_idr   r   crashed_test_metas	            r   pytest_json_modifyreportr      s     !)	Y&$&Ij!Z(X%#%HZ J' I)66t<G"==-L S.2R8>>sCF!9D #) !0"5)--j:LM! OO-.5 *r   )r<   typingr   r   rW   #executorch.backends.test.suite.flowr   r   (executorch.backends.test.suite.reportingr   %executorch.backends.test.suite.runnerr   r   r)   r+   fixturer$   r_   r   r   r   r&   rV   r
   hookimplr   r   )fs   0r   <module>r      s   	    C C :'"- -`  ##%	 &A 	uQVVH%56x		{%;< 	 	
 &	 	SS d#= $=@ d#/ $/e	s   AC+