"""Asyncio utilities."""
import asyncio
[docs]class AsyncValueHolder:
"""An asynchronous value holder."""
def __init__(self):
self.event = asyncio.Event()
[docs] async def get(self):
"""Waits until a value is set using :meth:`set` and then returns that value.
Returns
-------
any
The value set using :meth:`set`.
"""
await self.event.wait()
return self.value
[docs] def set(self, value):
"""Sets the value to be gotten with :meth:`get`.
Parameters
----------
value
The value to set.
"""
self.value = value
self.event.set()