Current File : //usr/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 |<