summaryrefslogtreecommitdiff
path: root/blinker/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'blinker/base.py')
-rw-r--r--blinker/base.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/blinker/base.py b/blinker/base.py
index cc5880e..3fd77d8 100644
--- a/blinker/base.py
+++ b/blinker/base.py
@@ -250,6 +250,14 @@ class Signal(object):
:param \*\*kwargs: Data to be sent to receivers.
"""
+ if not self.receivers:
+ # Ensure correct signature even on no-op sends, disable with -O
+ # for lowest possible cost.
+ if __debug__ and sender and len(sender) > 1:
+ raise TypeError('send() accepts only one positional '
+ 'argument, %s given' % len(sender))
+ return []
+
# Using '*sender' rather than 'sender=None' allows 'sender' to be
# used as a keyword argument- i.e. it's an invisible name in the
# function signature.
@@ -260,11 +268,8 @@ class Signal(object):
'%s given' % len(sender))
else:
sender = sender[0]
- if not self.receivers:
- return []
- else:
- return [(receiver, receiver(sender, **kwargs))
- for receiver in self.receivers_for(sender)]
+ return [(receiver, receiver(sender, **kwargs))
+ for receiver in self.receivers_for(sender)]
def has_receivers_for(self, sender):
"""True if there is probably a receiver for *sender*.