
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
     Qi                     @   s.  d dl mZ d dlmZ ze W n ek
r<   dd ZY nX zd dlmZ W n   G dd deZY nX zd dl	m
Z
 W n ek
r   d	d
 Z
Y nX G dd deZde_G dd deZzeefZW n ek
r   eZY nX dd ZeefZG dd deZdddZdddZG dd deZdS )    )ref)BoundMethodWeakrefc                 C   s
   t | dS )N__call__)hasattr)object r   C/opt/alt/python38/lib/python3.8/site-packages/blinker/_utilities.pycallable	   s    r	   )defaultdictc                   @   sN   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dS )r
   Nc                 O   s6   |d k	rt |dstdtj| f|| || _d S )Nr   zfirst argument must be callable)r   	TypeErrordict__init__default_factory)selfr   akwr   r   r   r      s    zdefaultdict.__init__c                 C   s2   zt | |W S  tk
r,   | | Y S X d S N)r   __getitem__KeyError__missing__)r   keyr   r   r   r      s    zdefaultdict.__getitem__c                 C   s&   | j d krt||    | |< }|S r   )r   r   )r   r   valuer   r   r   r      s    
zdefaultdict.__missing__c                 C   s0   | j d krt }n| j f}t| |d d |  fS r   )r   tupletypeitems)r   argsr   r   r   
__reduce__%   s    
zdefaultdict.__reduce__c                 C   s   |   S r   )__copy__r   r   r   r   copy,   s    zdefaultdict.copyc                 C   s   t | | j| S r   )r   r   r   r   r   r   r   /   s    zdefaultdict.__copy__c                 C   s"   dd l }t| | j||  S )Nr   )r   r   r   Zdeepcopyr   )r   Zmemor   r   r   r   __deepcopy__2   s    
zdefaultdict.__deepcopy__c                 C   s   d| j t| f S )Nzdefaultdict(%s, %s))r   r   __repr__r   r   r   r   r!   7   s    zdefaultdict.__repr__)N)__name__
__module____qualname__r   r   r   r   r   r   r    r!   r   r   r   r   r
      s   
r
   )contextmanagerc                 C   s   dd }| j |_ |S )Nc                  _   s   t dd S )Nz8Python 2.5 or above is required to use context managers.)RuntimeError)r   r   r   r   r   oops@   s    zcontextmanager.<locals>.oops)r"   )fnr'   r   r   r   r%   ?   s    r%   c                   @   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)r"   name)r   r*   r   r   r   r   H   s    z_symbol.__init__c                 C   s   t | jffS r   )symbolr*   r   r   r   r   r   L   s    z_symbol.__reduce__c                 C   s   | j S r   )r*   r   r   r   r   r!   O   s    z_symbol.__repr__N)r"   r#   r$   r   r   r!   r   r   r   r   r)   F   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   s8   z| j | W S  tk
r2   | j |t| Y S X d S r   )symbolsr   
setdefaultr)   )clsr*   r   r   r   __new__d   s    zsymbol.__new__N)r"   r#   r$   __doc__r,   r/   r   r   r   r   r+   T   s   c                 C   sV   t | drt| jt| jfS t | dr<t| jt| jfS t| trJ| S t| S d S )N__func__im_func)r   idr1   __self__r2   im_self
isinstancetext)objr   r   r   hashable_identityq   s    


r9   c                   @   s   e Zd ZdZdS )annotatable_weakrefz7A weakref.ref that supports custom instance attributes.N)r"   r#   r$   r0   r   r   r   r   r:      s   r:   Nc                 K   s@   t | rt| |}n
t| |}| D ]\}}t||| q&|S )zReturn an annotated weak ref.)r	   callable_referencer:   r   setattr)r   callbackZannotationsZweakr   r   r   r   r   	reference   s    
r>   c                 C   sJ   t | dr | jdk	r t| |dS t | dr@| jdk	r@t| |dS t| |S )z@Return an annotated weak ref, supporting bound instance methods.r5   N)targetZ	on_deleter4   )r   r5   r   r4   r:   )r   r=   r   r   r   r;      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   )	_deferredr0   )r   Zdeferredr   r   r   r      s    zlazy_property.__init__c                 C   s*   |d kr| S |  |}t|| j j| |S r   )rA   r<   r"   )r   r8   r.   r   r   r   r   __get__   s
    
zlazy_property.__get__N)r"   r#   r$   r0   r   rB   r   r   r   r   r@      s   r@   )N)N)weakrefr   Zblinker._saferefr   r	   	NameErrorcollectionsr
   r   
contextlibr%   ImportErrorr   r)   r"   r+   strZunicoder7   r9   Z	WeakTypesr:   r>   r;   r@   r   r   r   r   <module>   s4   ,


	