Ë
    [^(h   ã                   óV  — 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	m
Z
 d dlmZ d dlmZ d dlZd dlZej$                  d„ «       Zd„ Zd„ Zd	„ Zd
„ Zd„ Z G d„ dej2                  j4                  j6                  «      Zd„ Zdededee ejB                     e
g ed   f   f   fd„Z"y)é    N)ÚAbstractContextManager)ÚCallable)Ú
LazyString)Úconfigc               #   ó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    úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/testing/_internal/logging_utils.pyÚpreserve_log_stater      s°   è ø€ ä—‘×)Ñ)×8Ñ8Ó:€JÜ	‡N�N×Ñ×+Ñ+¬E¯N©N×,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Ü—]‘]×(Ñ(×-Ñ-¬b¯j©j¸<ÈÐ:RÓS€NØ×ÑÔ/Ó1Ô2Ø×Ñ˜^Ô,Ü	‡N�N×Ñ×'Ñ'Ô)ØÐó    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Ü	‡N�N×ÑÑ%˜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   ø€ Ü�dœCÔ ¤Z°´sÔ%;ÀÐIYÑ@YØ�O‰OÐ,¨UÑ3°dÑ:Ô;ØäÐ8Ó9Ð9r"   Úmodulesr0   ú,)Úitemsr1   Úboolr4   r3   r   r5   Újoin)r&   r9   r6   ÚvalÚmodule_qnamer7   r8   r   s         @@r   Úkwargs_to_settingsrA   )   s³   ù€ Ø R¨SÑ1Ðà€Hõ:ð —\‘\“^ò 	:‰	ˆˆcÜ�cœ4Ô Ø�O‰O˜DÕ!Ü˜œSÔ!Ù˜4 Õ%Ü˜œTÔ" t¨yÒ'8Ø'*§y¡y£{ò 4Ñ#�˜eÙ˜|¨UÕ3ñ4ô Ð8Ó9Ð9ð	:ð �8‰8�HÓÐr"   c                  ó   ‡ — ˆ fd„}|S )Nc                 óJ   •‡ — t        j                  ddi«      ˆ ˆfd„«       }|S )NÚfx_graph_cacheFc                 ó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!   rA   Úclearr'   )ÚselfÚrecordsÚfnr&   s     €€r   Útest_fnz3make_logging_test.<locals>.wrapper.<locals>.test_fnP   s  ø€ ô �M‰M×ÑÔ!ØˆGä�6‹{˜aÒØ×*Ñ*¨7Ó3ñ &Ù�t˜WÔ%÷&ð &ô "Ô"4Ñ">°vÑ">Ó?ñ &À×AVÑAVÐW^ÓA_ñ &Ù�t˜WÔ%÷&÷ &ô �M‰M×ÑÔ!Ø�M‰MŒOÜÑ"˜6Ñ"ñ " D×$9Ñ$9¸'Ó$Bñ "Ù�4˜Ô!÷"÷ "ð "÷&ð &ú÷&ð &ú÷ &ð &ú÷"ð "ú÷ "ð "úsT   Á
C:Á(DÁ:
DÂDÃD*Ã
DÃ)D*Ã:DÄD	ÄDÄDÄD'	Ä#D*Ä*D3)Úinductor_configr   )rM   rN   r&   s   ` €r   Úwrapperz"make_logging_test.<locals>.wrapperO   s-   ù€ Ü	×	Ñ	Ð 0°%Ð8Ó	9ô	"ó 
:ð	"ð& ˆr"   r$   )r&   rP   s   ` r   Úmake_logging_testrQ   N   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	   rF   rG   r!   rI   )rK   rL   rM   r   s     €€r   rN   z4make_settings_test.<locals>.wrapper.<locals>.test_fnj   sa   ø€ Ü�M‰M×ÑÔ!ØˆGä˜hÓ'ñ "¨×)>Ñ)>¸wÓ)Gñ "Ù�4˜Ô!÷"÷ "÷ "ñ "ú÷ "ð "ús"   ­A&¿
AÁ	A&ÁA#	ÁA&Á&A/r$   )rM   rN   r   s   ` €r   rP   z#make_settings_test.<locals>.wrapperi   s   ù€ õ	"ð ˆr"   r$   )r   rP   s   ` r   Úmake_settings_testrU   h   s   ø€ ôð €Nr"   c                   óJ   ‡ — e Zd Zeˆ fd„«       Zed„ «       Z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   r[   zLoggingTestCase.setUpClassv   s–   ø€ ä‰ÑÔØ�‰×%Ñ%Ü�M‰M×Ñ×$Ñ$¤R§Z¡ZÐ2BÀBÐ1GÓHô	
ð 	�‰×%Ñ%Ü�M‰M×ÑÐ FÈÓMô	
ð 	�‰×%Ñ%Ü�M‰M×ÑÐ >ÀÓFõ	
r"   c                 óØ   — | j                   j                  «        t        j                  j                  j
                  j                  «        t        j                  j                  «        y r   )r\   Úcloser	   r
   r   Ú	log_staterJ   r   )r]   s    r   ÚtearDownClasszLoggingTestCase.tearDownClassƒ   s>   € à�‰×ÑÔÜ�‰× Ñ ×*Ñ*×0Ñ0Ô2Ü�‰×!Ñ!Õ#r"   c                 ó,   ‡— t        ˆfd„|D «       «      S )Nc              3   óB   •K  — | ]  }‰|j                  «       v –— Œ y ­wr   )Ú
