diff --git a/selfprivacy_api/utils/waitloop.py b/selfprivacy_api/utils/waitloop.py new file mode 100644 index 0000000..a375b8e --- /dev/null +++ b/selfprivacy_api/utils/waitloop.py @@ -0,0 +1,15 @@ +from time import sleep +from typing import Callable +from typing import Optional + +def wait_until_true(readiness_checker: Callable[[],bool],*,interval: float =0.1, timeout_sec: Optional[float] = None): + elapsed = 0.0 + if timeout_sec is None: + timeout_sec = 10e16 + while not readiness_checker or elapsed > timeout_sec: + sleep(interval) + elapsed += interval + if elapsed > timeout_sec: + raise TimeoutError() + +