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)