
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a’  ã                   @   sà  d ddddddddd	d
ddgZ ddlmZ ddlmZ ddlmZ ddlmZ dZ	dZ
e	e
fdd „Ze	e
fdd„Zefdd„Zefdd„Zefdd„Zefdd„Zefdd„Zefd d!„Zefd"d#„Zefd$d%„Zefd&d'„Zefd(d)„Zefd*d+„Zefd,d-„Zd.efd/efd0efgd0efd1efd.efgd1efd0efd/efgd/efd.efd1efgd2œZd3d„ Zd4d„ Zzdd5lmZ W n ek
�rŽ   Y nX eƒ Z e fd6d„Z!zdd7lm!Z! W n ek
�rÈ   Y nX G d8d„ dƒZ"zdd9lm"Z" W n ek
�rþ   Y nX G d:d	„ d	eƒZ#d;d<„ Z$ed=d>d?d@dAgƒZ%G dBdC„ dCe&ƒZ'eƒ fe(e)he*e+e,fdDdE„Z-dXdHd„Z.dIdJ„ Z/zddKlm/Z/ W n ek
�rŽ   Y nX dLdM„ Z0dYdOdP„Z1dQdR„ Z2dSdT„ Z3dUd
„ Z4G dVd„ dƒZ5eƒ Z6G dWd„ dƒZ7dNS )ZÚupdate_wrapperÚwrapsÚWRAPPER_ASSIGNMENTSÚWRAPPER_UPDATESÚtotal_orderingÚ
cmp_to_keyÚ	lru_cacheÚreduceÚpartialÚpartialmethodÚsingledispatchÚsingledispatchmethodÚcached_propertyé    )Úget_cache_token)Ú
namedtuple)Úrecursive_repr)ÚRLock)Ú
__module__Ú__name__Ú__qualname__Ú__doc__Ú__annotations__)Ú__dict__c              	   C   sf   |D ]4}zt ||ƒ}W n tk
r*   Y qX t| ||ƒ q|D ]}t | |ƒ t ||i ƒ¡ q>|| _| S ©N)ÚgetattrÚAttributeErrorÚsetattrÚupdateÚ__wrapped__)ÚwrapperÚwrappedÚassignedÚupdatedÚattrÚvalue© r%   ú./opt/alt/python38/lib64/python3.8/functools.pyr   "   s    c                 C   s   t t| ||d�S )N©r    r!   r"   )r	   r   r'   r%   r%   r&   r   @   s     ÿc                 C   s$   |   |¡}||kr|S | o"| |kS r   ©Ú__lt__©ÚselfÚotherÚNotImplementedÚ	op_resultr%   r%   r&   Ú_gt_from_ltX   s    
r/   c                 C   s   |   |¡}|p| |kS r   r(   r*   r%   r%   r&   Ú_le_from_lt_   s    
r0   c                 C   s   |   |¡}||kr|S | S r   r(   r*   r%   r%   r&   Ú_ge_from_ltd   s    
r1   c                 C   s$   |   |¡}||kr|S | p"| |kS r   ©Ú__le__r*   r%   r%   r&   Ú_ge_from_lek   s    
r4   c                 C   s"   |   |¡}||kr|S |o | |kS r   r2   r*   r%   r%   r&   Ú_lt_from_ler   s    
r5   c                 C   s   |   |¡}||kr|S | S r   r2   r*   r%   r%   r&   Ú_gt_from_ley   s    
r6   c                 C   s$   |   |¡}||kr|S | o"| |kS r   ©Ú__gt__r*   r%   r%   r&   Ú_lt_from_gt€   s    
r9   c                 C   s   |   |¡}|p| |kS r   r7   r*   r%   r%   r&   Ú_ge_from_gt‡   s    
r:   c                 C   s   |   |¡}||kr|S | S r   r7   r*   r%   r%   r&   Ú_le_from_gtŒ   s    
r;   c                 C   s$   |   |¡}||kr|S | p"| |kS r   ©Ú__ge__r*   r%   r%   r&   Ú_le_from_ge“   s    
r>   c                 C   s"   |   |¡}||kr|S |o | |kS r   r<   r*   r%   r%   r&   Ú_gt_from_geš   s    
r?   c                 C   s   |   |¡}||kr|S | S r   r<   r*   r%   r%   r&   Ú_lt_from_ge¡   s    
r@   r8   r3   r=   r)   )r)   r3   r8   r=   c                    sV   ‡ fdd„t D ƒ}|stdƒ‚t|ƒ}t | D ]"\}}||kr.||_tˆ ||ƒ q.ˆ S )Nc                    s(   h | ] }t ˆ |d ƒt t|d ƒk	r|’qS r   )r   Úobject)Ú.0Úop©Úclsr%   r&   Ú	<setcomp>º   s      z!total_ordering.<locals>.<setcomp>z6must define at least one ordering operation: < > <= >=)Ú_convertÚ
ValueErrorÚmaxr   r   )rE   ÚrootsÚrootÚopnameÚopfuncr%   rD   r&   r   ·   s    c                    s   G ‡ fdd„dt ƒ}|S )Nc                       sZ   e Zd ZdgZdd„ Z‡ fdd„Z‡ fdd„Z‡ fdd	„Z‡ fd
d„Z‡ fdd„Z	dZ
dS )zcmp_to_key.<locals>.KÚobjc                 S   s
   || _ d S r   ©rN   )r+   rN   r%   r%   r&   Ú__init__Í   s    zcmp_to_key.<locals>.K.__init__c                    s   ˆ | j |j ƒdk S ©Nr   rO   ©r+   r,   ©Úmycmpr%   r&   r)   Ï   s    zcmp_to_key.<locals>.K.__lt__c                    s   ˆ | j |j ƒdkS rQ   rO   rR   rS   r%   r&   r8   Ñ   s    zcmp_to_key.<locals>.K.__gt__c                    s   ˆ | j |j ƒdkS rQ   rO   rR   rS   r%   r&   Ú__eq__Ó   s    zcmp_to_key.<locals>.K.__eq__c                    s   ˆ | j |j ƒdkS rQ   rO   rR   rS   r%   r&   r3   Õ   s    zcmp_to_key.<locals>.K.__le__c                    s   ˆ | j |j ƒdkS rQ   rO   rR   rS   r%   r&   r=   ×   s    zcmp_to_key.<locals>.K.__ge__N)r   r   r   Ú	__slots__rP   r)   r8   rU   r3   r=   Ú__hash__r%   rS   r%   r&   ÚKË   s   rX   )rA   )rT   rX   r%   rS   r&   r   É   s    )r   c                 C   sZ   t |ƒ}|tkr>zt|ƒ}W qB tk