getMessage)Ú.0ÚrÚms     €r   ú	<genexpr>z,LoggingTestCase.hasRecord.<locals>.<genexpr>Š   s   øè ø€ Ò8¨1�1˜Ÿ™›Ô&Ñ8ùs   ƒ)Úany)rK   rL   rh   s     `r   Ú	hasRecordzLoggingTestCase.hasRecord‰   s   ø€ ÜÓ8°Ô8Ó8Ð8r"   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$   )rg   ÚrecordrL   s   €€€r   ú<lambda>z+LoggingTestCase.getRecord.<locals>.<lambda>•   s   ø€ Ð"=¸f¸XÀUÈ1È#ÈWÐU\ÐT]Ð ^€ r"   )Úmsgzdid not find record with rn   )re   ÚassertIsNoner   Úfail)rK   rL   rh   rg   ro   s    ` @@r   Ú	getRecordzLoggingTestCase.getRecordŒ   su   ú€ ØˆØò 
	ˆAð �A—L‘L“NÒ"Ø×!Ñ!ØÜ"Ý^óð "ô ð ‘ð
	ð ˆ>Ø�I‰IÐ1°!°°G¸G¸9Ð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   )r4   )ro   Ú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$   )ro   rx   Ú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Ú	getLoggerrH   ÚhandlersÚassertLessEqualÚassertGreaterr}   r   r   r   r   Úobject)
