File: //usr/lib64/python3.6/__pycache__/weakref.cpython-36.pyc
3
  \�O  �            
   @   s�   d Z ddlmZmZmZmZmZmZmZm	Z	 ddl
mZmZ ddl
Z
ddlZddlZeefZddddd	d
ddd
ddddg
ZG dd� de�ZG dd� de
j�ZG dd� de�ZG dd	� d	e
j�ZG dd� d�ZdS )z{Weak reference support for Python.
This module is an implementation of PEP 205:
http://www.python.org/dev/peps/pep-0205/
�    )�getweakrefcount�getweakrefs�ref�proxy�CallableProxyType�	ProxyType�
ReferenceType�_remove_dead_weakref)�WeakSet�_IterationGuardNr   r   r   r   �WeakKeyDictionaryr   r   r   �
ProxyTypes�WeakValueDictionaryr
   �
WeakMethod�finalizec                   sD   e Zd ZdZdZddd�Z� fd	d
�Zdd� Zd
d� Ze	j
Z
�  ZS )r   z�
    A custom `weakref.ref` subclass which simulates a weak reference to
    a bound method, working around the lifetime problem of bound methods.
    �	_func_ref�
_meth_type�_alive�__weakref__Nc                s~   y|j }|j}W n( tk
r8   tdjt|���d �Y nX � �fdd�}tj| ||�}t||�|_t|�|_	d|_
t|��|S )Nz)argument should be a bound method, not {}c                s&