File: //home/arjun/projects/env/lib/python3.10/site-packages/blinker/__pycache__/_saferef.cpython-310.pyc
o
!we�# � @ sT d Z ddlZddlZddlZddlZe�d�Ze�d�Zd dd�ZG dd� d�Z dS )
z-Refactored 'safe reference from dispatcher.py� N�__self__�__func__c C s� zt | �}W n ty t|�rt�| |� Y S t�| � Y S w |dur?t| d�s7t| d�s7J d| �d���t| |d�}|S dS )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�AttributeError�callable�weakref�ref�hasattr�BoundMethodWeakref)r r �im_self� reference� r �I/home/arjun/projects/env/lib/python3.10/site-packages/blinker/_saferef.py�safe_ref. s �
��r c sl e Zd ZdZe�� Zd� fdd� Zddd�Ze dd� �Z
d d
� ZeZdd� Z
d
d� Zdd� Zdd� Z� ZS )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.
Nc sb | � |�}| j�|�}|dur|j�|� |S t� �| �}|| j|<