diff --git a/backoff/_async.py b/backoff/_async.py index 82fd477..bf075e7 100644 --- a/backoff/_async.py +++ b/backoff/_async.py @@ -56,8 +56,8 @@ def retry_predicate(target, wait_gen, predicate, async def retry(*args, **kwargs): # update variables from outer function args - max_tries_value = _maybe_call(max_tries) - max_time_value = _maybe_call(max_time) + max_tries_value = _maybe_call(max_tries, *args, **kwargs) + max_time_value = _maybe_call(max_time, *args, **kwargs) tries = 0 start = datetime.datetime.now() @@ -130,8 +130,8 @@ def retry_exception(target, wait_gen, exception, @functools.wraps(target) async def retry(*args, **kwargs): - max_tries_value = _maybe_call(max_tries) - max_time_value = _maybe_call(max_time) + max_tries_value = _maybe_call(max_tries, *args, **kwargs) + max_time_value = _maybe_call(max_time, *args, **kwargs) tries = 0 start = datetime.datetime.now() diff --git a/backoff/_common.py b/backoff/_common.py index 2b2e54e..1f24f59 100644 --- a/backoff/_common.py +++ b/backoff/_common.py @@ -1,5 +1,5 @@ # coding:utf-8 - +import inspect import functools import logging import sys @@ -17,7 +17,10 @@ def _maybe_call(f, *args, **kwargs): if callable(f): try: - return f(*args, **kwargs) + if len(inspect.signature(f).parameters) == 0: + f() + else: + return f(*args, **kwargs) except TypeError: return f else: diff --git a/backoff/_sync.py b/backoff/_sync.py index 4371e16..c72baf9 100644 --- a/backoff/_sync.py +++ b/backoff/_sync.py @@ -28,8 +28,8 @@ def retry_predicate(target, wait_gen, predicate, @functools.wraps(target) def retry(*args, **kwargs): - max_tries_value = _maybe_call(max_tries) - max_time_value = _maybe_call(max_time) + max_tries_value = _maybe_call(max_tries, *args, **kwargs) + max_time_value = _maybe_call(max_time, *args, **kwargs) tries = 0 start = datetime.datetime.now() @@ -84,8 +84,8 @@ def retry_exception(target, wait_gen, exception, @functools.wraps(target) def retry(*args, **kwargs): - max_tries_value = _maybe_call(max_tries) - max_time_value = _maybe_call(max_time) + max_tries_value = _maybe_call(max_tries, *args, **kwargs) + max_time_value = _maybe_call(max_time, *args, **kwargs) tries = 0 start = datetime.datetime.now() diff --git a/backoff/_typing.py b/backoff/_typing.py index 20446d4..674025b 100644 --- a/backoff/_typing.py +++ b/backoff/_typing.py @@ -37,7 +37,7 @@ class Details(_Details, total=False): Callable[[Details], Coroutine[Any, Any, None]], ] _Jitterer = Callable[[float], float] -_MaybeCallable = Union[T, Callable[[], T]] +_MaybeCallable = Union[T, Callable[..., T]] _MaybeLogger = Union[str, logging.Logger, None] _MaybeSequence = Union[T, Sequence[T]] _Predicate = Callable[[T], bool]