venv added, updated

This commit is contained in:
Norbert
2024-09-13 09:46:28 +02:00
parent 577596d9f3
commit 82af8c809a
4812 changed files with 640223 additions and 2 deletions

View File

@@ -0,0 +1,46 @@
from typing import Callable, Optional, TypeVar
from reactivex import ConnectableObservable, Observable, abc
from reactivex.disposable import Disposable
_T = TypeVar("_T")
def ref_count_() -> Callable[[ConnectableObservable[_T]], Observable[_T]]:
"""Returns an observable sequence that stays connected to the
source as long as there is at least one subscription to the
observable sequence.
"""
connectable_subscription: Optional[abc.DisposableBase] = None
count = 0
def ref_count(source: ConnectableObservable[_T]) -> Observable[_T]:
def subscribe(
observer: abc.ObserverBase[_T],
scheduler: Optional[abc.SchedulerBase] = None,
) -> abc.DisposableBase:
nonlocal connectable_subscription, count
count += 1
should_connect = count == 1
subscription = source.subscribe(observer, scheduler=scheduler)
if should_connect:
connectable_subscription = source.connect(scheduler)
def dispose() -> None:
nonlocal connectable_subscription, count
subscription.dispose()
count -= 1
if not count and connectable_subscription:
connectable_subscription.dispose()
return Disposable(dispose)
return Observable(subscribe)
return ref_count
__all__ = ["ref_count_"]