a
    Ô×0h‹  ã                   @  s€   d dl mZ d dlmZ d dlZd dlZd dlm	Z	 d dlm
Z
 e d¡ZG dd„ dƒZdd	d
œdd„Zdddddœdd„ZdS )é    )ÚannotationsN)Úref)Ú
WeakMethodÚTc                      sb   e Zd ZU dZi Zded< dd dœ‡ fdd„Zdddœd	d
„Zddœdd„Zddœdd„Z	‡  Z
S )ÚSymbolz¬A constant symbol, nicer than ``object()``. Repeated calls return the
    same instance.

    >>> Symbol('foo') is Symbol('foo')
    True
    >>> Symbol('foo')
    foo
    zt.ClassVar[dict[str, Symbol]]ÚsymbolsÚstr)ÚnameÚreturnc                   s.   || j v r| j | S tƒ  | ¡}|| j |< |S ©N)r   ÚsuperÚ__new__)Úclsr	   Úobj©Ú	__class__© ú@/var/www/auris/lib/python3.9/site-packages/blinker/_utilities.pyr      s
    


zSymbol.__new__ÚNonec                 C  s
   || _ d S r   ©r	   )Úselfr	   r   r   r   Ú__init__    s    zSymbol.__init__)r
   c                 C  s   | j S r   r   ©r   r   r   r   Ú__repr__#   s    zSymbol.__repr__ztuple[t.Any, ...]c                 C  s   | j fS r   r   r   r   r   r   Ú__getnewargs__&   s    zSymbol.__getnewargs__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r   r   Ú__classcell__r   r   r   r   r      s   
	r   Úobjectz
c.Hashable)r   r
   c                 C  s8   t  | ¡rt| jƒt| jƒfS t| ttfƒr0| S t| ƒS )z`Get a stable identifier for a receiver or sender, to be used as a dict
    key or in a set.
    )ÚinspectÚismethodÚidÚ__func__Ú__self__Ú
isinstancer   Úint)r   r   r   r   Úmake_id*   s
    
r)   z!c.Callable[[ref[T]], None] | Nonezref[T])r   Úcallbackr
   c                 C  s   t  | ¡rt| |ƒS t| |ƒS r   )r"   r#   r   r   )r   r*   r   r   r   Úmake_ref<   s    

r+   )N)Ú
__future__r   Úcollections.abcÚabcÚcr"   ÚtypingÚtÚweakrefr   r   ÚTypeVarr   r   r)   r+   r   r   r   r   Ú<module>   s   
