"""Wrappers for testing functions.""" import math import time def delay_response_once(fn, delay_secs: int | float): """Call a function and delay the response once.""" return delay_response(fn, delay_secs=delay_secs, num_delays=1) def delay_response(fn, delay_secs: int | float, num_delays: int | float = math.inf): """Call a function and delay the response a given number of times.""" def delay_wrapper(*args, **kwargs): nonlocal num_delays res = fn(*args, **kwargs) if num_delays > 0: num_delays -= 1 time.sleep(delay_secs) return res return delay_wrapper