venv added, updated
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
from asyncio import Future
|
||||
from typing import Callable, Mapping, Optional, TypeVar, Union
|
||||
|
||||
from reactivex import Observable, abc, defer, empty, from_future
|
||||
|
||||
_Key = TypeVar("_Key")
|
||||
_T = TypeVar("_T")
|
||||
|
||||
|
||||
def case_(
|
||||
mapper: Callable[[], _Key],
|
||||
sources: Mapping[_Key, Observable[_T]],
|
||||
default_source: Optional[Union[Observable[_T], "Future[_T]"]] = None,
|
||||
) -> Observable[_T]:
|
||||
|
||||
default_source_: Union[Observable[_T], "Future[_T]"] = default_source or empty()
|
||||
|
||||
def factory(_: abc.SchedulerBase) -> Observable[_T]:
|
||||
try:
|
||||
result: Union[Observable[_T], "Future[_T]"] = sources[mapper()]
|
||||
except KeyError:
|
||||
result = default_source_
|
||||
|
||||
if isinstance(result, Future):
|
||||
|
||||
result_: Observable[_T] = from_future(result)
|
||||
else:
|
||||
result_ = result
|
||||
|
||||
return result_
|
||||
|
||||
return defer(factory)
|
||||
|
||||
|
||||
__all__ = ["case_"]
|
||||
Reference in New Issue
Block a user