Реализуйте декоратор retry, который повторяет вызов функции при указанном типе исключения.
Декоратор должен:
on;on, пробросить последнее исключение;functools.wraps.def retry(on: type[Exception], num_attempts: int = 1):
В тренажере тесты вызывают helper run_retry_case(...), который уже есть в starter code. Вам нужно реализовать именно retry.
on = ["KeyError","KeyError","ok:done"]num_attempts = "KeyError"arg3 = 3{"status":"ok","value":"done","calls":3,"name":"flaky"}Успех на третьей попытке после двух retryable ошибок
on = ["KeyError","KeyError","KeyError"]num_attempts = "KeyError"arg3 = 3{"status":"error","error":"KeyError","calls":3,"name":"flaky"}Последняя retryable ошибка пробрасывается наружу
on = ["ValueError","ok:done"]num_attempts = "KeyError"arg3 = 3{"status":"error","error":"ValueError","calls":1,"name":"flaky"}Другой тип исключения не ретраится