a
    d                     @   sf  d Z ddlmZmZmZ ddlT ddlT ddlT ddlm	Z	m
Z
mZ deejjv Zdeejjv Zdeejjv Zd	eejjv Zeerejneerejneerejneejejejejejejee e!e"erej#ne$erej%ne&e'd
Z(eerejne)erejne)erejne*er ej#ne+er.ej%ne,e-dZ.eerFejne/erTejne/erbejne0erpej#ne1er~ej%ne2e3dZ4e4e.e(fZ5e5D ]*Z6e67de68d e67de68d qeerej9ne:erej9ne:erej;ne;ej<ej=ej>ej?e@ejAejBeCeDeEeFerejGneHer*ejIneJeKejLdZMeerFej9neNerTej9neNerbej;neOerpejGnePer~ejIneQeRdZSeerej9neTerej9neTerej;neUerejGneVerejIneWeXdZYeYeSeMfZZeZD ]*Z6e67de68d e67de68d qdeee[f dddZ\deeej] e[f dddZ^deej]e[f dddZ_dS )zF Activation Factory
Hacked together by / Copyright 2020 Ross Wightman
    )UnionCallableType   )*)is_exportableis_scriptable	is_no_jitsilu	hardswishhardsigmoidmish)r
   swishr   relurelu6
leaky_relueluceluselugelu	gelu_tanhsigmoidtanhhard_sigmoid
hard_swish	hard_mish)r
   r   r   r   r   r   r   r   )r
   r   r   r   r   r   r   Zprelur   r   r   r   r   r   r   r   r   identityr   namec                 C   s\   | sdS t | tr| S t s8t s8t s8| tv r8t|  S t sTt sT| tv rTt|  S t|  S )z Activation Function Factory
    Fetching activation fns by name with this function allows export or torch script friendly
    functions to be returned dynamically based on current config.
    N)
isinstancer   r	   r   r   
_ACT_FN_ME_ACT_FN_JIT_ACT_FN_DEFAULTr    r#   _/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/timm/layers/create_act.py
get_act_fnl   s    
r%   c                 C   s\   | sdS t | ts| S t s8t s8t s8| tv r8t|  S t sTt sT| tv rTt|  S t|  S )z Activation Layer Factory
    Fetching activation layers by name with this function allows export or torch script friendly
    functions to be returned dynamically based on current config.
    N)r   strr	   r   r   _ACT_LAYER_ME_ACT_LAYER_JIT_ACT_LAYER_DEFAULTr   r#   r#   r$   get_act_layer   s    
r*   Nc                 K   sd   t | }|d u rd S |d u r*|f i |S z|f d|i|W S  ty^   |f i | Y S 0 d S )Ninplace)r*   	TypeError)r   r+   kwargsZ	act_layerr#   r#   r$   create_act_layer   s    r.   )r   )r   )N)`__doc__typingr   r   r   ZactivationsZactivations_jitZactivations_meconfigr   r   r	   dirZtorchnnZ
functionalZ	_has_siluZ_has_hardswishZ_has_hardsigmoidZ	_has_mishdictFr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   Z	swish_jitZmish_jitZhard_sigmoid_jitZhard_swish_jitZhard_mish_jitr!   Zswish_meZmish_meZhard_sigmoid_meZhard_swish_meZhard_mish_mer    Z_ACT_FNSa
setdefaultgetZSiLUZSwishZMishZReLUZReLU6Z	LeakyReLUZELUZPReLUZCELUZSELUZGELUZGELUTanhZSigmoidZTanhZHardsigmoidZHardSigmoidZ	HardswishZ	HardSwishZHardMishZIdentityr)   ZSwishJitZMishJitZHardSigmoidJitZHardSwishJitZHardMishJitr(   ZSwishMeZMishMeZHardSigmoidMeZHardSwishMeZ
HardMishMer'   Z_ACT_LAYERSr&   r%   Moduler*   r.   r#   r#   r#   r$   <module>   s   		
		
