o
     h                     @  sr   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ZddddZdS )    )annotationsN)ref)
WeakMethodTc                      sN   e Zd ZU dZi Zded< d fddZdd
dZdddZdddZ	  Z
S )SymbolzA 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namestrreturnc                   s.   || j v r
| j | S t | }|| j |< |S N)r   super__new__)clsr   obj	__class__ E/var/www/html/venv/lib/python3.10/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__c                 C  s   | j S r   r   r   r   r   r   __repr__#   s   zSymbol.__repr__tuple[t.Any, ...]c                 C  s   | j fS r   r   r   r   r   r   __getnewargs__&   s   zSymbol.__getnewargs__)r   r	   r
   r   )r   r	   r
   r   )r
   r	   )r
   r   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   __classcell__r   r   r   r   r      s   
 	

r   r   objectr
   
c.Hashablec                 C  s8   t | rt| jt| jfS t| ttfr| 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+   callback!c.Callable[[ref[T]], None] | Noneref[T]c                 C  s   t | r
t| |S t| |S r   )r$   r%   r   r   )r   r,   r   r   r   make_ref<   s   


r/   )r   r"   r
   r#   r   )r   r   r,   r-   r
   r.   )
__future__r   collections.abcabccr$   typingtweakrefr   r   TypeVarr   r   r+   r/   r   r   r   r   <module>   s    

