
    Ph                         d dl Zd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
Z
ej                  d        Zd Zd Zd Zd Zd Z G d	 d
ej$                  j&                  j(                        Zy)    N)
LazyStringc               #   R  K   t         j                  j                  j                         } t         j                  j                  j	                  t         j                  j                  j                                	 d  t         j                  j                  j	                  |        t         j                  j                  j                          y # t         j                  j                  j	                  |        t         j                  j                  j                          w xY wwN)torch_logging	_internal_get_log_state_set_log_stateLogState
_init_logs)
prev_states    pC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/testing/_internal/logging_utils.pypreserve_log_stater   
   s     ))88:J	NN++ENN,D,D,M,M,OP.  //
;  ++- 	  //
;  ++-s    A8D';C ?AD'AD$$D'c                 F   t        j                         }t        j                  j                  j                  t        j                  d| i      }|j                  t                      |j                  |       t        j                  j                  j                          |S )N
TORCH_LOGS)
contextlib	ExitStackunittestmockpatchdictosenvironenter_contextr   r   r   r   r   )settings
exit_stacksettings_patchs      r   log_settingsr      sq    %%'J]]((--bjj<:RSN/12^,	NN'')    c                      t        j                         }|j                  t                      t	        j
                  j                  di |  |S )N )r   r   r   r   r   r   set_logs)kwargsr   s     r   log_apir$      s=    %%'J/12	NN%f%r   c                  n   ddddg fd}| j                         D ]  \  }}t        |t              rj                  |       (t        |t              r
 |||       Bt        |t
              r'|dk(  r"|j                         D ]  \  }} |||        yt        d       dj                        S )	N+ -)
      (   c                     t        | t              r,t        |t              r|v rj                  |   | z          y t	        d      )NInvalid value for setting)
isinstancestrintappend
ValueError)namelevelINT_TO_VERBOSITYr   s     r   append_settingz*kwargs_to_settings.<locals>.append_setting(   sD    dC Zs%;IY@YOO,U3d:;899r   modulesr-   ,)itemsr.   boolr1   r0   r   r2   join)r#   r6   r3   valmodule_qnamer4   r5   r   s         @@r   kwargs_to_settingsr>   #   s    RS1H: \\^	cc4 OOD!S!4%T"ty'8'*yy{#e|U3 (3 899 $ 88Hr   c                        fd}|S )Nc                       fd}|S )Nc                 l   t         j                  j                          g }t              dk(  r$| j	                  |      5   | |       d d d        n@t        t        di       5  | j	                  |      5   | |       d d d        d d d        t         j                  j                          |j                          t        di 5  | j	                  |      5   | |       d d d        d d d        y # 1 sw Y   oxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Nr   r!   )	r   _dynamoresetlen_handler_watcherr   r>   clearr$   )selfrecordsfnr#   s     r   test_fnz3make_logging_test.<locals>.wrapper.<locals>.test_fnJ   s    MM!G6{a**73tW% 43 ""4">v">?AVAVW^A_tW% B`? MM!MMO"6"D$9$9'$B4! %C"" 43 B`A_?? %C$B""sT   
C:(D:
DDD*
D)D*:DD	DDD'	#D**D3r!   )rI   rJ   r#   s   ` r   wrapperz"make_logging_test.<locals>.wrapperI   s    	"& r   r!   )r#   rK   s   ` r   make_logging_testrL   H   s    , Nr   c                       fd}|S )Nc                       fd}|S )Nc                     t         j                  j                          g }t              5  | j	                  |      5   | |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )r   rB   rC   r   rE   )rG   rH   rI   r   s     r   rJ   z4make_settings_test.<locals>.wrapper.<locals>.test_fnc   sQ    MM!Gh')>)>w)G4! *H'')G)G''s"   A&
A	A&A#	A&&A/r!   )rI   rJ   r   s   ` r   rK   z#make_settings_test.<locals>.wrapperb   s    	" r   r!   )r   rK   s   ` r   make_settings_testrP   a   s     Nr   c                   D     e Zd Ze fd       Zed        Zd Zd Z xZS )LoggingTestCasec                    t         |           | j                  j                  t        j
                  j                  j                  t        j                  ddi             | j                  j                  t        j
                  j                  dd             | j                  j                  t        j
                  j                  dd             y )N___LOG_TESTINGr'   z$torch._dynamo.config.suppress_errorsTztorch._dynamo.config.verboseF)
super
setUpClass_exit_stackr   r   r   r   r   r   r   )cls	__class__s    r   rV   zLoggingTestCase.setUpClasso   s    %%MM$$RZZ2BB1GH	
 	%%MM FM	
 	%%MM >F	
r   c                     | j                   j                          t        j                  j                  j
                  j                          t        j                  j                          y r   )rW   closer   r   r   	log_staterF   r   )rX   s    r   tearDownClasszLoggingTestCase.tearDownClass|   s>      **002!!#r   c           	          d D ]8  |j                         v s| j                  t        fd             : | j                  d| d        S )Nc                      d d  d S )Nzmultiple matching records: z and  among r!   )rrecordrH   s   r   <lambda>z+LoggingTestCase.getRecord.<locals>.<lambda>   s    "=fXU1#WU\T] ^r   )msgzdid not find record with r`   )
getMessageassertIsNoner   fail)rG   rH   mra   rb   s    ` @@r   	getRecordzLoggingTestCase.getRecord   sp    A ALLN"!!"^ "    >II1!GG9EFr   c           	        	 t        j                         }fdt        j                  j                  j
                  j                         D ]  }t        j                  |      }t        |j                        }| j                  |dd       | j                  |dd       |j                  D ]N  }|j                  		fd}|j                  t        j                   j"                  j%                  |d|             P  |S )Nc                 (    j                  |        y r   )r1   )rb   record_lists    r   emit_post_hookz8LoggingTestCase._handler_watcher.<locals>.emit_post_hook   s    v&r      zgAll pt2 loggers should only have at most two handlers (debug artifacts and messages above debug level).r   z3All pt2 loggers should have more than zero handlersc                 &     |         |        y r   r!   )rb   rm   old_emits    r   new_emitz2LoggingTestCase._handler_watcher.<locals>.new_emit   s    V$"6*r   emit)r   r   r   r   r   log_registryget_log_qnameslogging	getLoggerrD   handlersassertLessEqualassertGreaterrr   r   r   r   r   object)
rG   rl   r   	log_qnameloggernum_handlershandlerrq   rm   rp   s
    `      @@r   rE   z LoggingTestCase._handler_watcher   s    ))+
	'
 11>>MMOI&&y1Fv/L  y |Q0ef!??"<<+ ((MM''..wI + P, r   )	__name__
__module____qualname__classmethodrV   r]   ri   rE   __classcell__)rY   s   @r   rR   rR   n   s3    

 

 $ $
&r   rR   )torch._dynamo.test_caser   unittest.mockr   r   r   torch._loggingtorch._logging._internaltorch._dynamo.utilsr   ru   contextmanagerr   r   r$   r>   rL   rP   rB   	test_caseTestCaserR   r!   r   r   <module>r      sm      	    * . .J2Eemm--66 Er   