File: //usr/lib64/python3.9/__pycache__/weakref.cpython-39.pyc
a
    �DOg8T  �                   @   s�   d Z ddlmZmZmZmZmZmZmZm	Z	 ddl
mZmZ ddl
Z
ddlZddlZeefZg d�Ze
j�e� e
j�e� G dd� de�ZG dd	� d	e
j�ZG d
d� de�ZG dd
� d
e
j�ZG dd� d�ZdS )z|Weak reference support for Python.
This module is an implementation of PEP 205:
https://www.python.org/dev/peps/pep-0205/
�    )�getweakrefcount�getweakrefs�ref�proxy�CallableProxyType�	ProxyType�
ReferenceType�_remove_dead_weakref)�WeakSet�_IterationGuardN)
r   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& ty6   td�t|���d �Y n0 � �fdd�}t�| ||�}t||�|_t|�|_	d|_
t|��|S )Nz)argument should be a bound method, not {}c                    s&