1
0
mirror of https://github.com/django/django.git synced 2025-06-05 03:29:12 +00:00

magic-removal: Removed a tiny bit of cruft in django.dispatch.dispatcher because we can assume Python 2.3+

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2403 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2006-02-27 05:15:29 +00:00
parent e7c83b691b
commit 67a3d5207e

View File

@ -25,7 +25,6 @@ Internal attributes:
deletion, (considerably speeds up the cleanup process deletion, (considerably speeds up the cleanup process
vs. the original code.) vs. the original code.)
""" """
from __future__ import generators
import types, weakref import types, weakref
from django.dispatch import saferef, robustapply, errors from django.dispatch import saferef, robustapply, errors
@ -33,12 +32,6 @@ __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
__cvsid__ = "$Id: dispatcher.py,v 1.8 2004/11/26 06:37:33 mcfletch Exp $" __cvsid__ = "$Id: dispatcher.py,v 1.8 2004/11/26 06:37:33 mcfletch Exp $"
__version__ = "$Revision: 1.8 $"[11:-2] __version__ = "$Revision: 1.8 $"[11:-2]
try:
True
except NameError:
True = 1==1
False = 1==0
class _Parameter: class _Parameter:
"""Used to represent default parameter values.""" """Used to represent default parameter values."""
def __repr__(self): def __repr__(self):
@ -91,7 +84,7 @@ def connect(receiver, signal=Any, sender=Any, weak=True):
if weak is True, then receiver must be weak-referencable if weak is True, then receiver must be weak-referencable
(more precisely saferef.safeRef() must be able to create (more precisely saferef.safeRef() must be able to create
a reference to the receiver). a reference to the receiver).
Receivers are fairly flexible in their specification, Receivers are fairly flexible in their specification,
as the machinery in the robustApply module takes care as the machinery in the robustApply module takes care
of most of the details regarding figuring out appropriate of most of the details regarding figuring out appropriate
@ -107,25 +100,25 @@ def connect(receiver, signal=Any, sender=Any, weak=True):
pre-weakrefed receiver references. pre-weakrefed receiver references.
signal -- the signal to which the receiver should respond signal -- the signal to which the receiver should respond
if Any, receiver will receive any signal from the if Any, receiver will receive any signal from the
indicated sender (which might also be Any, but is not indicated sender (which might also be Any, but is not
necessarily Any). necessarily Any).
Otherwise must be a hashable Python object other than Otherwise must be a hashable Python object other than
None (DispatcherError raised on None). None (DispatcherError raised on None).
sender -- the sender to which the receiver should respond sender -- the sender to which the receiver should respond
if Any, receiver will receive the indicated signals if Any, receiver will receive the indicated signals
from any sender. from any sender.
if Anonymous, receiver will only receive indicated if Anonymous, receiver will only receive indicated
signals from send/sendExact which do not specify a signals from send/sendExact which do not specify a
sender, or specify Anonymous explicitly as the sender. sender, or specify Anonymous explicitly as the sender.
Otherwise can be any python object. Otherwise can be any python object.
weak -- whether to use weak references to the receiver weak -- whether to use weak references to the receiver
By default, the module will attempt to use weak By default, the module will attempt to use weak
references to the receiver objects. If this parameter references to the receiver objects. If this parameter
@ -156,7 +149,7 @@ def connect(receiver, signal=Any, sender=Any, weak=True):
senders[senderkey] = weakSender senders[senderkey] = weakSender
except: except:
pass pass
receiverID = id(receiver) receiverID = id(receiver)
# get current set, remove any current references to # get current set, remove any current references to
# this receiver in the set, including back-references # this receiver in the set, including back-references
@ -200,7 +193,7 @@ def disconnect(receiver, signal=Any, sender=Any, weak=True):
will remove routes for deleted objects will remove routes for deleted objects
automatically. It's only necessary to disconnect automatically. It's only necessary to disconnect
if you want to stop routing to a live object. if you want to stop routing to a live object.
returns None, may raise DispatcherTypeError or returns None, may raise DispatcherTypeError or
DispatcherKeyError DispatcherKeyError
""" """
@ -305,11 +298,11 @@ def getAllReceivers( sender = Any, signal = Any ):
def send(signal=Any, sender=Anonymous, *arguments, **named): def send(signal=Any, sender=Anonymous, *arguments, **named):
"""Send signal from sender to all connected receivers. """Send signal from sender to all connected receivers.
signal -- (hashable) signal value, see connect for details signal -- (hashable) signal value, see connect for details
sender -- the sender of the signal sender -- the sender of the signal
if Any, only receivers registered for Any will receive if Any, only receivers registered for Any will receive
the message. the message.
@ -369,7 +362,7 @@ def sendExact( signal=Any, sender=Anonymous, *arguments, **named ):
) )
responses.append((receiver, response)) responses.append((receiver, response))
return responses return responses
def _removeReceiver(receiver): def _removeReceiver(receiver):
"""Remove receiver from connections.""" """Remove receiver from connections."""
@ -395,7 +388,7 @@ def _removeReceiver(receiver):
del sendersBack[ backKey ] del sendersBack[ backKey ]
except KeyError: except KeyError:
pass pass
def _cleanupConnections(senderkey, signal): def _cleanupConnections(senderkey, signal):
"""Delete any empty signals for senderkey. Delete senderkey if empty.""" """Delete any empty signals for senderkey. Delete senderkey if empty."""
try: try:
@ -422,7 +415,7 @@ def _removeSender(senderkey):
del connections[senderkey] del connections[senderkey]
except KeyError: except KeyError:
pass pass
# Senderkey will only be in senders dictionary if sender # Senderkey will only be in senders dictionary if sender
# could be weakly referenced. # could be weakly referenced.
try: del senders[senderkey] try: del senders[senderkey]
except: pass except: pass
@ -473,8 +466,8 @@ def _removeOldBackRefs(senderkey, signal, receiver, receivers):
_killBackref( oldReceiver, senderkey ) _killBackref( oldReceiver, senderkey )
return True return True
return False return False
def _killBackref( receiver, senderkey ): def _killBackref( receiver, senderkey ):
"""Do the actual removal of back reference from receiver to senderkey""" """Do the actual removal of back reference from receiver to senderkey"""
receiverkey = id(receiver) receiverkey = id(receiver)