r:   tdƒd ‚Y qBX n|}|D ]}| ||ƒ}qF|S )Nz0reduce() of empty sequence with no initial value)ÚiterÚ_initial_missingÚnextÚStopIterationÚ	TypeError)ZfunctionZsequenceÚinitialÚitr$   Zelementr%   r%   r&   r   è   s    )r   c                       sF   e Zd ZdZ‡ fdd„Zdd„ Zeƒ dd„ ƒZdd	„ Zd
d„ Z	‡  Z
S )r	   )ÚfuncÚargsÚkeywordsr   Ú__weakref__c                   sZ   t |ƒstdƒ‚t|dƒr4|j| }|j|–}|j}tt| ƒ | ¡}||_||_||_|S )Nz#the first argument must be callabler`   )	Úcallabler]   Úhasattrra   rb   r`   Úsuperr	   Ú__new__)rE   r`   ra   rb   r+   ©Ú	__class__r%   r&   rg     s    


zpartial.__new__c                O   s   | j |–}| j| j|ž|ŽS r   ©rb   r`   ra   )r+   ra   rb   r%   r%   r&   Ú__call__%  s    
zpartial.__call__c                 C   s‚   t | ƒj}t| jƒg}| dd„ | jD ƒ¡ | dd„ | j ¡ D ƒ¡ t | ƒjdkrld|› dd 	|¡› d�S |› dd 	|¡› d�S )	Nc                 s   s   | ]}t |ƒV  qd S r   )Úrepr)rB   Úxr%   r%   r&   Ú	<genexpr>-  s     z#partial.__repr__.<locals>.<genexpr>c                 s   s    | ]\}}|› d |›�V  qdS )ú=Nr%   ©rB   ÚkÚvr%   r%   r&   rn   .  s     Ú	functoolsz
functools.ú(ú, ú))
Útyper   rl   r`   Úextendra   rb   Úitemsr   Újoin)r+   Úqualnamera   r%   r%   r&   Ú__repr__)  s    
zpartial.__repr__c                 C   s*   t | ƒ| jf| j| j| jpd | jp$d ffS r   )rw   r`   ra   rb   r   ©r+   r%   r%   r&   Ú
__reduce__3  s     ÿzpartial.__reduce__c                 C   sÌ   t |tƒstdƒ‚t|ƒdkr0tdt|ƒ› �ƒ‚|\}}}}t|ƒrrt |tƒrr|d k	r`t |tƒrr|d k	rzt |tƒsztdƒ‚t|ƒ}|d kr�i }nt|ƒtk	r¤t|ƒ}|d kr°i }|| _|| _|| _	|| _
d S )Nz(argument to __setstate__ must be a tupleé   zexpected 4 items in state, got zinvalid partial state)Ú
isinstanceÚtupler]   Úlenrd   Údictrw   r   r`   ra   rb   )r+   Ústater`   ra   ÚkwdsÚ	namespacer%   r%   r&   Ú__setstate__7  s4    
ÿÿþþzpartial.__setstate__)r   r   r   rV   rg   rk   r   r|   r~   r‡   Ú__classcell__r%   r%   rh   r&   r	     s   
	)r	   c                   @   s@   e Zd Zdd„ Zde_dd„ Zdd„ Zdd	d
