o
    ߗi                     @   s   d dl Z d dlZd dlZd dlmZ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eZddeeeed	f f d
dfddZG dd deZdS )    N)TupleUnion)	trace_log)
IS_WINDOWSTEST_WITH_CROSSREFTEST_WITH_TORCHDYNAMOTestCase   )configresetutils needs.returnc              	   C   s~   ddl m} tststrd S t| tr| f} | D ]!}|dkr'tj	 s& d S qzt
| W q ty9   Y  d S w |  d S )Nr   )	run_testscuda)$torch.testing._internal.common_utilsr   r   r   r   
isinstancestrtorchr   is_available	importlibimport_moduleImportError)r   r   needr   r   U/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/torch/_dynamo/test_case.pyr      s    


r   c                       s\   e Zd ZU ejed< ed fddZed fddZd fdd	Z	d fd
dZ
  ZS )r   _exit_stackr   Nc                    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)raise_on_ctx_manager_usagesuppress_errorslog_compilation_metrics)r   
setUpClass
contextlib	ExitStackr   enter_contextr
   patchr!   r#   r   r   r(   2   s   

zTestCase.setUpClassc                    s>   t  | _t   t  tj  t	
 | _t| j d S r   )r   is_grad_enabled_prior_is_grad_enabledr   setUpr   r   countersclearloggingNullHandlerhandlerr   
addHandler)selfr#   r   r   r/   >   s   



zTestCase.setUpc                    st   t | j tj D ]\}}t||  qt  tj	  t
   | jt ur8td t| j d S d S )NzRunning test changed grad mode)r   removeHandlerr4   r   r0   itemsprintmost_commonr   r1   r   tearDownr.   r   r-   logwarningset_grad_enabled)r6   kvr#   r   r   r;   F   s   


zTestCase.tearDown)r   N)__name__
__module____qualname__r)   r*   __annotations__classmethodr    r(   r/   r;   __classcell__r   r   r#   r   r   *   s   
 
r   )r   )r)   r   r2   typingr   r   r   torch.testingtorch._logging._internalr   r   r   r   r   r   TorchTestCase r
   r   r   	getLoggerrA   r<   r   r   r   r   r   r   <module>   s    
$