File: //proc/self/root/opt/alt/python311/lib64/python3.11/__pycache__/weakref.cpython-311.pyc
�
    !A?h	T  �                   �<  � d Z ddlmZmZmZmZmZmZmZm	Z	 ddl
mZmZ ddl
Z
ddlZddlZeefZg d�Ze
j        �                    e�  �          G d� de�  �        Z G d� d	e
j        �  �        Z G d
� de�  �        Z G d� d
e
j        �  �        Z G d� d�  �        ZdS )ztWeak reference support for Python.
This module is an implementation of PEP 205:
https://peps.python.org/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                   �H   � � e Zd ZdZdZdd�Z� fd�Zd� Zd� Ze	j
        Z
� xZS )	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                 �\  ��� 	 |j         }|j        }n># t          $ r1 t          d�                    t          |�  �        �  �        �  �        d �w xY w��fd�}t
          j        | ||�  �        }t
          ||�  �        |_        t          |�  �        |_	        d|_
        t
          |�  �        �|S )Nz)argument should be a bound method, not {}c                 �Z   ��  ��   �         }|j         rd|_         �� �|�  �         d S d S d S �NF)r   )�arg�self�callback�self_wrs     ���./opt/alt/python311/lib64/python3.11/weakref.py�_cbzWeakMethod.__new__.<locals>._cb5   sH   �� � �7�9�9�D��{� 
#�#����'��H�T�N�N�N�N�N�
#� 
#�'�'�    T)�__self__�__func__�AttributeError�	TypeError�format�typer   �__new__r   r   r   )�cls�methr   �obj�funcr   r   r   s     `    @r   r'