Viewing File: /opt/alt/python38/lib/python3.8/site-packages/blinker/__pycache__/_saferef.cpython-38.pyc
U
Q$ @ s d Z ddlZddlZddlZddlZze W n ek
rH dd ZY nX ejdk rjedZ edZ
nedZ ed Z
dd
dZG dd
d
eZ
dS )z-Refactored 'safe reference from dispatcher.py Nc C s
t | dS )N__call__)hasattr)object r /_saferef.pycallable. s r ) im_selfim_func__self____func__c C s zt | }W n: tk
rF t|r4t| | Y S t| Y S Y n:X |dk rt| dspt| dsptd| 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.
Nr
r zRsafe_ref target %r has im_self, but no im_func, don't know how to create reference)target on_delete)get_selfAttributeErrorr weakrefrefr AssertionErrorBoundMethodWeakref)r
r r Z referencer r r safe_ref: s r c sh e Zd ZdZe Zd fdd ZdddZdd Z e
e Z d d
ZeZdd Z
d
d 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 sd | |}| j|}|dk r.|j| |S tt| | }|| j|<