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 )Ú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ÚnameÚstrÚreturnc                   s.   || j v r
| j | S tƒ  | ¡}|| j |< |S ©N)r   ÚsuperÚ__new__)Úclsr   Úobj©Ú	__class__© úN/var/www/html/olx_land/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    

