summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Apolloner <florian@apolloner.eu>2014-02-05 20:45:57 +0100
committerFlorian Apolloner <florian@apolloner.eu>2014-02-05 20:57:40 +0100
commit297c009cf22b14b0124b790303404ee06a289999 (patch)
tree635849993a741976145306218dc5c7fac1c7973e
parentc29d6f767691cceb9964c0d212e01281ac6721d3 (diff)
Simplified signal code.
Refs #21952
-rw-r--r--django/dispatch/dispatcher.py21
1 files changed, 9 insertions, 12 deletions
diff --git a/django/dispatch/dispatcher.py b/django/dispatch/dispatcher.py
index 25ea2f3ca6..d9766f62b1 100644
--- a/django/dispatch/dispatcher.py
+++ b/django/dispatch/dispatcher.py
@@ -106,34 +106,31 @@ class Signal(object):
assert argspec[2] is not None, \
"Signal receivers must accept keyword arguments (**kwargs)."
- receiver_id = _make_id(receiver)
if dispatch_uid:
lookup_key = (dispatch_uid, _make_id(sender))
else:
- lookup_key = (receiver_id, _make_id(sender))
+ lookup_key = (_make_id(receiver), _make_id(sender))
if weak:
ref = weakref.ref
- original_receiver = receiver
+ receiver_object = receiver
# Check for bound methods
if hasattr(receiver, '__self__') and hasattr(receiver, '__func__'):
ref = WeakMethod
- original_receiver = original_receiver.__self__
+ receiver_object = receiver.__self__
if sys.version_info >= (3, 4):
receiver = ref(receiver)
- weakref.finalize(original_receiver, self._remove_receiver, receiver_id=receiver_id)
+ weakref.finalize(receiver_object, self._remove_receiver)
else:
receiver = ref(receiver, self._remove_receiver)
- # Use the id of the weakref, since that's what passed to the weakref callback!
- receiver_id = _make_id(receiver)
with self.lock:
self._clear_dead_receivers()
- for r_key, _, _ in self.receivers:
+ for r_key, _ in self.receivers:
if r_key == lookup_key:
break
else:
- self.receivers.append((lookup_key, receiver, receiver_id))
+ self.receivers.append((lookup_key, receiver))
self.sender_receivers_cache.clear()
def disconnect(self, receiver=None, sender=None, weak=True, dispatch_uid=None):
@@ -166,7 +163,7 @@ class Signal(object):
with self.lock:
self._clear_dead_receivers()
for index in xrange(len(self.receivers)):
- (r_key, _, _) = self.receivers[index]
+ (r_key, _) = self.receivers[index]
if r_key == lookup_key:
del self.receivers[index]
break
@@ -270,7 +267,7 @@ class Signal(object):
self._clear_dead_receivers()
senderkey = _make_id(sender)
receivers = []
- for (receiverkey, r_senderkey), receiver, _ in self.receivers:
+ for (receiverkey, r_senderkey), receiver in self.receivers:
if r_senderkey == NONE_ID or r_senderkey == senderkey:
receivers.append(receiver)
if self.use_caching:
@@ -290,7 +287,7 @@ class Signal(object):
non_weak_receivers.append(receiver)
return non_weak_receivers
- def _remove_receiver(self, receiver=None, receiver_id=None, _make_id=_make_id):
+ def _remove_receiver(self, receiver=None):
# Mark that the self.receivers list has dead weakrefs. If so, we will
# clean those up in connect, disconnect and _live_receivers while
# holding self.lock. Note that doing the cleanup here isn't a good