Update of /cvsroot/pydispatcher/dispatch
In directory sc8-pr-cvs1:/tmp/cvs-serv7731
Modified Files:
dispatcher.py
Log Message:
Merged Patrick's changes from the "event" package, fairly minimal differences, note that the Anonymous sender is not given a _removeSender callback, which differs from the operation of the event version.
Index: dispatcher.py
===================================================================
RCS file: /cvsroot/pydispatcher/dispatch/dispatcher.py,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** dispatcher.py 1 Jul 2003 03:52:28 -0000 1.1.1.1
--- dispatcher.py 1 Jul 2003 04:25:44 -0000 1.2
***************
*** 27,35 ****
self.args = args
! class _Any:
! pass
- Any = _Any()
WEAKREF_TYPES = (weakref.ReferenceType, saferef.BoundMethodWeakref)
--- 27,47 ----
self.args = args
+ try:
+ True
+ except NameError:
+ True = 1==1
+ False = 1==0
! class _Parameter:
! """Used to represent default parameter values."""
! def __repr__(self):
! return self.__class__.__name__
!
! class Any(_Parameter): pass
! Any = Any()
!
! class Anonymous(_Parameter): pass
! Anonymous = Anonymous()
WEAKREF_TYPES = (weakref.ReferenceType, saferef.BoundMethodWeakref)
***************
*** 39,43 ****
! def connect(receiver, signal=Any, sender=Any, weak=1):
"""Connect receiver to sender for signal.
--- 51,55 ----
! def connect(receiver, signal=Any, sender=Any, weak=True):
"""Connect receiver to sender for signal.
***************
*** 50,53 ****
--- 62,66 ----
signal from any sender.
If weak is true, weak references will be used."""
+
if signal is None:
raise DispatcherError, 'signal cannot be None'
***************
*** 61,65 ****
connections[senderkey] = signals
# Keep track of senders for cleanup.
! if sender not in (None, Any):
def remove(object, senderkey=senderkey):
_removeSender(senderkey=senderkey)
--- 74,79 ----
connections[senderkey] = signals
# Keep track of senders for cleanup.
! # Is Anonymous something we want to clean up?
! if sender not in (None, Anonymous, Any):
def remove(object, senderkey=senderkey):
_removeSender(senderkey=senderkey)
***************
*** 81,85 ****
receivers.append(receiver)
! def disconnect(receiver, signal=Any, sender=Any, weak=1):
"""Disconnect receiver from sender for signal.
--- 95,99 ----
receivers.append(receiver)
! def disconnect(receiver, signal=Any, sender=Any, weak=True):
"""Disconnect receiver from sender for signal.
***************
*** 150,154 ****
pass
! def send(signal=Any, sender=None, *arguments, **named):
"""Send signal from sender to all connected receivers.
--- 164,168 ----
pass
! def send(signal=Any, sender=Anonymous, *arguments, **named):
"""Send signal from sender to all connected receivers.
***************
*** 174,178 ****
responses.append((receiver, response))
return responses
! def sendExact( signal=Any, sender=None, *arguments, **named ):
"""Send signal only to those receivers registered for exact message
--- 188,192 ----
responses.append((receiver, response))
return responses
! def sendExact( signal=Any, sender=Anonymous, *arguments, **named ):
"""Send signal only to those receivers registered for exact message
|