%PDF- %PDF-
 Mini Shell
 Mini Shell  
 | Direktori : /lib/python3/dist-packages/blinker/__pycache__/ | 
| Current File : //lib/python3/dist-packages/blinker/__pycache__/_saferef.cpython-312.pyc | 
�
    �]ue�#  �                   �   � d Z ddlZddlZddlZddlZ ej
                  d�      Z ej
                  d�      Zdd�Z G d� d�      Z	y)	z-Refactored 'safe reference from dispatcher.py�    N�__self__�__func__c                 �  � 	 t        | �      }|�2t        | d�      st        | d�      sJ d| �d��       �t        | |��      }|S y# t        $ r; t	        |�      rt        j                  | |�      cY S t        j                  | �      cY S w xY w)a�  Return a *safe* weak reference to a callable target.
    - ``target``: The object to be weakly referenced, if it's a bound
      method reference, will create a BoundMethodWeakref, otherwise
      creates a simple weakref.
    - ``on_delete``: If provided, will have a hard reference stored to
      the callable to be called after the safe reference goes out of
      scope with the reference object, (either a weakref or a
      BoundMethodWeakref) as argument.
    N�im_funcr   zsafe_ref target z@ has im_self, but no im_func, don't know how to create reference)�target�	on_delete)�get_self�hasattr�BoundMethodWeakref�AttributeError�callable�weakref�ref)r   r   �im_self�	references       �2/usr/lib/python3/dist-packages/blinker/_saferef.py�safe_refr   .   s�   � ���6�"�� �� �6�9�-����1L� 
�"�6�*� -5� 5�
�L� +�&�I�N�I��� ��
 � '��I���;�;�v�y�1�1��;�;�v�&�&�	'�s   �A �*B�.B�Bc                   �   � � e Zd ZdZ ej
                  �       Zd
� fd�	Zd
d�Ze	d� �       Z
d� ZeZd� Z
d� Zd� Zd	� Z� xZS )r   a�  'Safe' and reusable weak references to instance methods.
    BoundMethodWeakref objects provide a mechanism for referencing a
    bound method without requiring that the method object itself
    (which is normally a transient object) is kept alive.  Instead,
    the BoundMethodWeakref object keeps weak references to both the
    object and the function which together define the instance method.
    Attributes:
    - ``key``: The identity key for the reference, calculated by the
      class's calculate_key method applied to the target instance method.
    - ``deletion_methods``: Sequence of callable objects taking single
      argument, a reference to this object which will be called when
      *either* the target object or target function is garbage
      collected (i.e. when this object becomes invalid).  These are
      specified as the on_delete parameters of safe_ref calls.
    - ``weak_self``: Weak reference to the target object.
    - ``weak_func``: Weak reference to the target function.
    Class Attributes:
    - ``_all_instances``: Class attribute pointing to all live
      BoundMethodWeakref objects indexed by the class's
      calculate_key(target) method applied to the target objects.
      This weak value dictionary is used to short-circuit creation so
      that multiple references to the same (object, function) pair
      produce the same BoundMethodWeakref instance.
    c                 �  �� | j                  |�      }| j                  j                  |�      }|�|j                  j	                  |�       |S t
        �| �  | �      }|| j                  |<