„Zedd„ ƒZ	dS )r
   c                  O   sØ   t | ƒdkr| ^}}} nV| s&tdƒ‚nHd|krZ| d¡}| ^}} dd l}|jdtdd� ntdt | ƒd  ƒ‚t| ƒ} t|ƒs–t|d	ƒs–td
 	|¡ƒ‚t
|tƒrÂ|j|_|j|  |_|j|–|_n||_| |_||_d S )Né   z8descriptor '__init__' of partialmethod needs an argumentr`   r   z0Passing 'func' as keyword argument is deprecated)Ú
stacklevelz8type 'partialmethod' takes at least one argument, got %dé   Ú__get__z${!r} is not callable or a descriptor)r‚   r]   ÚpopÚwarningsÚwarnÚDeprecationWarningr�   rd   re   Úformatr€   r
   r`   ra   rb   )ra   rb   r+   r`   rŽ   r%   r%   r&   rP   ]  s6    

 ÿ
ÿÿ
zpartialmethod.__init__z#($self, func, /, *args, **keywords)c                 C   sN   d  tt| jƒ¡}d  dd„ | j ¡ D ƒ¡}d}|j| jj| jj	| j
||d�S )Nru   c                 s   s   | ]\}}d   ||¡V  qdS )z{}={!r}N)r‘   rp   r%   r%   r&   rn   ƒ  s   ÿz)partialmethod.__repr__.<locals>.<genexpr>z*{module}.{cls}({func}, {args}, {keywords}))ÚmodulerE   r`   ra   rb   )rz   Úmaprl   ra   rb   ry   r‘   ri   r   r   r`   )r+   ra   rb   Úformat_stringr%   r%   r&   r|   �  s    
ÿ
üzpartialmethod.__repr__c                    s   ‡ fdd„}ˆ j |_ ˆ |_|S )Nc                   s    ˆ j |–}ˆ j| fˆ j|ž|ŽS r   rj   )Úcls_or_selfra   rb   r}   r%   r&   Ú_method�  s    
z3partialmethod._make_unbound_method.<locals>._method)Ú__isabstractmethod__Ú_partialmethod)r+   r–   r%   r}   r&   Ú_make_unbound_methodŒ  s    z"partialmethod._make_unbound_methodNc                 C   s€   t | jdd ƒ}d }|d k	rd|||ƒ}|| jk	rdt|f| jž| jŽ}z|j|_W n tk
rb   Y nX |d kr||  ¡  ||¡}|S )NrŒ   )	r   r`   r	   ra   rb   Ú__self__r   r™   rŒ   )r+   rN   rE   ÚgetÚresultÚnew_funcr%   r%   r&   rŒ   ”  s    

