
    kh                        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	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efdZddefdZy)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_attnset_reentrant_ckptuse_reentrant_ckptFscaled_dot_product_attentionTIMM_FUSED_ATTN   TIMM_REENTRANT_CKPTc                      t         S N)_NO_JIT     N/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/layers/config.pyr   r   ,   s    Nr   c                   4    e Zd ZdeddfdZddZdedefdZy)	r   modereturnNc                     t         | _        |a y r   )r   prevselfr   s     r   __init__zset_no_jit.__init__1   s    	r   c                      y r   r   r    s    r   	__enter__zset_no_jit.__enter__6       r   argsc                     | j                   ayNF)r   r   r    r&   s     r   __exit__zset_no_jit.__exit__9   s    ))r   r   N__name__
__module____qualname__boolr!   r$   r   r*   r   r   r   r   r   0   s-    T d 
c d r   r   c                      t         S r   )_EXPORTABLEr   r   r   r   r   ?       r   c                   4    e Zd ZdeddfdZddZdedefdZy)	r	   r   r   Nc                     t         | _        |a y r   )r2   r   r   s     r   r!   zset_exportable.__init__D       	r   c                      y r   r   r#   s    r   r$   zset_exportable.__enter__I   r%   r   r&   c                     | j                   ayr(   )r   r2   r)   s     r   r*   zset_exportable.__exit__L       iir   r+   r,   r   r   r   r	   r	   C   -    T d 
c d r   r	   c                      t         S r   )_SCRIPTABLEr   r   r   r   r   R   r3   r   c                   4    e Zd ZdeddfdZddZdedefdZy)	r
   r   r   Nc                     t         | _        |a y r   )r<   r   r   s     r   r!   zset_scriptable.__init__W   r6   r   c                      y r   r   r#   s    r   r$   zset_scriptable.__enter__\   r%   r   r&   c                     | j                   ayr(   )r   r<   r)   s     r   r*   zset_scriptable.__exit___   r9   r   r+   r,   r   r   r   r
   r
   V   r:   r   r
   c            
       b    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	y)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                 \    t         t        t        t        f| _        ||a ||a||a||ay y r   )r<   r2   r   _NO_ACTIVATION_JITr   )r    rB   rC   rD   rE   s        r   r!   zset_layer_config.__init__i   sG      g7II	!$K!$KG(!2 )r   r   c                      y r   r   r#   s    r   r$   zset_layer_config.__enter__}   r%   r   r&   c                 &    | j                   \  aaaayr(   )r   r<   r2   r   rG   r)   s     r   r*   zset_layer_config.__exit__   s    
 AE		=['+=r   )NNNNr+   )
r-   r.   r/   __doc__r   r0   r!   r$   r   r*   r   r   r   r   r   e   sh    
 *.)-%)043 3 !3 TN	3
  (~3(c d r   r   experimentalr   c                 D    t         rt        ry| r	t        dkD  S t        dkD  S )NFr   r   )_HAS_FUSED_ATTNr2   _USE_FUSED_ATTN)rK   s    r   r   r      s#    k""Qr   enablec                 X    t         st        j                  d       y |r| rday | rday day )Nz^This version of pytorch does not have F.scaled_dot_product_attention, fused_attn flag ignored.   r   r   )rM   warningswarnrN   )rO   rK   s     r   r   r      s,    vw	r   c                      t         S r   _USE_REENTRANT_CKPTr   r   r   r   r      s    r   c                     | a y r   rU   )rO   s    r   r   r      s     r   )F)TF)T) rJ   osrR   typingr   r   torch__all__r   rG   r2   r<   hasattrnn
functionalrM   environintrN   r0   rV   r   r   r   r	   r   r
   r   r   r   r   r   r   r   r   <module>ra      s   	     
     %((--/MN

""**%678OO BJJ&rzz*?@A   ! !H $ 
4 
d 
D !t !r   