o
    ‘¸õaÑ  ã                   @   s`   d Z dZz
ddlmZ dZW n ey%   G dd„ dƒZG dd„ dƒZY nw eƒ Ze d	¡Zd
S )zÏ
    Implements signals based on blinker if available, otherwise
    falls silently back to a noop. Shamelessly stolen from flask.signals:
    https://github.com/mitsuhiko/flask/blob/master/flask/signals.py
Fé    )Ú	NamespaceTc                   @   s   e Zd Zddd„ZdS )r   Nc                 C   s
   t ||ƒS ©N)Ú_FakeSignal©ÚselfÚnameÚdoc© r	   ú2/usr/lib/python3/dist-packages/oauthlib/signals.pyÚsignal   s   
zNamespace.signalr   )Ú__name__Ú
__module__Ú__qualname__r   r	   r	   r	   r
   r      s    r   c                   @   sD   e Zd ZdZd	dd„Zdd„ Zdd„ Ze Z Z Z	 Z
 ZZ[dS )
r   a  If blinker is unavailable, create a fake class with the same
        interface that allows sending of signals but will fail with an
        error on anything else.  Instead of doing anything on send, it
        will just ignore the arguments and do nothing instead.
        Nc                 C   s   || _ || _d S r   )r   Ú__doc__r   r	   r	   r
   Ú__init__   s   
z_FakeSignal.__init__c                 O   s   t dƒ‚)NzOsignalling support is unavailable because the blinker library is not installed.)ÚRuntimeError)r   ÚargsÚkwargsr	   r	   r
   Ú_fail   s   z_FakeSignal._failc                  O   s   d S r   r	   )ÚaÚkwr	   r	   r
   Ú<lambda>   s    z_FakeSignal.<lambda>r   )r   r   r   r   r   r   ÚsendÚconnectÚ
disconnectÚhas_receivers_forÚreceivers_forÚtemporarily_connected_toÚconnected_tor	   r	   r	   r
   r      s    
ÿr   zscope-changedN)	r   Úsignals_availableÚblinkerr   ÚImportErrorr   Ú_signalsr   Úscope_changedr	   r	   r	   r
   Ú<module>   s    û