7979from .before_sleep import before_sleep_log # noqa
8080from .before_sleep import before_sleep_nothing # noqa
8181
82+ from ._utils import get_callback_name
83+
8284try :
8385 import tornado
8486except ImportError :
@@ -199,6 +201,7 @@ def __init__(
199201 reraise : bool = False ,
200202 retry_error_cls : t .Type [RetryError ] = RetryError ,
201203 retry_error_callback : t .Optional [t .Callable [["RetryCallState" ], t .Any ]] = None ,
204+ label : t .Optional [str ] = None ,
202205 ):
203206 self .sleep = sleep
204207 self .stop = stop
@@ -211,6 +214,7 @@ def __init__(
211214 self ._local = threading .local ()
212215 self .retry_error_cls = retry_error_cls
213216 self .retry_error_callback = retry_error_callback
217+ self .label = label
214218
215219 def copy (
216220 self ,
@@ -224,6 +228,7 @@ def copy(
224228 reraise : t .Union [bool , object ] = _unset ,
225229 retry_error_cls : t .Union [t .Type [RetryError ], object ] = _unset ,
226230 retry_error_callback : t .Union [t .Optional [t .Callable [["RetryCallState" ], t .Any ]], object ] = _unset ,
231+ label : t .Optional [str ] = _unset ,
227232 ) -> "BaseRetrying" :
228233 """Copy this object with some parameters changed if needed."""
229234 return self .__class__ (
@@ -237,6 +242,7 @@ def copy(
237242 reraise = _first_set (reraise , self .reraise ),
238243 retry_error_cls = _first_set (retry_error_cls , self .retry_error_cls ),
239244 retry_error_callback = _first_set (retry_error_callback , self .retry_error_callback ),
245+ label = _first_set (label , self .label ),
240246 )
241247
242248 def __repr__ (self ) -> str :
@@ -247,7 +253,8 @@ def __repr__(self) -> str:
247253 f"sleep={ self .sleep } , "
248254 f"retry={ self .retry } , "
249255 f"before={ self .before } , "
250- f"after={ self .after } )>"
256+ f"after={ self .after } , "
257+ f"label={ self .label } )>"
251258 )
252259
253260 @property
@@ -458,6 +465,16 @@ def seconds_since_start(self) -> t.Optional[float]:
458465 return None
459466 return self .outcome_timestamp - self .start_time
460467
468+ @property
469+ def fn_label (self ):
470+ if self .retry_object .label is None :
471+ if self .fn is None :
472+ return "<unknown>"
473+ else :
474+ return get_callback_name (self .fn )
475+ else :
476+ return self .retry_object .label
477+
461478 def prepare_for_next_attempt (self ) -> None :
462479 self .outcome = None
463480 self .outcome_timestamp = None
0 commit comments