Ë
    g^(h  ã                   óÜ   — d 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ddlZddl	m
Z
 ddlmZmZmZmZ ddlmZmZmZ  ej*                  e«      Zddeeeed	f   f   d
dfd„Z G d„ de«      Zy)aŸ  Testing utilities for Dynamo, providing a specialized TestCase class and test running functionality.

This module extends PyTorch's testing framework with Dynamo-specific testing capabilities.
It includes:
- A custom TestCase class that handles Dynamo-specific setup/teardown
- Test running utilities with dependency checking
- Automatic reset of Dynamo state between tests
- Proper handling of gradient mode state
é    N)ÚUnion)Ú	trace_log)Ú
IS_WINDOWSÚTEST_WITH_CROSSREFÚTEST_WITH_TORCHDYNAMOÚTestCaseé   )ÚconfigÚresetÚutilsÚneeds.Úreturnc                 ó”  — ddl m} t        st        ry t        j
                  j                  «       s*t        r$t        j                  j                  dd«      dk(  ry t        | t        «      r| f} | D ]>  }|dk(  r!t        j                  j                  «       rŒ' y 	 t        j                  |«       Œ@  |«        y # t         $ r Y  y w xY w)Nr   )Ú	run_testsÚTORCHINDUCTOR_WINDOWS_TESTSÚ0Úcuda)Ú$torch.testing._internal.common_utilsr   r   r   ÚtorchÚxpuÚis_availabler   ÚosÚenvironÚgetÚ
isinstanceÚstrr   Ú	importlibÚimport_moduleÚImportError)r   r   Úneeds      úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/test_case.pyr   r   !   s¦   € Ý>åÕ 2Øô �I‰I×"Ñ"Ô$ÝÜ�J‰J�N‰NÐ8¸#Ó>À#ÒEàä�%œÔØ�ˆØò ˆØ�6Š>Ü—:‘:×*Ñ*Õ,ÙðÜ×'Ñ'¨Õ-ðñ …Køô ò Úðús   ÂB:Â:	CÃCc                   óx   ‡ — e Zd ZU ej                  ed<   edˆ fd„«       Zedˆ fd„«       Zdˆ fd„Z	dˆ fd„Z
ˆ xZS )r   Ú_exit_stackc                 óV   •— | j                   j                  «        t        ‰| �  «        y ©N)r#   ÚcloseÚsuperÚtearDownClass©ÚclsÚ	__class__s    €r!   r(   zTestCase.tearDownClass?   s   ø€ à�‰×ÑÔÜ‰ÑÕó    c                 ó¶   •— t         ‰| �  «        t        j                  «       | _        | j                  j                  t        j                  ddd¬«      «       y )NTF)Úraise_on_ctx_manager_usageÚsuppress_errorsÚlog_compilation_metrics)r'   Ú
setUpClassÚ
contextlibÚ	ExitStackr#   Úenter_contextr
   Úpatchr)   s    €r!   r1   zTestCase.setUpClassD   sE   ø€ ä‰ÑÔÜ$×.Ñ.Ó0ˆŒØ�‰×%Ñ%Ü�L‰LØ+/Ø %Ø(-ôõ	
r,   c                 ó  •— t        j                  «       | _        t        ‰| �  «        t        «        t        j                  j                  «        t        j                  «       | _        t        j                  | j                  «       y r%   )r   Úis_grad_enabledÚ_prior_is_grad_enabledr'   ÚsetUpr   r   ÚcountersÚclearÚloggingÚNullHandlerÚhandlerr   Ú
addHandler)Úselfr+   s    €r!   r9   zTestCase.setUpP   sT   ø€ Ü&+×&;Ñ&;Ó&=ˆÔ#Ü‰‰ŒÜŒÜ�‰×ÑÔÜ×*Ñ*Ó,ˆŒÜ×Ñ˜TŸ\™\Õ*r,   c                 óÚ  •— t        j                  | j                  «       t        j                  j                  «       D ]  \  }}t        ||j                  «       «       Œ! t        «        t        j                  j                  «        t        ‰| �-  «        | j                  t        j                  «       ur5t        j!                  d«       t        j"                  | j                  «       y y )NzRunning test changed grad mode)r   ÚremoveHandlerr>   r   r:   ÚitemsÚprintÚmost_commonr   r;   r'   ÚtearDownr8   r   r7   ÚlogÚwarningÚset_grad_enabled)r@   ÚkÚvr+   s      €r!   rF   zTestCase.tearDownX   s£   ø€ Ü×Ñ §¡Ô-Ü—N‘N×(Ñ(Ó*ò 	&‰DˆAˆqÜ�!�Q—]‘]“_Õ%ð	&äŒÜ�‰×ÑÔÜ‰ÑÔØ×&Ñ&¬e×.CÑ.CÓ.EÑEÜ�K‰KÐ8Ô9Ü×"Ñ" 4×#>Ñ#>Õ?ð Fr,   )r   N)Ú__name__Ú
__module__Ú__qualname__r2   r3   Ú__annotations__Úclassmethodr(   r1   r9   rF   Ú__classcell__)r+   s   @r!   r   r   <   sF   ø… Ø×%Ñ%Ó%àô ó ð ð ô	
ó ð	
õ+÷	@ñ 	@r,   r   )© )Ú__doc__r2   r   r<   r   Útypingr   r   Útorch.testingÚtorch._logging._internalr   r   r   r   r   r   ÚTorchTestCaseÚ r
   r   r   Ú	getLoggerrL   rG   r   Útupler   rR   r,   r!   ú<module>r[      s}   ðñó Û Û Û 	Ý ã Û Ý .÷ó ÷ #Ñ "ð €g×Ñ˜Ó!€ñ�U˜3  c¨3 h¡Ð/Ñ0ð ¸$ó ô6%@ˆ}õ %@r,   