Pass only supported arguments to async_wrapped coroutines
This commit is contained in:
parent
cb2092bef4
commit
9c008d5923
@ -7,7 +7,7 @@ __author__ = "Davide Testa"
|
||||
__email__ = "davide@davte.it"
|
||||
__credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
|
||||
__license__ = "GNU General Public License v3.0"
|
||||
__version__ = "2.0.7"
|
||||
__version__ = "2.0.8"
|
||||
__maintainer__ = "Davide Testa"
|
||||
__contact__ = "t.me/davte"
|
||||
|
||||
|
@ -6,6 +6,7 @@ import collections
|
||||
import csv
|
||||
import datetime
|
||||
from difflib import SequenceMatcher
|
||||
import inspect
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
@ -437,6 +438,8 @@ async def async_wrapper(coroutine, *args1, **kwargs1):
|
||||
|
||||
Set some of the arguments, let the coroutine be awaited with the rest of
|
||||
them later.
|
||||
The wrapped coroutine will always pass only supported parameters to
|
||||
`coroutine`.
|
||||
Example:
|
||||
```
|
||||
import asyncio
|
||||
@ -456,7 +459,17 @@ async def async_wrapper(coroutine, *args1, **kwargs1):
|
||||
```
|
||||
"""
|
||||
async def wrapped_coroutine(*args2, **kwargs2):
|
||||
return await coroutine(*args1, *args2, **kwargs1, **kwargs2)
|
||||
# Update keyword arguments
|
||||
kwargs1.update(kwargs2)
|
||||
# Pass only supported arguments
|
||||
kwargs = {
|
||||
name: argument
|
||||
for name, argument in kwargs1.items()
|
||||
if name in inspect.signature(
|
||||
coroutine
|
||||
).parameters
|
||||
}
|
||||
return await coroutine(*args1, *args2, **kwargs)
|
||||
return wrapped_coroutine
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user