a XC?h8T ã @ sÎ d dl mZmZmZmZmZmZmZmZ d dl m Z mZ d dlZd dl Z d dlZeefZg d¢Zej e ¡ ej e ¡ G dd„ deƒZG dd„ dejƒZG d d „ d eƒZG dd„ dejƒZG d d„ dƒZdS )é )ÚgetweakrefcountÚgetweakrefsÚrefÚproxyÚCallableProxyTypeÚ ProxyTypeÚ ReferenceTypeÚ_remove_dead_weakref)ÚWeakSetÚ_IterationGuardN) r r r r ÚWeakKeyDictionaryr r r Ú ProxyTypesÚWeakValueDictionaryr Ú WeakMethodÚfinalizec s@ e Zd ZdZddd„Z‡ fdd„Zdd„ Zd d „ Zej Z ‡ Z S )r )Ú _func_refÚ _meth_typeÚ_aliveÚ__weakref__Nc s| z|j }|j}W n& ty6 td t|ƒ¡ƒd ‚Y n0 ‡ ‡fdd„}t | ||¡}t||ƒ|_t|ƒ|_ d|_ t|ƒ‰|S )Nz)argument should be a bound method, not {}c s&