generated from daniil-berg/boilerplate-py
refactored TaskPool._map
; fixed TaskPool.apply
; helper functions in separate module; new exception class
This commit is contained in:
24
src/asyncio_taskpool/helpers.py
Normal file
24
src/asyncio_taskpool/helpers.py
Normal file
@ -0,0 +1,24 @@
|
||||
from asyncio.coroutines import iscoroutinefunction
|
||||
from typing import Any, Optional
|
||||
|
||||
from .types import T, AnyCallableT, ArgsT, KwArgsT
|
||||
|
||||
|
||||
async def execute_optional(function: AnyCallableT, args: ArgsT = (), kwargs: KwArgsT = None) -> Optional[T]:
|
||||
if not callable(function):
|
||||
return
|
||||
if kwargs is None:
|
||||
kwargs = {}
|
||||
if iscoroutinefunction(function):
|
||||
return await function(*args, **kwargs)
|
||||
return function(*args, **kwargs)
|
||||
|
||||
|
||||
def star_function(function: AnyCallableT, arg: Any, arg_stars: int = 0) -> T:
|
||||
if arg_stars == 0:
|
||||
return function(arg)
|
||||
if arg_stars == 1:
|
||||
return function(*arg)
|
||||
if arg_stars == 2:
|
||||
return function(**arg)
|
||||
raise ValueError(f"Invalid argument arg_stars={arg_stars}; must be 0, 1, or 2.")
|
Reference in New Issue
Block a user