Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pip/_vendor/tenacity/after.py: 38%

13 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:48 +0000

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 pip._vendor.tenacity import _utils 

20 

21if typing.TYPE_CHECKING: 

22 import logging 

23 

24 from pip._vendor.tenacity import RetryCallState 

25 

26 

27def after_nothing(retry_state: "RetryCallState") -> None: 

28 """After call strategy that does nothing.""" 

29 

30 

31def after_log( 

32 logger: "logging.Logger", 

33 log_level: int, 

34 sec_format: str = "%0.3f", 

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

36 """After call strategy that logs to some logger the finished attempt.""" 

37 

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

39 if retry_state.fn is None: 

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

41 fn_name = "<unknown>" 

42 else: 

43 fn_name = _utils.get_callback_name(retry_state.fn) 

44 logger.log( 

45 log_level, 

46 f"Finished call to '{fn_name}' " 

47 f"after {sec_format % retry_state.seconds_since_start}(s), " 

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

49 ) 

50 

51 return log_it