o
    g                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlm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 dZde_G d	d dZdddZe
efZG dd de
Z	ddddZdddZG dd dZd ddZdS )!    )annotationsN)partial)ref)BoundMethodWeakrefc                   @  s$   e Zd Zdd Zdd Zdd ZdS )_symbolc                 C  s   | | _ | _dS )zConstruct a new named symbol.N)__name__name)selfr    r
   _/var/www/html/portale_awareness/portale-venv/lib/python3.10/site-packages/blinker/_utilities.py__init__   s   z_symbol.__init__c                 C  s   t | jffS N)symbolr   r	   r
   r
   r   
__reduce__   s   z_symbol.__reduce__c                 C  s   | j S r   )r   r   r
   r
   r   __repr__   s   z_symbol.__repr__N)r   
__module____qualname__r   r   r   r
   r
   r
   r   r      s    r   r   c                   @  s   e Zd ZdZi Zdd ZdS )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                 C  s2   z| j | W S  ty   | j |t| Y S w r   )symbolsKeyError
setdefaultr   )clsr   r
   r
   r   __new__/   s
   zsymbol.__new__N)r   r   r   __doc__r   r   r
   r
   r
   r   r      s    objobjectreturnIdentityTypec                 C  sV   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)r   r
   r
   r   hashable_identity6   s   

r'   c                   @  s"   e Zd ZU dZded< ded< dS )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(   D   s   
 r(   c                 K  s@   t | r
t| |}nt| |}| D ]
\}}t||| q|S )zReturn an annotated weak ref.)callablecallable_referencer(   itemssetattr)r   callbackr   weakkeyvaluer
   r
   r   	referenceK   s   
r4   c                 C  sJ   t | dr| jdurt| |dS t | dr | jdur t| |dS t| |S )z@Return an annotated weak ref, supporting bound instance methods.r#   N)target	on_deleter"   )r    r#   r   r"   r(   )r   r0   r
   r
   r   r-   X   s
   
r-   c                   @  s    e Zd ZdZdd Zdd ZdS )lazy_propertyz(A @property that is only evaluated once.c                 C  s   || _ |j| _d S r   )	_deferredr   )r	   deferredr
   r
   r   r   d   s   zlazy_property.__init__c                 C  s*   |d u r| S |  |}t|| j j| |S r   )r8   r/   r   )r	   r   r   r3   r
   r
   r   __get__h   s
   
zlazy_property.__get__N)r   r   r   r   r   r:   r
   r
   r
   r   r7   a   s    r7   funct.Anyboolc                 C  s   t jdkr
t| S zddlm} t| |rW dS W n	 ty#   Y nw t	| r1| j
} t	| s)t| tr>| j} t| ts6t| sEdS | jjtj@ rNdS tjj}t| dd |u S )N)      r   )	AsyncMockTF_is_coroutine)sysversion_infoasyncioiscoroutinefunctionunittest.mockr@   r$   ImportErrorinspectismethodr   r   r;   
isfunction__code__co_flagsCO_COROUTINE
coroutinesrA   getattr)r;   r@   acicr
   r
   r   is_coroutine_functionp   s,   







rQ   )r   r   r   r   r   )r   r(   )r;   r<   r   r=   )
__future__r   rD   rH   rB   typingt	functoolsr   weakrefr   blinker._saferefr   UnionTupler%   r&   r   r   r   r   r'   	WeakTypesr(   r4   r-   r7   rQ   r
   r
   r
   r   <module>   s(    

	