Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/tenacity/before.py: 54%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

13 statements  

1# Copyright 2016 Julien Danjou 

2# Copyright 2016 Joshua Harlow 

3# Copyright 2013-2014 Ray Holder 

4# 

5# Licensed under the Apache License, Version 2.0 (the "License"); 

6# you may not use this file except in compliance with the License. 

7# You may obtain a copy of the License at 

8# 

9# http://www.apache.org/licenses/LICENSE-2.0 

10# 

11# Unless required by applicable law or agreed to in writing, software 

12# distributed under the License is distributed on an "AS IS" BASIS, 

13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

14# See the License for the specific language governing permissions and 

15# limitations under the License. 

16 

17import typing 

18 

19from tenacity import _utils 

20 

21if typing.TYPE_CHECKING: 

22 from tenacity import RetryCallState 

23 

24 

25def before_nothing(retry_state: "RetryCallState") -> None: 

26 """Before call strategy that does nothing.""" 

27 

28 

29def before_log( 

30 logger: _utils.LoggerProtocol, log_level: int 

31) -> typing.Callable[["RetryCallState"], None]: 

32 """Before call strategy that logs to some logger the attempt.""" 

33 

34 def log_it(retry_state: "RetryCallState") -> None: 

35 if retry_state.fn is None: 

36 # NOTE(sileht): can't really happen, but we must please mypy 

37 fn_name = "<unknown>" 

38 else: 

39 fn_name = _utils.get_callback_name(retry_state.fn) 

40 logger.log( 

41 log_level, 

42 f"Starting call to '{fn_name}', " 

43 f"this is the {_utils.to_ordinal(retry_state.attempt_number)} time calling it.", 

44 ) 

45 

46 return log_it