Source code for caspia.reactive.operations.default

import logging

from ..observable import Observable
from ..value import Value

logger = logging.getLogger(__name__)


[docs]class default(Observable): def __init__(self, *values): assert len(values) > 0 super().__init__() self.values = [] for value in values: if isinstance(value, Observable): self.values.append(value) else: self.values.append(Value(value)) self.values[0].subscribe(self.on_update)
[docs] async def observe(self): for idx, value in enumerate(self.values): try: return await value.observe() except Exception as e: # pylint: disable=broad-except if idx + 1 == len(self.values): raise e
[docs] async def on_update(self, value, **kwargs): await self.trigger(value, **kwargs)