
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \òO  ã               @   sÌ   d dl mZmZmZmZmZmZmZmZ d dl	m
Z
mZ d dlZd dlZd dlZeefZdddddd	d
ddddddgZG dd„ deƒZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZG dd„ dƒZdS )é    )ÚgetweakrefcountÚgetweakrefsÚrefÚproxyÚCallableProxyTypeÚ	ProxyTypeÚReferenceTypeÚ_remove_dead_weakref)ÚWeakSetÚ_IterationGuardNr   r   r   r   ÚWeakKeyDictionaryr   r   r   Ú
ProxyTypesÚWeakValueDictionaryr
   Ú
WeakMethodÚfinalizec                   s@   e Zd ZdZddd„Z‡ fdd	„Zd
d„ Zdd„ Zej	Z	‡  Z
S )r   Ú	_func_refÚ
_meth_typeÚ_aliveÚ__weakref__Nc                s~   y|j }|j}W n( tk
r8   tdjt|ƒƒƒd ‚Y nX ‡ ‡fdd„}tj| ||ƒ}t||ƒ|_t|ƒ|_	d|_
t|ƒ‰|S )Nz)argument should be a bound method, not {}c                s&   ˆƒ }|j r"d|_ ˆ d k	r"ˆ |ƒ d S )NF)r   )ÚargÚself)ÚcallbackÚself_wr© ú/usr/lib64/python3.6/weakref.pyÚ_cb3   s
    zWeakMethod.__new__.<locals>._cbT)Ú__self__Ú__func__ÚAttributeErrorÚ	TypeErrorÚformatÚtyper   Ú__new__r   r   r   )ÚclsÚmethr   ÚobjÚfuncr   r   r   )r   r   r   r"   ,   s    

zWeakMethod.__new__c                s2   t ƒ jƒ }| jƒ }|d ks"|d kr&d S | j||ƒS )N)ÚsuperÚ__call__r   r   )r   r%   r&   )Ú	__class__r   r   r(   B   s
    
zWeakMethod.__call__c             C   s>   t |tƒr:| j s|j r"| |kS tj| |ƒo8| j|jkS dS )NF)Ú
isinstancer   r   r   Ú__eq__r   )r   Úotherr   r   r   r+   I   s
    
zWeakMethod.__eq__c             C   s>   t |tƒr:| j s|j r"| |k	S tj| |ƒp8| j|jkS dS )NT)r*   r   r   r   Ú__ne__r   )r   r,   r   r   r   r-   P   s
    
zWeakMethod.__ne__)r   r   r   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r"   r(   r+   r-   r   Ú__hash__Ú__classcell__r   r   )r)   r   r   $   s   
c               @   s¸   e Zd Z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d„ ZeZdd„ Zd*dd„Zdd„ Zdd„ ZeZdd„ Zdd„ Zd d!„ Zd"d#„ Zd+d$d%„Zd&d'„ Zd(d)„ ZdS ),r   c                 st   | st dƒ‚| ^}} t| ƒdkr0t dt| ƒ ƒ‚t|ƒtf‡ fdd„	}||_g |_tƒ |_i  |_‰ |j	| |Ž d S )NzGdescriptor '__init__' of 'WeakValueDictionary' object needs an argumenté   z$expected at most 1 arguments, got %dc                s4   |ƒ }|d k	r0|j r$|jj| jƒ n|ˆ | jƒ d S )N)Ú
_iteratingÚ_pending_removalsÚappendÚkey)ÚwrÚselfrefÚ_atomic_removalr   )Údr   r   Úremovem   s
    z,WeakValueDictionary.__init__.<locals>.remove)
r   Úlenr   r	   Ú_remover6   Úsetr5   ÚdataÚupdate)ÚargsÚkwr   r=   r   )r<   r   Ú__init__f   s    	
zWeakValueDictionary.__init__c             C   s,   | j }| j}x|r&|jƒ }t||ƒ qW d S )N)r6   rA   Úpopr	   )r   Úlr<   r8   r   r   r   Ú_commit_removals}   s
    z$WeakValueDictionary._commit_removalsc             C   s4   | j r| jƒ  | j| ƒ }|d kr,t|ƒ‚n|S d S )N)r6   rH   rA   ÚKeyError)r   r8   Úor   r   r   Ú__getitem__†   s    
