Skip to content

Commit 8cc14e8

Browse files
committed
Add optional label to BaseRetrying class
If label is set it will be used instead of a function name in before_sleep_log
1 parent 3100582 commit 8cc14e8

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

tenacity/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ def __init__(
199199
reraise: bool = False,
200200
retry_error_cls: t.Type[RetryError] = RetryError,
201201
retry_error_callback: t.Optional[t.Callable[["RetryCallState"], t.Any]] = None,
202+
label: t.Optional[str] = None,
202203
):
203204
self.sleep = sleep
204205
self.stop = stop
@@ -211,6 +212,7 @@ def __init__(
211212
self._local = threading.local()
212213
self.retry_error_cls = retry_error_cls
213214
self.retry_error_callback = retry_error_callback
215+
self.label = label
214216

215217
def copy(
216218
self,
@@ -224,6 +226,7 @@ def copy(
224226
reraise: t.Union[bool, object] = _unset,
225227
retry_error_cls: t.Union[t.Type[RetryError], object] = _unset,
226228
retry_error_callback: t.Union[t.Optional[t.Callable[["RetryCallState"], t.Any]], object] = _unset,
229+
label: t.Optional[str] = _unset,
227230
) -> "BaseRetrying":
228231
"""Copy this object with some parameters changed if needed."""
229232
return self.__class__(
@@ -237,6 +240,7 @@ def copy(
237240
reraise=_first_set(reraise, self.reraise),
238241
retry_error_cls=_first_set(retry_error_cls, self.retry_error_cls),
239242
retry_error_callback=_first_set(retry_error_callback, self.retry_error_callback),
243+
label=_first_set(label, self.label),
240244
)
241245

242246
def __repr__(self) -> str:
@@ -247,7 +251,8 @@ def __repr__(self) -> str:
247251
f"sleep={self.sleep}, "
248252
f"retry={self.retry}, "
249253
f"before={self.before}, "
250-
f"after={self.after})>"
254+
f"after={self.after}, "
255+
f"label={self.label})>"
251256
)
252257

253258
@property

tenacity/before_sleep.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,17 @@ def log_it(retry_state: "RetryCallState") -> None:
5656
verb, value = "returned", retry_state.outcome.result()
5757
local_exc_info = False # exc_info does not apply when no exception
5858

59-
if retry_state.fn is None:
60-
# NOTE(sileht): can't really happen, but we must please mypy
61-
fn_name = "<unknown>"
62-
else:
63-
fn_name = _utils.get_callback_name(retry_state.fn)
59+
label = retry_state.retry_object.label
60+
61+
if label is None:
62+
if retry_state.fn is None:
63+
label = "<unknown>"
64+
else:
65+
label = _utils.get_callback_name(retry_state.fn)
6466

6567
logger.log(
6668
log_level,
67-
f"Retrying {fn_name} " f"in {retry_state.next_action.sleep} seconds as it {verb} {value}.",
69+
f"Retrying {label} " f"in {retry_state.next_action.sleep} seconds as it {verb} {value}.",
6870
exc_info=local_exc_info,
6971
)
7072

0 commit comments

Comments
 (0)