in src/smspark/waiter.py [0:0]
def wait_for(self, predicate_fn: Callable[..., bool], timeout: float, period: float) -> None:
"""Wait `timeout` seconds until `predicate_fn` returns `True`, polling every `period` seconds."""
deadline = time.time() + timeout
while not predicate_fn():
time.sleep(period)
if time.time() > deadline:
raise AlgorithmError(
"Timed out waiting for function {}".format(predicate_fn.__name__),
caused_by=TimeoutError(),
)