a
    h                  
   @   s   d Z ddlZddlmZmZmZmZmZmZ ddl	m
Z
 edZe
dZedeeef eeeef dd	d
Zeded eeeeef geeef f ddd
Zdeeeef  eeeeef eeeef geeef f f ddd
ZdS )za
APIs related to torch.compile which lazily import torch._dynamo to avoid
circular dependencies.
    N)CallableLiteralOptionaloverloadTypeVarUnion)	ParamSpec_T_PT)fn	recursivereturnc                 C   s   d S N r   r   r   r   </var/www/auris/lib/python3.9/site-packages/torch/_compile.py_disable_dynamo   s    r   c                 C   s   d S r   r   r   r   r   r   r      s    c                    sD    dur2t  tjtjtd fdd}|S t jtdS dS )au  
    This API should be only used inside torch, external users should still use
    torch._dynamo.disable. The main goal of this API is to avoid circular
    imports issues that is common while using _dynamo.disable inside torch
    itself.

    This API avoids it by lazily importing torch._dynamo from the import time to
    the invocation of the decorated function.
    N)argskwargsr   c                     sB   t  dd }|d u r4dd l}|jj dd}| _|| i |S )N__dynamo_disabler   F)Zwrapping)getattrZtorch._dynamoZ_dynamodisabler   )r   r   Z
disable_fnZtorchr   r   r   inner)   s    z_disable_dynamo.<locals>.inner)r   )	functoolswrapsr
   r   r   r	   partialr   )r   r   r   r   r   r   r      s
    )T)NT)NT)__doc__r   typingr   r   r   r   r   r   Ztyping_extensionsr   r	   r
   boolr   r   r   r   r   <module>   s,     
  ,