Files
Solax/myenv/lib/python3.12/site-packages/reactivex/abc/subject.py
2024-09-13 09:46:28 +02:00

73 lines
1.9 KiB
Python

from abc import abstractmethod
from typing import Optional, TypeVar, Union
from .disposable import DisposableBase
from .observable import ObservableBase
from .observer import ObserverBase, OnCompleted, OnError, OnNext
from .scheduler import SchedulerBase
_T = TypeVar("_T")
class SubjectBase(ObserverBase[_T], ObservableBase[_T]):
"""Subject abstract base class.
Represents an object that is both an observable sequence as well
as an observer.
"""
__slots__ = ()
@abstractmethod
def subscribe(
self,
on_next: Optional[Union[OnNext[_T], ObserverBase[_T]]] = None,
on_error: Optional[OnError] = None,
on_completed: Optional[OnCompleted] = None,
*,
scheduler: Optional[SchedulerBase] = None,
) -> DisposableBase:
"""Subscribe an observer to the observable sequence.
Args:
observer: [Optional] The object that is to receive
notifications.
scheduler: [Optional] The default scheduler to use for this
subscription.
Returns:
Disposable object representing an observer's subscription
to the observable sequence.
"""
raise NotImplementedError
@abstractmethod
def on_next(self, value: _T) -> None:
"""Notifies the observer of a new element in the sequence.
Args:
value: The received element.
"""
raise NotImplementedError
@abstractmethod
def on_error(self, error: Exception) -> None:
"""Notifies the observer that an exception has occurred.
Args:
error: The error that has occurred.
"""
raise NotImplementedError
@abstractmethod
def on_completed(self) -> None:
"""Notifies the observer of the end of the sequence."""
raise NotImplementedError
__all__ = ["SubjectBase"]