|
@@ -25,7 +25,7 @@ Internal attributes:
|
|
|
deletion, (considerably speeds up the cleanup process
|
|
|
vs. the original code.)
|
|
|
"""
|
|
|
-import types, weakref
|
|
|
+import weakref
|
|
|
from django.dispatch import saferef, robustapply, errors
|
|
|
|
|
|
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
|
|
@@ -129,7 +129,7 @@ def connect(receiver, signal=Any, sender=Any, weak=True):
|
|
|
"""
|
|
|
if signal is None:
|
|
|
raise errors.DispatcherTypeError(
|
|
|
- 'Signal cannot be None (receiver=%r sender=%r)'%( receiver,sender)
|
|
|
+ 'Signal cannot be None (receiver=%r sender=%r)' % (receiver, sender)
|
|
|
)
|
|
|
if weak:
|
|
|
receiver = saferef.safeRef(receiver, onDelete=_removeReceiver)
|
|
@@ -159,7 +159,7 @@ def connect(receiver, signal=Any, sender=Any, weak=True):
|
|
|
else:
|
|
|
receivers = signals[signal] = []
|
|
|
try:
|
|
|
- current = sendersBack.get( receiverID )
|
|
|
+ current = sendersBack.get(receiverID)
|
|
|
if current is None:
|
|
|
sendersBack[ receiverID ] = current = []
|
|
|
if senderkey not in current:
|
|
@@ -199,7 +199,7 @@ def disconnect(receiver, signal=Any, sender=Any, weak=True):
|
|
|
"""
|
|
|
if signal is None:
|
|
|
raise errors.DispatcherTypeError(
|
|
|
- 'Signal cannot be None (receiver=%r sender=%r)'%( receiver,sender)
|
|
|
+ 'Signal cannot be None (receiver=%r sender=%r)' % (receiver, sender)
|
|
|
)
|
|
|
if weak: receiver = saferef.safeRef(receiver)
|
|
|
senderkey = id(sender)
|
|
@@ -226,7 +226,7 @@ def disconnect(receiver, signal=Any, sender=Any, weak=True):
|
|
|
)
|
|
|
_cleanupConnections(senderkey, signal)
|
|
|
|
|
|
-def getReceivers( sender = Any, signal = Any ):
|
|
|
+def getReceivers(sender=Any, signal=Any):
|
|
|
"""Get list of receivers from global tables
|
|
|
|
|
|
This utility function allows you to retrieve the
|
|
@@ -240,7 +240,7 @@ def getReceivers( sender = Any, signal = Any ):
|
|
|
rather than, for instance a list to which you
|
|
|
might append new records.
|
|
|
|
|
|
- Normally you would use liveReceivers( getReceivers( ...))
|
|
|
+ Normally you would use liveReceivers(getReceivers(...))
|
|
|
to retrieve the actual receiver objects as an iterable
|
|
|
object.
|
|
|
"""
|
|
@@ -258,7 +258,7 @@ def liveReceivers(receivers):
|
|
|
receivers.
|
|
|
"""
|
|
|
for receiver in receivers:
|
|
|
- if isinstance( receiver, WEAKREF_TYPES):
|
|
|
+ if isinstance(receiver, WEAKREF_TYPES):
|
|
|
# Dereference the weak reference.
|
|
|
receiver = receiver()
|
|
|
if receiver is not None:
|
|
@@ -268,7 +268,7 @@ def liveReceivers(receivers):
|
|
|
|
|
|
|
|
|
|
|
|
-def getAllReceivers( sender = Any, signal = Any ):
|
|
|
+def getAllReceivers(sender=Any, signal=Any):
|
|
|
"""Get list of all receivers from global tables
|
|
|
|
|
|
This gets all dereferenced receivers which should receive
|
|
@@ -363,7 +363,7 @@ def send(signal=Any, sender=Anonymous, *arguments, **named):
|
|
|
return responses
|
|
|
|
|
|
|
|
|
-def sendExact( signal=Any, sender=Anonymous, *arguments, **named ):
|
|
|
+def sendExact(signal=Any, sender=Anonymous, *arguments, **named ):
|
|
|
"""Send signal only to those receivers registered for exact message
|
|
|
|
|
|
sendExact allows for avoiding Any/Anonymous registered
|
|
@@ -403,7 +403,7 @@ def _removeReceiver(receiver):
|
|
|
pass
|
|
|
else:
|
|
|
try:
|
|
|
- receivers.remove( receiver )
|
|
|
+ receivers.remove(receiver)
|
|
|
except Exception, err:
|
|
|
pass
|
|
|
_cleanupConnections(senderkey, signal)
|
|
@@ -439,11 +439,11 @@ def _removeSender(senderkey):
|
|
|
senders.pop(senderkey, None)
|
|
|
|
|
|
|
|
|
-def _removeBackrefs( senderkey):
|
|
|
+def _removeBackrefs(senderkey):
|
|
|
"""Remove all back-references to this senderkey"""
|
|
|
for receiver_list in connections.pop(senderkey, {}).values():
|
|
|
for receiver in receiver_list:
|
|
|
- _killBackref( receiver, senderkey )
|
|
|
+ _killBackref(receiver, senderkey)
|
|
|
|
|
|
|
|
|
def _removeOldBackRefs(senderkey, signal, receiver, receivers):
|
|
@@ -473,18 +473,18 @@ def _removeOldBackRefs(senderkey, signal, receiver, receivers):
|
|
|
found = 1
|
|
|
break
|
|
|
if not found:
|
|
|
- _killBackref( oldReceiver, senderkey )
|
|
|
+ _killBackref(oldReceiver, senderkey)
|
|
|
return True
|
|
|
return False
|
|
|
|
|
|
|
|
|
-def _killBackref( receiver, senderkey ):
|
|
|
+def _killBackref(receiver, senderkey):
|
|
|
"""Do the actual removal of back reference from receiver to senderkey"""
|
|
|
receiverkey = id(receiver)
|
|
|
- receivers_list = sendersBack.get( receiverkey, () )
|
|
|
+ receivers_list = sendersBack.get(receiverkey, ())
|
|
|
while senderkey in receivers_list:
|
|
|
try:
|
|
|
- receivers_list.remove( senderkey )
|
|
|
+ receivers_list.remove(senderkey)
|
|
|
except:
|
|
|
break
|
|
|
if not receivers_list:
|