venv added, updated
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
from functools import update_wrapper
|
||||
from types import FunctionType
|
||||
from typing import TYPE_CHECKING, Any, Callable, Iterable, Optional, TypeVar, cast
|
||||
|
||||
from typing_extensions import ParamSpec
|
||||
|
||||
from reactivex import abc
|
||||
from reactivex.disposable import CompositeDisposable
|
||||
from reactivex.disposable.refcountdisposable import RefCountDisposable
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from reactivex import Observable
|
||||
|
||||
_T = TypeVar("_T")
|
||||
_P = ParamSpec("_P")
|
||||
|
||||
|
||||
def add_ref(xs: "Observable[_T]", r: RefCountDisposable) -> "Observable[_T]":
|
||||
from reactivex import Observable
|
||||
|
||||
def subscribe(
|
||||
observer: abc.ObserverBase[Any], scheduler: Optional[abc.SchedulerBase] = None
|
||||
) -> abc.DisposableBase:
|
||||
return CompositeDisposable(r.disposable, xs.subscribe(observer))
|
||||
|
||||
return Observable(subscribe)
|
||||
|
||||
|
||||
def infinite() -> Iterable[int]:
|
||||
n = 0
|
||||
while True:
|
||||
yield n
|
||||
n += 1
|
||||
|
||||
|
||||
def alias(name: str, doc: str, fun: Callable[_P, _T]) -> Callable[_P, _T]:
|
||||
# Adapted from
|
||||
# https://stackoverflow.com/questions/13503079/how-to-create-a-copy-of-a-python-function#
|
||||
# See also help(type(lambda: 0))
|
||||
_fun = cast(FunctionType, fun)
|
||||
args = (_fun.__code__, _fun.__globals__)
|
||||
kwargs = {"name": name, "argdefs": _fun.__defaults__, "closure": _fun.__closure__}
|
||||
alias_ = FunctionType(*args, **kwargs) # type: ignore
|
||||
alias_ = update_wrapper(alias_, _fun)
|
||||
alias_.__kwdefaults__ = _fun.__kwdefaults__
|
||||
alias_.__doc__ = doc
|
||||
alias_.__annotations__ = _fun.__annotations__
|
||||
return cast(Callable[_P, _T], alias_)
|
||||
|
||||
|
||||
class NotSet:
|
||||
"""Sentinel value."""
|
||||
|
||||
def __eq__(self, other: Any) -> bool:
|
||||
return self is other
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return "NotSet"
|
||||
|
||||
|
||||
__all__ = ["add_ref", "infinite", "alias", "NotSet"]
|
||||
Reference in New Issue
Block a user