MINI MINI MANI MO
3
  \O              
   @   s   d Z ddlmZmZmZmZmZmZmZm	Z	 ddl
mZmZ ddl
Z
ddlZddlZeefZddddd	d
ddd
ddddg
ZG dd deZG dd de
jZG dd deZG dd	 d	e
jZG dd dZdS )z{Weak reference support for Python.
This module is an implementation of PEP 205:
http://www.python.org/dev/peps/pep-0205/
    )getweakrefcountgetweakrefsrefproxyCallableProxyType	ProxyType
ReferenceType_remove_dead_weakref)WeakSet_IterationGuardNr   r   r   r   WeakKeyDictionaryr   r   r   
ProxyTypesWeakValueDictionaryr
   
WeakMethodfinalizec                   sD   e Zd ZdZdZdddZ 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&