Skip to content
This repository was archived by the owner on Aug 8, 2025. It is now read-only.

Commit 3f491ca

Browse files
committed
Merge branch 'fix-typing'
2 parents 31d973f + 77f4209 commit 3f491ca

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

backoff/_decorator.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ def on_predicate(wait_gen: _WaitGenerator,
3030
max_tries: Optional[_MaybeCallable[int]] = None,
3131
max_time: Optional[_MaybeCallable[float]] = None,
3232
jitter: Union[_Jitterer, None] = full_jitter,
33-
on_success: Union[_Handler, Iterable[_Handler]] = None,
34-
on_backoff: Union[_Handler, Iterable[_Handler]] = None,
35-
on_giveup: Union[_Handler, Iterable[_Handler]] = None,
33+
on_success: Union[_Handler, Iterable[_Handler], None] = None,
34+
on_backoff: Union[_Handler, Iterable[_Handler], None] = None,
35+
on_giveup: Union[_Handler, Iterable[_Handler], None] = None,
3636
logger: _MaybeLogger = 'backoff',
3737
backoff_log_level: int = logging.INFO,
3838
giveup_log_level: int = logging.ERROR,
@@ -127,9 +127,9 @@ def on_exception(wait_gen: _WaitGenerator,
127127
max_time: Optional[_MaybeCallable[float]] = None,
128128
jitter: Union[_Jitterer, None] = full_jitter,
129129
giveup: _Predicate[Exception] = lambda e: False,
130-
on_success: Union[_Handler, Iterable[_Handler]] = None,
131-
on_backoff: Union[_Handler, Iterable[_Handler]] = None,
132-
on_giveup: Union[_Handler, Iterable[_Handler]] = None,
130+
on_success: Union[_Handler, Iterable[_Handler], None] = None,
131+
on_backoff: Union[_Handler, Iterable[_Handler], None] = None,
132+
on_giveup: Union[_Handler, Iterable[_Handler], None] = None,
133133
raise_on_giveup: bool = True,
134134
logger: _MaybeLogger = 'backoff',
135135
backoff_log_level: int = logging.INFO,

backoff/_typing.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
# coding:utf-8
22
import logging
33
import sys
4-
from typing import (Any, Callable, Dict, Generator, Sequence, Tuple, Union,
5-
TypeVar)
6-
7-
8-
details_kwargs = {"total": False}
4+
from typing import (Any, Callable, Coroutine, Dict, Generator, Sequence, Tuple,
5+
TypeVar, Union)
96

107
if sys.version_info >= (3, 8): # pragma: no cover
118
from typing import TypedDict
@@ -14,8 +11,9 @@
1411
try:
1512
from typing_extensions import TypedDict
1613
except ImportError:
17-
TypedDict = Dict[str, Any]
18-
del details_kwargs["total"]
14+
class TypedDict(dict):
15+
def __init_subclass__(cls, **kwargs: Any) -> None:
16+
return super().__init_subclass__()
1917

2018

2119
class _Details(TypedDict):
@@ -26,15 +24,18 @@ class _Details(TypedDict):
2624
elapsed: float
2725

2826

29-
class Details(_Details, **details_kwargs):
27+
class Details(_Details, total=False):
3028
wait: float # present in the on_backoff handler case for either decorator
3129
value: Any # present in the on_predicate decorator case
3230

3331

3432
T = TypeVar("T")
3533

3634
_CallableT = TypeVar('_CallableT', bound=Callable[..., Any])
37-
_Handler = Callable[[Details], None]
35+
_Handler = Union[
36+
Callable[[Details], None],
37+
Callable[[Details], Coroutine[Any, Any, None]],
38+
]
3839
_Jitterer = Callable[[float], float]
3940
_MaybeCallable = Union[T, Callable[[], T]]
4041
_MaybeLogger = Union[str, logging.Logger, None]

0 commit comments

Comments
 (0)