
    NgO                     X   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 r eej        d                   andad	 Z G d
 d          Zd Z G d d          Zd Z G d d          Z G d d          ZddedefdZddedef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_attnFscaled_dot_product_attentionTIMM_FUSED_ATTN   c                      t           S N)_NO_JIT     N/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/config.pyr   r   %   s    Nr   c                   6    e Zd ZdeddfdZddZdedefdZdS )	r   modereturnNc                 "    t           | _        |a d S r   )r   prevselfr   s     r   __init__zset_no_jit.__init__*   s    	r   c                     d S r   r   r   s    r   	__enter__zset_no_jit.__enter__/       r   argsc                     | j         adS NF)r   r   r   r#   s     r   __exit__zset_no_jit.__exit__2   s    )ur   r   N__name__
__module____qualname__boolr   r!   r   r'   r   r   r   r   r   )   sl        T d    
   c d      r   r   c                      t           S r   )_EXPORTABLEr   r   r   r   r   8       r   c                   6    e Zd ZdeddfdZddZdedefdZdS )	r	   r   r   Nc                 "    t           | _        |a d S r   )r/   r   r   s     r   r   zset_exportable.__init__=       	r   c                     d S r   r   r    s    r   r!   zset_exportable.__enter__B   r"   r   r#   c                     | j         adS r%   )r   r/   r&   s     r   r'   zset_exportable.__exit__E       iur   r(   r)   r   r   r   r	   r	   <   l        T d    
   c d      r   r	   c                      t           S r   )_SCRIPTABLEr   r   r   r   r   K   r0   r   c                   6    e Zd ZdeddfdZddZdedefdZdS )	r
   r   r   Nc                 "    t           | _        |a d S r   )r9   r   r   s     r   r   zset_scriptable.__init__P   r3   r   c                     d S r   r   r    s    r   r!   zset_scriptable.__enter__U   r"   r   r#   c                     | j         adS r%   )r   r9   r&   s     r   r'   zset_scriptable.__exit__X   r6   r   r(   r)   r   r   r   r
   r
   O   r7   r   r
   c            
       |    e Zd ZdZ	 	 	 	 ddee         dee         dee         dee         fdZdd	Zd
edef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                 h    t           t          t          t          f| _        ||a ||a||a||ad S d S r   )r9   r/   r   _NO_ACTIVATION_JITr   )r   r?   r@   rA   rB   s        r   r   zset_layer_config.__init__b   sP      g7II	!$K!$KG(!2 )(r   r   c                     d S r   r   r    s    r   r!   zset_layer_config.__enter__v   r"   r   r#   c                     | j         \  aaaadS r%   )r   r9   r/   r   rD   r&   s     r   r'   zset_layer_config.__exit__y   s    
 AE	=['+=ur   )NNNNr(   )
r*   r+   r,   __doc__r   r-   r   r!   r   r'   r   r   r   r   r   ^   s         
 *.)-%)043 3 3 !3 TN	3
  (~3 3 3 3(   c d      r   r   experimentalr   c                 R    t           rt          rdS | rt          dk    S t          dk    S )NFr   r   )_HAS_FUSED_ATTNr/   _USE_FUSED_ATTN)rH   s    r   r   r      s4     k u #""Qr   Tenablec                 `    t           st          j        d           d S |r| rdad S | rdad S dad S )Nz^This version of pytorch does not have F.scaled_dot_product_attention, fused_attn flag ignored.   r   r   )rJ   warningswarnrK   )rL   rH   s     r   r   r      sR     vwww  	 r   )F)TF)rG   osrO   typingr   r   torch__all__r   rD   r/   r9   hasattrnn
functionalrJ   environintrK   r   r   r   r	   r   r
   r   r-   r   r   r   r   r   <module>rZ      s    				                     
     '%(-/MNN
""c"*%6788OOO                           ! ! ! ! ! ! ! !H  $    
 
4 
d 
 
 
 
 
 
r   