
    o)f(                        d dl mZ d dlZd dlmZ d dlmZ ej                  ej                  e
e
f   ee
f   Z G d d      Zde_         G d d      Zdd	ZeefZ G d
 de      Z	 d	 ddZddZ G d d      Zy)    )annotationsN)ref)BoundMethodWeakrefc                      e Zd Zd Zd Zd Zy)_symbolc                     |x| _         | _        y)zConstruct a new named symbol.N)__name__name)selfr
   s     O/var/www/html/flask-app/venv/lib/python3.12/site-packages/blinker/_utilities.py__init__z_symbol.__init__   s    $((	    c                (    t         | j                  ffS N)symbolr
   r   s    r   
__reduce__z_symbol.__reduce__   s    		|##r   c                    | j                   S r   )r
   r   s    r   __repr__z_symbol.__repr__   s    yyr   N)r	   
__module____qualname__r   r   r    r   r   r   r      s    )$r   r   r   c                      e Zd ZdZi Zd Zy)r   a?  A constant symbol.

    >>> symbol('foo') is symbol('foo')
    True
    >>> symbol('foo')
    foo

    A slight refinement of the MAGICCOOKIE=object() pattern.  The primary
    advantage of symbol() is its repr().  They are also singletons.

    Repeated calls of symbol('name') will all return the same instance.

    c                    	 | j                   |   S # t        $ r( | j                   j                  |t        |            cY S w xY wr   )symbolsKeyError
setdefaultr   )clsr
   s     r   __new__zsymbol.__new__+   s@    	?;;t$$ 	?;;))$>>	?s    .AAN)r	   r   r   __doc__r   r   r   r   r   r   r      s     G?r   c                    t        | d      r*t        | j                        t        | j                        fS t        | d      r*t        | j                        t        | j
                        fS t        | t        t        f      r| S t        |       S )N__func__im_func)	hasattridr"   __self__r#   im_self
isinstanceintstr)objs    r   hashable_identityr,   2   sj    sJ3<< "S\\"233	i	 3;;CKK11	C#s	$
#wr   c                  &    e Zd ZU dZded<   ded<   y)annotatable_weakrefz7A weakref.ref that supports custom instance attributes.zt.Optional[IdentityType]receiver_id	sender_idN)r	   r   r   r    __annotations__r   r   r   r.   r.   @   s    A))''r   r.   c                    t        |       rt        | |      }nt        | |      } |j                         D ]  \  }}t	        |||        |S )zReturn an annotated weak ref.)callablecallable_referencer.   itemssetattr)objectcallbackr   weakkeyvalues         r   	referencer<   G   sS     !&(3"684'k'') "
Uc5!"Kr   c                    t        | d      r| j                  t        | |      S t        | d      r| j                  t        | |      S t	        | |      S )z@Return an annotated weak ref, supporting bound instance methods.r'   )target	on_deleter&   )r$   r'   r   r&   r.   )r7   r8   s     r   r4   r4   T   sO    vy!fnn&@!8DD		$)D!8DDvx00r   c                      e Zd ZdZd Zd Zy)lazy_propertyz(A @property that is only evaluated once.c                4    || _         |j                  | _        y r   )	_deferredr    )r   deferreds     r   r   zlazy_property.__init__`   s    !''r   c                r    || S | j                  |      }t        || j                   j                  |       |S r   )rC   r6   r	   )r   r+   r   r;   s       r   __get__zlazy_property.__get__d   s5    ;Ks#T^^,,e4r   N)r	   r   r   r    r   rF   r   r   r   rA   rA   ]   s    2(r   rA   )r+   r7   returnIdentityTyper   )rG   r.   )
__future__r   typingtweakrefr   blinker._saferefr   UnionTupler)   r*   rH   r   r	   r   r,   	WeakTypesr.   r<   r4   rA   r   r   r   <module>rQ      s    "   /wwqwwsCx(#s23	 	  ? ?0 $%	(# ( 

1 r   