async def test_concat_happy(): xs = from_iterable(range(5)) ys = from_iterable(range(5, 10)) result = [] async def asend(value): log.debug("test_merge_done:send: ", value) result.append(value) zs = concat(xs, ys) await run(zs, AsyncAnonymousObserver(asend)) assert result == list(range(10))
async def test_catch_no_error(): xs = from_iterable(range(0, 5)) ys = from_iterable(range(5, 10)) result = [] async def asend(value): log.debug("test_catch_no_error:asend(%s)", value) result.append(value) zs = catch_exception((xs, ys)) await run(zs, AsyncAnonymousObserver(asend)) assert result == list(range(5))
async def test_distinct_until_changed_different(): xs = from_iterable([1, 2, 3]) obv = AsyncAnonymousObserver() ys = distinct_until_changed(xs) await run(ys, obv) assert obv.values == [(0, 1), (0, 2), (0, 3), (0, )]
async def test_concat_async(): xs = from_async_iterable(asynciter()) ys = from_iterable(range(5, 10)) result = [] async def asend(value): log.debug("test_concat_async:send(%s)", value) result.append(value) zs = concat(xs, ys) await run(zs, AsyncAnonymousObserver(asend)) assert result == list(range(10))
async def test_filter_happy() -> None: xs = from_iterable([1, 2, 3]) result = [] async def asend(value: int) -> None: result.append(value) async def predicate(value: int) -> bool: await asyncio.sleep(0.1) return value > 1 ys = filter(predicate, xs) value = await run(ys, AsyncAnonymousObserver(asend)) assert value == 3 assert result == [2, 3]
async def test_filter_predicate_throws() -> None: xs = from_iterable([1, 2, 3]) err = MyException("err") result = [] async def asend(value: int) -> None: result.append(value) async def predicate(value: int) -> bool: await asyncio.sleep(0.1) raise err ys = filter(predicate, xs) with pytest.raises(MyException): await run(ys, AsyncAnonymousObserver(asend)) assert result == []
async def init(self): await self.connection.connect() unpack = itemgetter("config", "old_val", "new_val") async def update(x): cfg, old, new = unpack(x) try: if new is None: self.latest_config[cfg].delete(old) else: self.latest_config[cfg].set(new) except: logger.exception(f"Unhandled error while updating config {cfg}.") else: logger.info(f"Updated config {cfg} with {x}") return await subscribe( from_iterable(self.configs.values()) | Operators.flat_map(self.config_observable), AsyncAnonymousObserver(update))
async def mapper(value): return from_iterable([value])