From e5a4dbf94431d0c0ddae93fcf00a66bf0957800a Mon Sep 17 00:00:00 2001 From: Ramazan Elsunakev <35545693+relsunkaev@users.noreply.github.com> Date: Thu, 15 Dec 2022 04:04:30 +0000 Subject: [PATCH] feat: improve typing in `on_exception`'s `giveup` --- backoff/_decorator.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backoff/_decorator.py b/backoff/_decorator.py index 92dee1b..91962fe 100644 --- a/backoff/_decorator.py +++ b/backoff/_decorator.py @@ -2,7 +2,7 @@ import asyncio import logging import operator -from typing import Any, Callable, Iterable, Optional, Type, Union +from typing import Any, Callable, Iterable, Optional, Type, TypeVar, Union from backoff._common import ( _prepare_logger, @@ -119,14 +119,15 @@ def decorate(target): # Return a function which decorates a target with a retry loop. return decorate +ET = TypeVar("ET", bound=Exception) def on_exception(wait_gen: _WaitGenerator, - exception: _MaybeSequence[Type[Exception]], + exception: _MaybeSequence[Type[ET]], *, max_tries: Optional[_MaybeCallable[int]] = None, max_time: Optional[_MaybeCallable[float]] = None, jitter: Union[_Jitterer, None] = full_jitter, - giveup: _Predicate[Exception] = lambda e: False, + giveup: _Predicate[ET] = lambda e: False, on_success: Union[_Handler, Iterable[_Handler], None] = None, on_backoff: Union[_Handler, Iterable[_Handler], None] = None, on_giveup: Union[_Handler, Iterable[_Handler], None] = None,