Release/v0.5.0 #8
2 changed files with 72 additions and 4 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
from .async_bindable import AsyncBindable
|
from .async_bindable import AsyncBindable
|
||||||
from .base_bindable import BaseBindable, BindableSubscriber, ValueChanged
|
from .base_bindable import BaseBindable, BindableSubscriber, ValueChanged
|
||||||
from .bindable import Bindable
|
from .bindable import Bindable
|
||||||
from .chains import chain
|
from .chains import async_chain, chain
|
||||||
from .combines import async_combine, combine
|
from .combines import async_combine, combine
|
||||||
from .concats import concat
|
from .concats import concat
|
||||||
from .conds import cond
|
from .conds import cond
|
||||||
|
|
@ -16,6 +16,7 @@ __all__ = [
|
||||||
"BaseBindable",
|
"BaseBindable",
|
||||||
"BindableSubscriber",
|
"BindableSubscriber",
|
||||||
"ValueChanged",
|
"ValueChanged",
|
||||||
|
"async_chain",
|
||||||
"async_combine",
|
"async_combine",
|
||||||
"async_merge",
|
"async_merge",
|
||||||
"chain",
|
"chain",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from typing import Any, Callable, ParamSpec, TypeVar, overload
|
from typing import Any, Awaitable, Callable, ParamSpec, TypeVar, overload
|
||||||
|
|
||||||
P = ParamSpec("P")
|
P = ParamSpec("P")
|
||||||
|
|
||||||
|
|
@ -14,7 +14,9 @@ def chain(func1: Callable[P, A], /) -> Callable[P, A]: ...
|
||||||
|
|
||||||
|
|
||||||
@overload
|
@overload
|
||||||
def chain(func1: Callable[P, A], func2: Callable[[A], B], /) -> Callable[P, B]: ...
|
def chain(
|
||||||
|
func1: Callable[P, A], func2: Callable[[A], B], /
|
||||||
|
) -> Callable[P, B]: ...
|
||||||
@overload
|
@overload
|
||||||
def chain(
|
def chain(
|
||||||
func1: Callable[P, A], func2: Callable[[A], B], func3: Callable[[B], C], /
|
func1: Callable[P, A], func2: Callable[[A], B], func3: Callable[[B], C], /
|
||||||
|
|
@ -46,7 +48,9 @@ def chain(
|
||||||
) -> Callable[P, Any]: ...
|
) -> Callable[P, Any]: ...
|
||||||
|
|
||||||
|
|
||||||
def chain(func1: Callable[P, Any], /, *funcs: Callable[[Any], Any]) -> Callable[P, Any]:
|
def chain(
|
||||||
|
func1: Callable[P, Any], /, *funcs: Callable[[Any], Any]
|
||||||
|
) -> Callable[P, Any]:
|
||||||
|
|
||||||
def inner(*args: P.args, **kwargs: P.kwargs) -> Any:
|
def inner(*args: P.args, **kwargs: P.kwargs) -> Any:
|
||||||
v = func1(*args, **kwargs)
|
v = func1(*args, **kwargs)
|
||||||
|
|
@ -55,3 +59,66 @@ def chain(func1: Callable[P, Any], /, *funcs: Callable[[Any], Any]) -> Callable[
|
||||||
return v
|
return v
|
||||||
|
|
||||||
return inner
|
return inner
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def async_chain(
|
||||||
|
func1: Callable[P, Awaitable[A]], /
|
||||||
|
) -> Callable[P, Awaitable[A]]: ...
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def async_chain(
|
||||||
|
func1: Callable[P, Awaitable[A]], func2: Callable[[A], Awaitable[B]], /
|
||||||
|
) -> Callable[P, Awaitable[B]]: ...
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def async_chain(
|
||||||
|
func1: Callable[P, Awaitable[A]],
|
||||||
|
func2: Callable[[A], Awaitable[B]],
|
||||||
|
func3: Callable[[B], Awaitable[C]],
|
||||||
|
/,
|
||||||
|
) -> Callable[P, Awaitable[C]]: ...
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def async_chain(
|
||||||
|
func1: Callable[P, Awaitable[A]],
|
||||||
|
func2: Callable[[A], Awaitable[B]],
|
||||||
|
func3: Callable[[B], Awaitable[C]],
|
||||||
|
func4: Callable[[C], Awaitable[D]],
|
||||||
|
/,
|
||||||
|
) -> Callable[P, Awaitable[D]]: ...
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def async_chain(
|
||||||
|
func1: Callable[P, Awaitable[A]],
|
||||||
|
func2: Callable[[A], Awaitable[B]],
|
||||||
|
func3: Callable[[B], Awaitable[C]],
|
||||||
|
func4: Callable[[C], Awaitable[D]],
|
||||||
|
func5: Callable[[D], Awaitable[E]],
|
||||||
|
/,
|
||||||
|
) -> Callable[P, Awaitable[E]]: ...
|
||||||
|
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def async_chain(
|
||||||
|
func1: Callable[P, Any], /, *funcs: Callable[[Any], Awaitable[Any]]
|
||||||
|
) -> Callable[P, Awaitable[Any]]: ...
|
||||||
|
|
||||||
|
|
||||||
|
def async_chain(
|
||||||
|
func1: Callable[P, Awaitable[Any]],
|
||||||
|
/,
|
||||||
|
*funcs: Callable[[Any], Awaitable[Any]],
|
||||||
|
) -> Callable[P, Awaitable[Any]]:
|
||||||
|
|
||||||
|
async def inner(*args: P.args, **kwargs: P.kwargs) -> Any:
|
||||||
|
v = await func1(*args, **kwargs)
|
||||||
|
for f in funcs:
|
||||||
|
v = await f(v)
|
||||||
|
return v
|
||||||
|
|
||||||
|
return inner
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue