blob: 9be304e164ba97b2ad983a6a1eaca4dc9f9ccc97 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import asyncio
from blinker.base import Signal
try:
schedule = asyncio.create_task
except AttributeError:
schedule = asyncio.ensure_future
async def _wrap_plain_value(value):
"""Pass through a coroutine *value* or wrap a plain value."""
if asyncio.iscoroutine(value):
value = yield from value
return value
def send_async(self, *sender, **kwargs):
return [(receiver, schedule(_wrap_plain_value(value)))
for receiver, value
in self.send(*sender, **kwargs)]
send_async.__doc__ = Signal.send_async.__doc__
Signal.send_async = send_async
|