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()