a
    þdO  ã                   @   sè   d Z ddlZddlZddlmZmZ ddlZg d¢Zdada	da
daeejjdƒZdejv rleejd ƒandad	d
„ ZG dd„ dƒZdd„ ZG dd„ dƒZdd„ ZG dd„ dƒZG dd„ dƒZdeedœdd„Zdeedœdd„ZdS ) z& Model / Layer Config singleton state
é    N)ÚAnyÚOptional)	Úis_exportableÚis_scriptableÚ	is_no_jitÚuse_fused_attnÚset_exportableÚset_scriptableÚ
set_no_jitÚset_layer_configÚset_fused_attnFZscaled_dot_product_attentionZTIMM_FUSED_ATTNé   c                   C   s   t S ©N)Ú_NO_JIT© r   r   ú[/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/timm/layers/config.pyr   %   s    r   c                   @   s:   e Zd Zeddœdd„Zddœdd„Zeedœd	d
„ZdS )r
   N©ÚmodeÚreturnc                 C   s   t | _|a d S r   )r   Úprev©Úselfr   r   r   r   Ú__init__*   s    zset_no_jit.__init__©r   c                 C   s   d S r   r   ©r   r   r   r   Ú	__enter__/   s    zset_no_jit.__enter__©Úargsr   c                 G   s
   | j adS ©NF)r   r   ©r   r   r   r   r   Ú__exit__2   s    zset_no_jit.__exit__©Ú__name__Ú
__module__Ú__qualname__Úboolr   r   r   r    r   r   r   r   r
   )   s   r
   c                   C   s   t S r   )Ú_EXPORTABLEr   r   r   r   r   8   s    r   c                   @   s:   e Zd Zeddœdd„Zddœdd„Zeedœd	d
„ZdS )r   Nr   c                 C   s   t | _|a d S r   )r&   r   r   r   r   r   r   =   s    zset_exportable.__init__r   c                 C   s   d S r   r   r   r   r   r   r   B   s    zset_exportable.__enter__r   c                 G   s
   | j adS r   )r   r&   r   r   r   r   r    E   s    zset_exportable.__exit__r!   r   r   r   r   r   <   s   r   c                   C   s   t S r   )Ú_SCRIPTABLEr   r   r   r   r   K   s    r   c                   @   s:   e Zd Zeddœdd„Zddœdd„Zeedœd	d
„ZdS )r	   Nr   c                 C   s   t | _|a d S r   )r'   r   r   r   r   r   r   P   s    zset_scriptable.__init__r   c                 C   s   d S r   r   r   r   r   r   r   U   s    zset_scriptable.__enter__r   c                 G   s
   | j adS r   )r   r'   r   r   r   r   r    X   s    zset_scriptable.__exit__r!   r   r   r   r   r	   O   s   r	   c                   @   sT   e Zd ZdZdee ee ee ee dœdd„Zddœdd„Zeed	œd
d„Z	dS )r   z— Layer config context manager that allows setting all layer config flags at once.
    If a flag arg is None, it will not change the current value.
    N)Ú
scriptableÚ
exportableÚno_jitÚno_activation_jitc                 C   sB   t tttf| _|d ur|a |d ur&|a|d ur2|a|d ur>|ad S r   )r'   r&   r   Ú_NO_ACTIVATION_JITr   )r   r(   r)   r*   r+   r   r   r   r   b   s    
zset_layer_config.__init__r   c                 C   s   d S r   r   r   r   r   r   r   v   s    zset_layer_config.__enter__r   c                 G   s   | j \aaaadS r   )r   r'   r&   r   r,   r   r   r   r   r    y   s    zset_layer_config.__exit__)NNNN)
r"   r#   r$   Ú__doc__r   r%   r   r   r   r    r   r   r   r   r   ^   s       ûûr   )Úexperimentalr   c                 C   s    t rtrdS | rtdkS tdkS )NFr   r   )Ú_HAS_FUSED_ATTNr&   Ú_USE_FUSED_ATTN)r.   r   r   r   r   ‚   s
    r   T©Úenabler.   c                 C   s2   t st d¡ d S |r | r dan| r*dandad S )Nz^This version of pytorch does not have F.scaled_dot_product_attention, fused_attn flag ignored.é   r   r   )r/   ÚwarningsÚwarnr0   r1   r   r   r   r   ‹   s    
r   )F)TF)r-   Úosr4   Útypingr   r   ZtorchÚ__all__r   r,   r&   r'   ÚhasattrÚnnZ
functionalr/   ÚenvironÚintr0   r   r
   r   r   r   r	   r   r%   r   r   r   r   r   r   Ú<module>   s,   
$	