async_wrapper is now more general
This commit is contained in:
parent
e18299fcd6
commit
ec877aa98a
@ -432,11 +432,32 @@ def wrapper(func, *args, **kwargs):
|
|||||||
return wrapped
|
return wrapped
|
||||||
|
|
||||||
|
|
||||||
async def async_wrapper(func, *args, **kwargs):
|
async def async_wrapper(coroutine, *args1, **kwargs1):
|
||||||
"""Wrap a coroutine so that it can be later awaited with one argument."""
|
"""Wrap a `coroutine` so that it can be later awaited with more arguments.
|
||||||
async def wrapped(update):
|
|
||||||
return await func(update, *args, **kwargs)
|
Set some of the arguments, let the coroutine be awaited with the rest of
|
||||||
return wrapped
|
them later.
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
import asyncio
|
||||||
|
from davtelepot.utilities import async_wrapper
|
||||||
|
async def printer(a, b, c, d):
|
||||||
|
print(a, a+b, b+c, c+d)
|
||||||
|
return
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
my_coroutine = await async_wrapper(
|
||||||
|
printer,
|
||||||
|
c=3, d=2
|
||||||
|
)
|
||||||
|
await my_coroutine(a=1, b=5)
|
||||||
|
|
||||||
|
asyncio.get_event_loop().run_until_complete(main())
|
||||||
|
```
|
||||||
|
"""
|
||||||
|
async def wrapped_coroutine(*args2, **kwargs2):
|
||||||
|
return await coroutine(*args1, *args2, **kwargs1, **kwargs2)
|
||||||
|
return wrapped_coroutine
|
||||||
|
|
||||||
|
|
||||||
def forwarded(by=None):
|
def forwarded(by=None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user