def __new__( cls, obj, callback, key, ): self = WeakReferer.__new__(cls, obj, callback) self.key = key return self
def __new__(cls, receiver, callback=None): """Return a garbage-collectable wrapper for `receiver` If `receiver` is weak-referenceable, `callback` will be called with a weak reference when the `receiver` is garbage collected. Special handling for transient object methods is included.""" if isinstance(receiver,MethodType): try: self = ref.__new__(cls,receiver.im_self,callback) except TypeError: return receiver else: self.func = receiver.im_func return self if isinstance(receiver,weak_receiver): return receiver try: return ref.__new__(cls,receiver,callback) except TypeError: return receiver
def __new__(cls, receiver, callback=None): """Return a garbage-collectable wrapper for `receiver` If `receiver` is weak-referenceable, `callback` will be called with a weak reference when the `receiver` is garbage collected. Special handling for transient object methods is included.""" if isinstance(receiver, MethodType): try: self = ref.__new__(cls, receiver.im_self, callback) except TypeError: return receiver else: self.func = receiver.im_func return self if isinstance(receiver, weak_receiver): return receiver try: return ref.__new__(cls, receiver, callback) except TypeError: return receiver
def __new__(cls, meth, callback = None): try: obj = meth.__self__ func = meth.__func__ except AttributeError: raise TypeError('argument should be a bound method') def _cb(arg): self = self_wr() if self._alive: self._alive = False if callback is not None: callback(self) return self = ref.__new__(cls, obj, _cb) self._func_ref = ref(func, _cb) self._meth_type = type(meth) self._alive = True self_wr = ref(self) return self
def __new__(cls, meth, callback=None): try: obj = meth.__self__ func = meth.__func__ except AttributeError: raise TypeError("argument should be a bound method, not {}" .format(type(meth))) def _cb(arg): # The self-weakref trick is needed to avoid creating a reference # cycle. self = self_wr() if self._alive: self._alive = False if callback is not None: callback(self) self = ref.__new__(cls, obj, _cb) self._func_ref = ref(func, _cb) self._meth_type = type(meth) self._alive = True self_wr = ref(self) return self
def __new__(cls, meth, callback=None): try: obj = meth.__self__ func = meth.__func__ except AttributeError: raise TypeError('argument should be a bound method') def _cb(arg): self = self_wr() if self._alive: self._alive = False if callback is not None: callback(self) return self = ref.__new__(cls, obj, _cb) self._func_ref = ref(func, _cb) self._meth_type = type(meth) self._alive = True self_wr = ref(self) return self
"""
def __new__(cls, obj, func, callback=None): self = ref.__new__(cls, obj, callback) self.__func__ = func return self
def __new__(type, ob, callback, key): self = ref.__new__(type, ob, callback) self.key = key self.counter = 0 return self
def __new__(cls, cursor, id, state, callback): self = ref.__new__(cls, cursor, callback) self.id = id self.state = state return self