U
    zâh¸  ã                   @   s|   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mZmZm	Z
 ddlmZmZmZ e e¡Zd
dd„ZG dd	„ d	e
ƒZ	dS )é    N)Ú
IS_WINDOWSÚTEST_WITH_CROSSREFÚTEST_WITH_TORCHDYNAMOÚTestCaseé   )ÚconfigÚresetÚutils© c              	   C   s€   ddl m} tststrd S t| tƒr,| f} | D ]D}|dkrLtj 	¡ sL d S zt
 |¡ W q0 tk
rr   Y  d S X q0|ƒ  d S )Nr   )Ú	run_testsÚcuda)Ú$torch.testing._internal.common_utilsr   r   r   r   Ú
isinstanceÚstrÚtorchr   Zis_availableÚ	importlibÚimport_moduleÚImportError)Zneedsr   Zneedr
   r
   úI/var/www/html/venv/lib/python3.8/site-packages/torch/_dynamo/test_case.pyr      s    
r   c                       sT   e Zd ZU ejed< e‡ fdd„ƒZe‡ fdd„ƒZ‡ fdd„Z	‡ fdd	„Z
‡  ZS )
r   Ú_exit_stackc                    s   | j  ¡  tƒ  ¡  d S ©N)r   ÚcloseÚsuperÚtearDownClass©Úcls©Ú	__class__r
   r   r   *   s    
zTestCase.tearDownClassc                    s0   t ƒ  ¡  t ¡ | _| j tjdddd¡ d S )NTF)Zraise_on_ctx_manager_usageZsuppress_errorsZlog_compilation_metrics)r   Ú
setUpClassÚ
contextlibÚ	ExitStackr   Úenter_contextr   Úpatchr   r   r
   r   r   /   s    

ýÿzTestCase.setUpClassc                    s(   t  ¡ | _tƒ  ¡  tƒ  tj ¡  d S r   )	r   Úis_grad_enabledÚ_prior_is_grad_enabledr   ÚsetUpr   r	   ÚcountersÚclear)Úselfr   r
   r   r%   ;   s    

zTestCase.setUpc                    sd   t j ¡ D ]\}}t|| ¡ ƒ q
tƒ  t j ¡  tƒ  ¡  | j	t
 ¡ k	r`t d¡ t
 | j	¡ d S )NzRunning test changed grad mode)r	   r&   ÚitemsÚprintÚmost_commonr   r'   r   ÚtearDownr$   r   r#   ÚlogÚwarningZset_grad_enabled)r(   ÚkÚvr   r
   r   r,   A   s    


zTestCase.tearDown)Ú__name__Ú
__module__Ú__qualname__r   r    Ú__annotations__Úclassmethodr   r   r%   r,   Ú__classcell__r
   r
   r   r   r   '   s   

r   )r
   )r   r   Úloggingr   Ztorch.testingr   r   r   r   r   ZTorchTestCaseÚ r   r   r	   Ú	getLoggerr1   r-   r   r
   r
   r
   r   Ú<module>   s   