zWeakValueDictionary.__getitem__c             C   s   | j r| jƒ  | j|= d S )N)r6   rH   rA   )r   r8   r   r   r   Ú__delitem__�   s    zWeakValueDictionary.__delitem__c             C   s   | j r| jƒ  t| jƒS )N)r6   rH   r>   rA   )r   r   r   r   Ú__len__”   s    zWeakValueDictionary.__len__c             C   s<   | j r| jƒ  y| j| ƒ }W n tk
r2   dS X |d k	S )NF)r6   rH   rA   rI   )r   r8   rJ   r   r   r   Ú__contains__™   s    z WeakValueDictionary.__contains__c             C   s   d| j jt| ƒf S )Nz<%s at %#x>)r)   r.   Úid)r   r   r   r   Ú__repr__¢   s    zWeakValueDictionary.__repr__c             C   s&   | j r| jƒ  t|| j|ƒ| j|< d S )N)r6   rH   ÚKeyedRefr?   rA   )r   r8   Úvaluer   r   r   Ú__setitem__¥   s    zWeakValueDictionary.__setitem__c             C   sF   | j r| jƒ  tƒ }x,| jjƒ D ]\}}|ƒ }|d k	r |||< q W |S )N)r6   rH   r   rA   Úitems)r   Únewr8   r9   rJ   r   r   r   Úcopyª   s    zWeakValueDictionary.copyc             C   sZ   ddl m} | jr| jƒ  | jƒ }x2| jjƒ D ]$\}}|ƒ }|d k	r.|||||ƒ< q.W |S )Nr   )Údeepcopy)rV   rW   r6   rH   r)   rA   rT   )r   ÚmemorW   rU   r8   r9   rJ   r   r   r   Ú__deepcopy__¶   s    z WeakValueDictionary.__deepcopy__Nc             C   sL   | j r| jƒ  y| j| }W n tk
r0   |S X |ƒ }|d krD|S |S d S )N)r6   rH   rA   rI   )r   r8   Údefaultr9   rJ   r   r   r   ÚgetÁ   s    zWeakValueDictionary.getc          
   c   sV   | j r| jƒ  t| ƒ�6 x.| jjƒ D ] \}}|ƒ }|d k	r$||fV  q$W W d Q R X d S )N)r6   rH   r   rA   rT   )r   Úkr9   Úvr   r   r   rT   Ð   s    
zWeakValueDictionary.itemsc          
   c   sN   | j r| jƒ  t| ƒ�. x&| jjƒ D ]\}}|ƒ d k	r$|V  q$W W d Q R X d S )N)r6   rH   r   rA   rT   )r   r\   r9   r   r   r   ÚkeysÙ   s    

zWeakValueDictionary.keysc          	   c   s6   | j r| jƒ  t| ƒ� | jjƒ E d H  W d Q R X d S )N)r6   rH   r   rA   Úvalues)r   r   r   r   Úitervaluerefsã   s    

z!WeakValueDictionary.itervaluerefsc          
   c   sN   | j r| jƒ  t| ƒ�. x&| jjƒ D ]}|ƒ }|d k	r$|V  q$W W d Q R X d S )N)r6   rH   r   rA   r_   )r   r9   r%   r   r   r   r_   ò   s    
