Coverage for src/paperap/scripts/utils.py: 35%

23 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-20 13:17 -0400

1""" 

2 

3 

4 

5 

6---------------------------------------------------------------------------- 

7 

8METADATA: 

9 

10File: utils.py 

11 Project: paperap 

12Created: 2025-03-18 

13 Version: 0.0.8 

14Author: Jess Mann 

15Email: jess@jmann.me 

16 Copyright (c) 2025 Jess Mann 

17 

18---------------------------------------------------------------------------- 

19 

20LAST MODIFIED: 

21 

222025-03-18 By Jess Mann 

23 

24""" 

25 

26import logging 

27from typing import Protocol, override 

28 

29import colorlog 

30 

31 

32# Define a Protocol for alive_bar() 

33class ProgressBar(Protocol): 

34 total: int 

35 

36 def __call__(self, *args, **kwargs) -> None: ... 

37 

38 def text(self, text: str) -> None: ... 

39 

40 

41def setup_logging() -> logging.Logger: 

42 """ 

43 Set up logging with colored output. 

44 """ 

45 logging.basicConfig(level=logging.ERROR) 

46 

47 # Define a custom formatter class 

48 class CustomFormatter(colorlog.ColoredFormatter): 

49 @override 

50 def format(self, record) -> str: 

51 self._style._fmt = "(%(log_color)s%(levelname)s%(reset)s) %(message)s" 

52 return super().format(record) 

53 

54 # Configure colored logging with the custom formatter 

55 handler = colorlog.StreamHandler() 

56 handler.setFormatter( 

57 CustomFormatter( 

58 # Initial format string (will be overridden in the formatter) 

59 "", 

60 log_colors={ 

61 "DEBUG": "green", 

62 "INFO": "blue", 

63 "WARNING": "yellow", 

64 "ERROR": "red", 

65 "CRITICAL": "red,bg_white", 

66 }, 

67 ) 

68 ) 

69 

70 root_logger = logging.getLogger() 

71 root_logger.handlers = [] # Clear existing handlers 

72 root_logger.addHandler(handler) 

73 root_logger.setLevel(logging.ERROR) 

74 

75 app_logger = logging.getLogger(__name__) 

76 app_logger.setLevel(logging.INFO) 

77 

78 # Suppress logs from the 'requests' library below ERROR level 

79 # logging.getLogger("urllib3").setLevel(logging.ERROR) 

80 # logging.getLogger("requests").setLevel(logging.ERROR) 

81 

82 return app_logger