rK   rw   r   Ú	log_qnameÚloggerÚnum_handlersÚhandlerr|   rx   r{   s
    `      @@r   rI   z LoggingTestCase._handler_watcherŸ   sß   ú€ Ü×)Ñ)Ó+ˆ
ô	'ô
 Ÿ™×1Ñ1×>Ñ>×MÑMÓOò 	ˆIÜ×&Ñ& yÓ1ˆFÜ˜vŸ™Ó/ˆLØ× Ñ ØØØyôð ×Ñ˜|¨QÐ0eÔfà!Ÿ?™?ò 	�Ø"Ÿ<™<�õ+ð ×(Ñ(Ü—M‘M×'Ñ'×.Ñ.¨w¸ÀÓIõñ	ð	ð, Ðr"   )
Ú__name__Ú
__module__Ú__qualname__Úclassmethodr[   rb   rk   rt   rI   Ú__classcell__)r^   s   @r   rW   rW   u   s8   ø„ Øó

ó ð

ð ñ$ó ð$ò
9òö&r"   rW   c                 ó¦   ‡ ‡‡‡— t        j                  «       }t        j                  |¬«      Št        j
                  ˆˆˆ fd„«       Šˆˆfd„}||fS )zºExample:
    logs_to_string("torch._inductor.compile_fx", "post_grad_graphs")
    returns the output of TORCH_LOGS="post_grad_graphs" from the
    torch._inductor.compile_fx module.
    ©Ústreamc               3   óÈ   •K  — 	 t         j                  j                  ‰‰«      } | j                  ‰«       d –— | j	                  ‰«       y #  j	                  ‰«       w xY w­wr   )r	   r
   ÚgetArtifactLoggerÚ
addHandlerÚremoveHandler)r‡   r‰   Ú
log_optionÚmodules    €€€r   Útmp_redirect_logsz)logs_to_string.<locals>.tmp_redirect_logsÉ   sO   øè ø€ ð	*Ü—^‘^×5Ñ5°f¸jÓIˆFØ×Ñ˜gÔ&Ûà× Ñ  Õ)øˆF× Ñ  Õ)üs   ƒA"…5A ºA"ÁAÁA"c                  óJ   •— t        ‰«      } | j                   ‰«       «       | S r   )r!   r   )r   r–   r˜   s    €€r   Úctx_managerz#logs_to_string.<locals>.ctx_managerÒ   s%   ø€ Ü! *Ó-ˆ
Ø× Ñ Ñ!2Ó!4Ô5ØÐr"   )ÚioÚStringIOr€   ÚStreamHandlerr   Úcontextmanager)r—   r–   Ú
log_streamrš   r‰   r˜   s   ``  @@r   Úlogs_to_stringr    À   sJ   û€ ô —‘“€JÜ×#Ñ#¨:Ô6€Gä×Ñõ*ó ð*õð
 �{Ð"Ð"r"   r—   Úlog_optionsÚreturnc                 ó(  ‡ ‡‡‡— t        t        ‰«      «      D �cg c]  }t        j                  «       ‘Œ }}|D �cg c]  }t	        j
                  |¬«      ‘Œ c}Št        j                  ˆˆˆ fd„«       Šdt        d   fˆˆfd„}||fS c c}w c c}w )zèExample:
    multiple_logs_to_string("torch._inductor.compile_fx", "pre_grad_graphs", "post_grad_graphs")
    returns the output of TORCH_LOGS="pre_graph_graphs, post_grad_graphs" from the
    torch._inductor.compile_fx module.
    r�   c               3   ód  •K  — ‰D � cg c]"  } t         j                  j                  ‰| «      ‘Œ$ }} 	 t        |‰«      D ]  \  }}|j	                  |«       Œ d –— t        |‰«      D ]  \  }}|j                  |«       Œ y c c} w # t        |‰«      D ]  \  }}|j                  |«       Œ w xY w­wr   )r	   r
   r“   Úzipr”   r•   )ÚoptionÚloggersr‡   r‰   r‚   r¡   r—   s       €€€r   r˜   z2multiple_logs_to_string.<locals>.tmp_redirect_logsã   s´   øè ø€ àR]Ö^È”5—>‘>×3Ñ3°F¸FÕCÐ^ˆÐ^ð	.Ü#& w°Ó#9ò +‘�˜Ø×!Ñ! 'Õ*ð+ãä#& w°Ó#9ò .‘�˜Ø×$Ñ$ WÕ-ñ.ùò _øô $' w°Ó#9ò .‘�˜Ø×$Ñ$ WÕ-ñ.üs&   ƒB0ˆ'B¯B0²)B Á+B0Â'B-Â-B0r¢   Nc                  óh   •— t        dj                  ‰«      «      } | j                   ‰«       «       | S )Nz, )r!   r>   r   )r   r¡   r˜   s    €€r   rš   z,multiple_logs_to_string.<locals>.ctx_managerî   s.   ø€ Ü! $§)¡)¨KÓ"8Ó9ˆ
Ø× Ñ Ñ!2Ó!4Ô5ØÐr"   )	ÚrangerH   r›   rœ   r€   r�   r   rž   r   )r—   r¡   Ú_Úlog_streamsrŸ   rš   r‚   r˜   s   ``    @@r   Úmultiple_logs_to_stringr¬   Ú   sƒ   û€ ô +0´°KÓ0@Ó*AÖB Q”2—;‘;•=ÐB€KÐBØKVÖW¸Z”×%Ñ%¨ZÖ8ÒW€Hä×Ñõ.ó ð.ðÔ/°Ñ5ö ð
 ˜Ð#Ð#ùò' CùÚWs
   ›B
¼B)#Útorch._dynamo.test_caser	   Úunittest.mockr   r   r   Útorch._loggingÚtorch._logging._internalr   Útypingr   Útorch._dynamo.utilsr   Útorch._inductorr   rO   r€   r›   rž   r   r!   r'   rA   rQ   rU   rF   Ú	test_caseÚTestCaserW   r    r2   ÚtupleÚlistrœ   r¬   r$   r"   r   ú<module>r¸      sÙ   ðó Û Û 	Û Û Û Ý -Ý Ý *Ý 5Û Û 	à×Ññ.ó ð.òòòòJò4ôH�e—m‘m×-Ñ-×6Ñ6ô HòV#ð4$ Cð $°sð $¸uÀTÈ"Ï+É+ÑEVÐX`ÐacÐe{ð  }Añ  fBð  bBñ  YCð  FCñ  @Dô $r"   