zWeakValueDictionary.valuesc             C   s<   | j r| jƒ  x(| jjƒ \}}|ƒ }|d k	r||fS qW d S )N)r6   rH   rA   Úpopitem)r   r8   r9   rJ   r   r   r   ra   û   s    zWeakValueDictionary.popitemc             G   s`   | j r| jƒ  y| jj|ƒƒ }W n tk
r8   d }Y nX |d krX|rN|d S t|ƒ‚n|S d S )Nr   )r6   rH   rA   rF   rI   )r   r8   rC   rJ   r   r   r   rF     s    

zWeakValueDictionary.popc             C   s`   y| j | ƒ }W n tk
r(   d }Y nX |d krX| jr@| jƒ  t|| j|ƒ| j |< |S |S d S )N)rA   rI   r6   rH   rQ   r?   )r   r8   rZ   rJ   r   r   r   Ú
setdefault  s    
zWeakValueDictionary.setdefaultc              O   s°   | st dƒ‚| ^}} t| ƒdkr0t dt| ƒ ƒ‚| r<| d nd }|jrN|jƒ  |j}|d k	ršt|dƒsrti ƒ|ƒ}x&|jƒ D ]\}}t||j	|ƒ||< q|W t|ƒr¬|j
|ƒ d S )NzEdescriptor 'update' of 'WeakValueDictionary' object needs an argumentr4   z$expected at most 1 arguments, got %dr   rT   )r   r>   r6   rH   rA   Úhasattrr!   rT   rQ   r?   rB   )rC   Úkwargsr   Údictr<   r8   rJ   r   r   r   rB      s     
zWeakValueDictionary.updatec             C   s   | j r| jƒ  t| jjƒ ƒS )N)r6   rH   ÚlistrA   r_   )r   r   r   r   Ú	valuerefs3  s    
zWeakValueDictionary.valuerefs)N)N)r.   r/   r0   rE   rH   rK   rL   rM   rN   rP   rS   rV   Ú__copy__rY   r[   rT   r^   Ú__iter__r`   r_   ra   rF   rb   rB   rg   r   r   r   r   r   Z   s,   			

			
c                   s(   e Zd ZdZdd„ Z‡ fdd„Z‡  ZS )rQ   r8   c             C   s   t j| ||ƒ}||_|S )N)r   r"   r8   )r!   Úobr   r8   r   r   r   r   r"   N  s    zKeyedRef.__new__c                s   t ƒ j||ƒ d S )N)r'   rE   )r   rj   r   r8   )r)   r   r   rE   S  s    zKeyedRef.__init__)r8   )r.   r/   r0   r1   r"   rE   r3   r   r   )r)   r   rQ   B  s   
rQ   c               @   s¼   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d„ ZeZdd„ Zd+dd„Zdd„ Zdd„ Zdd„ ZeZdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd,d&d'„Zd-d(d)„ZdS ).r   Nc             C   sF   i | _ t| ƒfdd„}|| _g | _tƒ | _d| _|d k	rB| j|ƒ d S )Nc             S   s.   |ƒ }|d k	r*|j r"|jj| ƒ n|j| = d S )N)r5   r6   r7   rA   )r\   r:   r   r   r   r   r=   d  s
    z*WeakKeyDictionary.__init__.<locals>.removeF)rA   r   r?   r6   r@   r5   Ú
_dirty_lenrB   )r   re   r=   r   r   r   rE   b  s    zWeakKeyDictionary.__init__c             C   s>   | j }| j}x,|r8y||jƒ = W q tk
r4   Y qX qW d S )N)r6   rA   rF   rI   )r   rG   r<   r   r   r   rH   s  s    z"WeakKeyDictionary._commit_removalsc                s&   | j ‰ ‡ fdd„| jD ƒ| _d| _d S )Nc                s   g | ]}|ˆ kr|‘qS r   r   )Ú.0r\   )r<   r   r   ú
<listcomp>‚  s    z5WeakKeyDictionary._scrub_removals.<locals>.<listcomp>F)rA   r6   rk   )r   r   )r<   r   Ú_scrub_removals€  s    z!WeakKeyDictionary._scrub_removalsc             C   s   d| _ | jt|ƒ= d S )NT)rk   rA   r   )r   r8   r   r   r   rL   …  s    zWeakKeyDictionary.__delitem__c             C   s   | j t|ƒ S )N)rA   r   )r   r8   r   r   r   rK   ‰  s    zWeakKeyDictionary.__getitem__c             C   s(   | j r| jr| jƒ  t| jƒt| jƒ S )N)rk   r6   rn   r>   rA   )r   r   r   r   rM   Œ  s    zWeakKeyDictionary.__len__c             C   s   d| j jt| ƒf S )Nz<%s at %#x>)r)   r.   rO   )r   r   r   r   rP   “  s    zWeakKeyDictionary.__repr__c             C   s   || j t|| jƒ< d S )N)rA   r   r?   )r   r8   rR   r   r   r   rS   –  s    zWeakKeyDictionary.__setitem__c             C   s8   t ƒ }x,| jjƒ D ]\}}|ƒ }|d k	r|||< qW |S )N)r   rA   rT   )r   rU   r8   rR   rJ   r   r   r   rV   ™  s    zWeakKeyDictionary.copyc             C   sL   ddl m} | jƒ }x2| jjƒ D ]$\}}|ƒ }|d k	r |||ƒ||< q W |S )Nr   )rW   )rV   rW   r)   rA   rT   )r   rX   rW   rU   r8   rR   rJ   r   r   r   rY   £  s    zWeakKeyDictionary.__deepcopy__c             C   s   | j jt|ƒ|ƒS )N)rA   r[   r   )r   r8   rZ   r   r   r   r[   ¬  s    zWeakKeyDictionary.getc             C   s,   yt |ƒ}W n tk
r    dS X || jkS )NF)r   r   rA   )r   r8   r9   r   r   r   rN   ¯  s
    zWeakKeyDictionary.__contains__c          
   c   sH   t | ƒ�6 x.| jjƒ D ] \}}|ƒ }|d k	r||fV  qW W d Q R X d S )N)r   rA   rT   )r   r9   rR   r8   r   r   r   rT   ¶  s
    
zWeakKeyDictionary.itemsc          
   c   s<   t | ƒ�* x"| jD ]}|ƒ }|d k	r|V  qW W d Q R X d S )N)r   rA   )r   r9   r%   r   r   r   r^   ½  s
    
zWeakKeyDictionary.keysc          
   c   s@   t | ƒ�. x&| jjƒ D ]\}}|ƒ d k	r|V  qW W d Q R X d S )N)r   rA   rT   )r   r9   rR   r   r   r   r_   Æ  s    

zWeakKeyDictionary.valuesc             C   s
   t | jƒS )N)rf   rA   )r   r   r   r   ÚkeyrefsÌ  s    
zWeakKeyDictionary.keyrefsc             C   s4   d| _ x(| jjƒ \}}|ƒ }|d k	r||fS qW d S )NT)rk   rA   ra   )r   r8   rR   rJ   r   r   r   ra   Ø  s    zWeakKeyDictionary.popitemc             G   s   d| _ | jjt|ƒf|žŽ S )NT)rk   rA   rF   r   )r   r8   rC   r   r   r   rF   à  s    zWeakKeyDictionary.popc             C   s   | j jt|| jƒ|ƒS )N)rA   rb   r   r?   )r   r8   rZ   r   r   r   rb   ä  s    zWeakKeyDictionary.setdefaultc             K   s`   | j }|d k	rJt|dƒs$ti ƒ|ƒ}x$|jƒ D ]\}}||t|| jƒ< q.W t|ƒr\| j|ƒ d S )NrT   )rA   rc   r!   rT   r   r?   r>   rB   )r   re   rd   r<   r8   rR   r   r   r   rB   ç  s    
zWeakKeyDictionary.update)N)N)N)N)r.   r/   r0   rE   rH   rn   rL   rK   rM   rP   rS   rV   rh   rY   r[   rN   rT   r^   ri   r_   ro   ra   rF   rb   rB   r   r   r   r   r   W  s,   
	

c               @   sž   e Zd Zf Zi ZdZejƒ ZdZ	dZ
G dd„ dƒZdd„ Zddd„Zd	d
„ Zdd„ Zedd„ ƒZedd„ ƒZejdd„ ƒZdd„ Zedd„ ƒZedd„ ƒZdS )r   Fc               @   s   e Zd ZdZdS )	zfinalize._InfoÚweakrefr&   rC   rd   ÚatexitÚindexN)rp   r&   rC   rd   rq   rr   )r.   r/   r0   r1   r   r   r   r   Ú_Info  s   rs   c             O   sp   | j s dd l}|j| jƒ dt_ | jƒ }t|| ƒ|_||_||_	|pFd |_
d|_t| jƒ|_|| j| < dt_d S )Nr   T)Ú_registered_with_atexitrq   ÚregisterÚ	_exitfuncr   rs   r   rp   r&   rC   rd   ÚnextÚ_index_iterrr   Ú	_registryÚ_dirty)r   r%   r&   rC   rd   rq   Úinfor   r   r   rE     s    

