async def inner(*args, **kwargs): try: layout = f(*args, **kwargs) workflow.onlayoutstart(layout) return await layout finally: workflow.onlayoutclose(layout)
async def inner(*args, **kwargs): await backlight_slide(BACKLIGHT_DIM) slide = backlight_slide(BACKLIGHT_NORMAL) try: layout = f(*args, **kwargs) workflow.onlayoutstart(layout) loop.schedule(slide) return await layout finally: loop.close(slide) workflow.onlayoutclose(layout)
async def __iter__(self) -> ResultValue: value = None try: if workflow.layout_signal.takers: await workflow.layout_signal.put(LayoutCancelled()) workflow.onlayoutstart(self) while True: layout_tasks = self.create_tasks() await loop.spawn(workflow.layout_signal.take, *layout_tasks) except Result as result: value = result.value finally: workflow.onlayoutclose(self) return value