zpartialmethod.__get__c                 C   s   t | jddƒS ©Nr—   F©r   r`   r}   r%   r%   r&   r—   §  s    z"partialmethod.__isabstractmethod__)N)
r   r   r   rP   Ú__text_signature__r|   r™   rŒ   Úpropertyr—   r%   r%   r%   r&   r
   U  s   "
c                 C   s   t | tƒr| j} q | S r   )r€   r	   r`   ©r`   r%   r%   r&   Ú_unwrap_partial­  s    
r£   Ú	CacheInfoÚhitsÚmissesÚmaxsizeÚcurrsizec                   @   s$   e Zd ZdZefdd„Zdd„ ZdS )Ú
_HashedSeqÚ	hashvaluec                 C   s   || d d …< ||ƒ| _ d S r   ©rª   )r+   ÚtupÚhashr%   r%   r&   rP   Á  s    z_HashedSeq.__init__c                 C   s   | j S r   r«   r}   r%   r%   r&   rW   Å  s    z_HashedSeq.__hash__N)r   r   r   rV   r­   rP   rW   r%   r%   r%   r&   r©   ¸  s   r©   c           
         s”   | }|r&||7 }|  ¡ D ]}	||	7 }q|rh||‡ fdd„| D ƒƒ7 }|rŒ||‡ fdd„| ¡ D ƒƒ7 }n$||ƒdkrŒˆ |d ƒ|krŒ|d S t|ƒS )Nc                 3   s   | ]}ˆ |ƒV  qd S r   r%   ©rB   rr   ©rw   r%   r&   rn   à  s     z_make_key.<locals>.<genexpr>c                 3   s   | ]}ˆ |ƒV  qd S r   r%   r®   r¯   r%   r&   rn   â  s     r‹   r   )ry   Úvaluesr©   )
ra   r…   ÚtypedÚkwd_markÚ	fasttypesr�   rw   r‚   ÚkeyÚitemr%   r¯   r&   Ú	_make_keyÈ  s    
 r¶   é€   Fc                    sn   t ˆ tƒrˆ dk r\d‰ nDtˆ ƒrLt ˆtƒrLˆ d }‰ t|ˆ ˆtƒ}t||ƒS ˆ d k	r\tdƒ‚‡ ‡fdd„}|S )Nr   r·   z=Expected first argument to be an integer, a callable, or Nonec                    s   t | ˆ ˆtƒ}t|| ƒS r   )Ú_lru_cache_wrapperÚ
_CacheInfor   )Úuser_functionr   ©r§   r±   r%   r&   Údecorating_function  s    z&lru_cache.<locals>.decorating_function)r€   Úintrd   Úboolr¸   r¹   r   r]   )r§   r±   rº   r   r¼   r%   r»   r&   r   ç  s    


ÿc                    sò   t ƒ ‰t‰d\‰‰‰ ‰i ‰d ‰	‰d‰ˆj‰ˆj‰tƒ ‰
g ‰ˆˆd d gˆd d …< ˆdkrh‡‡fdd„}nNˆd krŒ‡‡‡	‡‡‡‡‡fdd„}n*‡ ‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡fdd„}‡‡‡	‡
‡‡fdd	„}‡‡‡	‡
‡‡fd
d„}||_||_|S )N)r   r‹   r‰   é   r   Fc                     s   ˆ d7 ‰ ˆ| |Ž}|S ©Nr‹   r%   )ra   r…   rœ   )r¦   rº   r%   r&   r   $  s    
z#_lru_cache_wrapper.<locals>.wrapperc                     sH   ˆ| |ˆƒ}ˆ|ˆƒ}|ˆk	r*ˆd7 ‰|S ˆd7 ‰ˆ| |Ž}|ˆ |< |S rÀ   r%   )ra   r…   r´   rœ   )ÚcacheÚ	cache_getr¥   Úmake_keyr¦   Úsentinelr±   rº   r%   r&   r   -  s    

c               
      s>  ˆ
| |ˆƒ}ˆ	�z ˆ|ƒ}|d k	r~|\}}}}||ˆ< ||ˆ< ˆˆ }| |ˆ< ˆˆ< ||ˆ< ˆ|ˆ< ˆd7 ‰|W  5 Q R £ S ˆd7 ‰W 5 Q R X ˆ| |Ž}ˆ	�– |ˆkrªn†ˆrúˆ}	||	ˆ < ||	ˆ< |	ˆ ‰ˆˆ  }
ˆˆ }d  ˆˆ < ˆˆ< ˆ|
= |	ˆ|< n6ˆˆ }|ˆ||g}| |ˆ<  ˆˆ< ˆ|< ˆƒ ˆk‰W 5 Q R X |S rÀ   r%   )ra   r…   r´   ÚlinkZ	link_prevZ	link_nextZ_keyrœ   ZlastZoldrootZoldkeyZ	oldresult)ÚKEYÚNEXTÚPREVÚRESULTrÁ   rÂ   Ú	cache_lenÚfullr¥   ÚlockrÃ   r§   r¦   rK   r±   rº   r%   r&   r   <  sB    

c                
      s,   ˆ� ˆ ˆˆˆˆƒ ƒW  5 Q R £ S Q R X d S r   r%   r%   )r¹   rÊ   r¥   rÌ   r§   r¦   r%   r&   Ú
cache_infou  s    z&_lru_cache_wrapper.<locals>.cache_infoc                	      s<   ˆ�. ˆ   ¡  ˆˆd d gˆd d …< d ‰‰d‰W 5 Q R X d S )Nr   F)Úclearr%   )rÁ   rË   r¥   rÌ   r¦   rK   r%   r&   Úcache_clearz  s
    z'_lru_cache_wrapper.<locals>.cache_clear)rA   r¶   r›   Ú__len__r   rÍ   rÏ   )rº   r§   r±   r¹   r   rÍ   rÏ   r%   )rÆ   rÇ   rÈ   rÉ   r¹   rÁ   rÂ   rÊ   rË   r¥   rÌ   rÃ   r§   r¦   rK   rÄ   r±   rº   r&   r¸     s*    *9	r¸   )r¸   c                 C   sŽ   g }dd„ | D ƒ} | s|S | D ]2}|d }| D ]}||dd … kr.d } qq. qRq|d krbt dƒ‚| |¡ | D ]}|d |krp|d= qpqd S )Nc                 S   s   g | ]}|r|‘qS r%   r%   ©rB   Úsr%   r%   r&   Ú
<listcomp>™  s      z_c3_merge.<locals>.<listcomp>r   r‹   zInconsistent hierarchy)ÚRuntimeErrorÚappend)Ú	sequencesrœ   Ús1Ú	candidateÚs2Úseqr%   r%   r&   Ú	_c3_merge‘  s"    
rÛ   Nc           
         s  t t| jƒƒD ]$\}‰tˆdƒrt| jƒ| } q8qd}ˆ rDtˆ ƒng ‰ t| jd |… ƒ}g }t| j|d … ƒ}ˆ D ]0‰t| ˆƒrtt‡fdd„| jD ƒƒst| ˆ¡ qt|D ]‰ˆ  	ˆ¡ qª‡ fdd„|D ƒ}‡ fdd„|D ƒ}‡ fdd„|D ƒ}	t
| gg| | |	 |g |g |g ƒS )	NÚ__abstractmethods__r   c                 3   s   | ]}t |ˆ ƒV  qd S r   )Ú
issubclass)rB   Úb)Úbaser%   r&   rn   È  s    z_c3_mro.<locals>.<genexpr>c                    s   g | ]}t |ˆ d �‘qS ©©Úabcs©Ú_c3_mro©rB   rß   rá   r%   r&   rÓ   Ð  s     z_c3_mro.<locals>.<listcomp>c                    s   g | ]}t |ˆ d �‘qS rà   rã   rå   rá   r%   r&   rÓ   Ñ  s     c                    s   g | ]}t |ˆ d �‘qS rà   rã   rå   rá   r%   r&   rÓ   Ò  s     )Ú	enumerateÚreversedÚ	__bases__re   r‚   ÚlistrÝ   ÚanyrÕ   ÚremoverÛ   )
rE   râ   ÚiÚboundaryÚexplicit_basesÚabstract_basesÚother_basesÚexplicit_c3_mrosÚabstract_c3_mrosÚother_c3_mrosr%   )râ   rß   r&   rä   ¬  sD    
ÿÿÿÿþþþÿrä   c                    sì   t ˆjƒ‰ ‡ ‡fdd„‰‡fdd„ˆD ƒ‰‡fdd„‰‡fdd„ˆD ƒ‰t ˆƒ‰g }ˆD ]†}g }| ¡ D ]0}|ˆ krhtˆ|ƒrh| ‡fdd„|jD ƒ¡ qh|sª| |¡ qX|jtd	d
� |D ] }|D ]}||krÄ| |¡ qÄq¼qXtˆ|d�S )Nc                    s   | ˆ kot | dƒotˆ| ƒS )NÚ__mro__)re   rÝ   )Útyp)ÚbasesrE   r%   r&   Ú
is_relatedâ  s    ÿz _compose_mro.<locals>.is_relatedc                    s   g | ]}ˆ |ƒr|‘qS r%   r%   ©rB   Ún)r÷   r%   r&   rÓ   å  s      z _compose_mro.<locals>.<listcomp>c                    s&   ˆ D ]}| |kr| |j kr dS qdS )NTF)rô   )rõ   r,   )Útypesr%   r&   Úis_strict_baseè  s    z$_compose_mro.<locals>.is_strict_basec                    s   g | ]}ˆ |ƒs|‘qS r%   r%   rø   )rû   r%   r&   rÓ   í  s      c                    s   g | ]}|ˆ kr|‘qS r%   r%   rÑ   )Útype_setr%   r&   rÓ   ö  s      T)r´   Úreverserá   )Úsetrô   Ú__subclasses__rÝ   rÕ   Úsortr‚   rä   )rE   rú   Úmrorõ   ÚfoundÚsubÚsubclsr%   )rö   rE   r÷   rû   rü   rú   r&   Ú_compose_mroÙ  s*    

r  c                 C   st   t | | ¡ ƒ}d }|D ]R}|d k	r\||krX|| jkrX|| jkrXt||ƒsXtd ||¡ƒ‚ qj||kr|}q| |¡S )NzAmbiguous dispatch: {} or {})r  Úkeysrô   rÝ   rÔ   r‘   r›   )rE   Úregistryr  ÚmatchÚtr%   r%   r&   Ú
_find_impl  s"    
ÿþ ÿr
  c                    s”   dd l }dd l}i ‰| ¡ ‰d ‰ ‡ ‡‡fdd„‰d
‡ ‡‡‡fdd„	‰‡‡fdd„}t| dd	ƒ‰| ˆt< ˆ|_ˆ|_| ˆ¡|_ˆj	|_
t|| ƒ |S )Nr   c                    s|   ˆ d k	r"t ƒ }ˆ |kr"ˆ ¡  |‰ zˆ|  }W nH tk
rv   zˆ|  }W n tk
rh   t| ˆƒ}Y nX |ˆ| < Y nX |S r   )r   rÎ   ÚKeyErrorr
  )rE   Úcurrent_tokenÚimpl)Úcache_tokenÚdispatch_cacher  r%   r&   Údispatch.  s    z singledispatch.<locals>.dispatchc                    s´   |d krˆt ˆ tƒr ‡ ‡fdd„S tˆ di ƒ}|s@tdˆ ›d�ƒ‚ˆ }ddlm} tt||ƒ ¡ ƒƒ\}‰ t ˆ tƒsˆtd|›d	ˆ ›d
�ƒ‚|ˆˆ < ˆd kr¨t	ˆ dƒr¨t
ƒ ‰ˆ ¡  |S )Nc                    s
   ˆˆ | ƒS r   r%   )Úf)rE   Úregisterr%   r&   Ú<lambda>N  ó    z2singledispatch.<locals>.register.<locals>.<lambda>r   z(Invalid first argument to `register()`: zS. Use either `@register(some_class)` or plain `@register` on an annotated function.r   )Úget_type_hintszInvalid annotation for z. z is not a class.rÜ   )r€   rw   r   r]   Útypingr  r[   rY   ry   re   r   rÎ   )rE   r`   Úannr  Úargname)r  r  r  r  rD   r&   r  E  s(    

ÿ
ÿz singledispatch.<locals>.registerc                     s&   | st ˆ› d�ƒ‚ˆ | d jƒ| |ŽS )Nz( requires at least 1 positional argumentr   )r]   ri   )ra   Úkw)r  Úfuncnamer%   r&   r   f  s    zsingledispatch.<locals>.wrapperr   zsingledispatch function)N)rú   ÚweakrefÚWeakKeyDictionaryr   rA   r  r  ÚMappingProxyTyper  rÎ   Ú_clear_cacher   )r`   rú   r  r   r%   )r  r  r  r  r  r  r&   r     s    !
c                   @   s4   e Zd Zdd„ Zd
dd„Zddd„Zedd	„ ƒZdS )r   c                 C   s4   t |ƒs t|dƒs t|›d�ƒ‚t|ƒ| _|| _d S )NrŒ   z  is not callable or a descriptor)rd   re   r]   r   Ú
dispatcherr`   ©r+   r`   r%   r%   r&   rP     s    
zsingledispatchmethod.__init__Nc                 C   s   | j j||d�S )Nr¢   )r  r  )r+   rE   Úmethodr%   r%   r&   r  †  s    zsingledispatchmethod.registerc                    s0   ‡ ‡‡fdd„}ˆj |_ ˆj|_t|ˆjƒ |S )Nc                     s$   ˆj  | d j¡}| ˆˆ ¡| |ŽS rQ   )r  r  ri   rŒ   )ra   Úkwargsr!  ©rE   rN   r+   r%   r&   r–   Ž  s    z-singledispatchmethod.__get__.<locals>._method)r—   r  r   r`   )r+   rN   rE   r–   r%   r#  r&   rŒ   �  s
    zsingledispatchmethod.__get__c                 C   s   t | jddƒS rž   rŸ   r}   r%   r%   r&   r—   —  s    z)singledispatchmethod.__isabstractmethod__)N)N)r   r   r   rP   r  rŒ   r¡   r—   r%   r%   r%   r&   r   x  s
   


