File: //usr/lib64/python3.8/__pycache__/weakref.cpython-38.pyc
U
    e5d�S  �                
   @   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� fdd�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~   z|j }|j}W n( tk
r8   td�t|���d �Y nX � �fdd�}t�| ||�}t||�|_t|�|_	d|_
t|��|S )Nz)argument should be a bound method, not {}c                    s&