zfinalize.__init__Nc             C   s2   | j j| d ƒ}|r.| j r.|j|j|jp*i ŽS d S )N)ry   rF   Ú	_shutdownr&   rC   rd   )r   Ú_r{   r   r   r   r(     s    zfinalize.__call__c             C   sH   | j j| ƒ}|o|jƒ }|d k	rD| j j| d ƒrD||j|j|jp@i fS d S )N)ry   r[   rp   rF   r&   rC   rd   )r   r{   r%   r   r   r   Údetach&  s    zfinalize.detachc             C   s:   | j j| ƒ}|o|jƒ }|d k	r6||j|j|jp2i fS d S )N)ry   r[   rp   r&   rC   rd   )r   r{   r%   r   r   r   Úpeek.  s    zfinalize.peekc             C   s
   | | j kS )N)ry   )r   r   r   r   Úalive6  s    zfinalize.alivec             C   s   | j j| ƒ}t|ƒo|jS )N)ry   r[   Úboolrq   )r   r{   r   r   r   rq   ;  s    zfinalize.atexitc             C   s   | j j| ƒ}|rt|ƒ|_d S )N)ry   r[   r�   rq   )r   rR   r{   r   r   r   rq   A  s    c             C   s^   | j j| ƒ}|o|jƒ }|d kr6dt| ƒjt| ƒf S dt| ƒjt| ƒt|ƒjt|ƒf S d S )Nz<%s object at %#x; dead>z!<%s object at %#x; for %r at %#x>)ry   r[   rp   r!   r.   rO   )r   r{   r%   r   r   r   rP   G  s    zfinalize.__repr__c             C   s2   dd„ | j jƒ D ƒ}|jdd„ d� dd„ |D ƒS )Nc             S   s   g | ]\}}|j r||f‘qS r   )rq   )rl   ÚfÚir   r   r   rm   S  s    z-finalize._select_for_exit.<locals>.<listcomp>c             S   s
   | d j S )Nr4   )rr   )Úitemr   r   r   Ú<lambda>T  s    z+finalize._select_for_exit.<locals>.<lambda>)r8   c             S   s   g | ]\}}|‘qS r   r   )rl   r‚   rƒ   r   r   r   rm   U  s    )ry   rT   Úsort)r#   ÚLr   r   r   Ú_select_for_exitP  s    zfinalize._select_for_exitc             C   s¦   d}zˆ| j rŠdd l}|jƒ r(d}|jƒ  d }x\|d ks<tjrJ| jƒ }dt_|sPP |jƒ }y
|ƒ  W q. tk
r„   t	j
t	jƒ Ž  Y q.X q.W W d dt_|r |jƒ  X d S )NFr   T)ry   ÚgcÚ	isenabledÚdisabler   rz   rˆ   rF   Ú	ExceptionÚsysÚ
excepthookÚexc_infor|   Úenable)r#   Úreenable_gcr‰   Úpendingr‚   r   r   r   rv   W  s.    
zfinalize._exitfunc)N)r.   r/   r0   r1   ry   r|   Ú	itertoolsÚcountrx   rz   rt   rs   rE   r(   r~   r   Úpropertyr€   rq   ÚsetterrP   Úclassmethodrˆ   rv   r   r   r   r   r   ò  s"   
	)Ú_weakrefr   r   r   r   r   r   r   r	   Ú_weakrefsetr
   r   Úcollectionsr�   r“   r   Ú__all__r   ÚMutableMappingr   rQ   r   r   r   r   r   r   Ú<module>   s    (

6 i 