c                   @   s&   e Zd Zdd„ Zdd„ Zddd„ZdS )	r   c                 C   s    || _ d | _|j| _tƒ | _d S r   )r`   Úattrnamer   r   rÌ   r   r%   r%   r&   rP   ¤  s    zcached_property.__init__c                 C   s8   | j d kr|| _ n"|| j kr4td| j ›d|›d�ƒ‚d S )Nz?Cannot assign the same cached_property to two different names (z and z).)r$  r]   )r+   ÚownerÚnamer%   r%   r&   Ú__set_name__ª  s    

ÿzcached_property.__set_name__Nc              	   C   sö   |d kr| S | j d krtdƒ‚z
|j}W n8 tk
r`   dt|ƒj›d| j ›d�}t|ƒd ‚Y nX | | j t¡}|tkrò| j�n | | j t¡}|tkrè|  	|¡}z||| j < W n8 tk
ræ   dt|ƒj›d| j ›d�}t|ƒd ‚Y nX W 5 Q R X |S )NzGCannot use cached_property instance without calling __set_name__ on it.zNo '__dict__' attribute on z instance to cache z
 property.zThe '__dict__' attribute on z7 instance does not support item assignment for caching )
r$  r]   r   r   rw   r   r›   Ú
_NOT_FOUNDrÌ   r`   )r+   Úinstancer%  rÁ   ÚmsgÚvalr%   r%   r&   rŒ   ³  s2    
ÿ
ÿ
ÿzcached_property.__get__)N)r   r   r   rP   r'  rŒ   r%   r%   r%   r&   r   £  s   	)r·   F)N)8Ú__all__Úabcr   Úcollectionsr   Úreprlibr   Ú_threadr   r   r   r   r   r-   r/   r0   r1   r4   r5   r6   r9   r:   r;   r>   r?   r@   rG   r   r   Ú
_functoolsÚImportErrorrA   rZ   r   r	   r
   r£   r¹   ré   r©   r½   Ústrr�   rw   r‚   r¶   r   r¸   rÛ   rä   r  r
  r   r   r(  r   r%   r%   r%   r&   Ú<module>   s¸         ý
ý
þ
þþþþöAX	  ý

,t
-)\(