Coverage for src/prints/colors.py: 100.00%

53 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-22 10:53 +0000

1#!/usr/bin/env python3 

2 

3# Standard libraries 

4from typing import List 

5 

6# Modules libraries 

7try: 

8 try: # colored>=2.0.0 

9 from colored import Colored 

10 except ImportError: # colored<2.0.0 # pragma: no cover 

11 from colored import colored as Colored # type: ignore[assignment] 

12except ModuleNotFoundError: # pragma: no cover 

13 pass 

14 

15# Colors class, pylint: disable=too-few-public-methods 

16class Colors: 

17 

18 # Attributes 

19 ALL: List[str] = [] 

20 BOLD = '' 

21 CYAN = '' 

22 GREEN = '' 

23 GREEN_THIN = '' 

24 GREY = '' 

25 RED = '' 

26 RED_THIN = '' 

27 RESET = '' 

28 YELLOW = '' 

29 YELLOW_LIGHT = '' 

30 YELLOW_THIN = '' 

31 

32 # Enabled 

33 @staticmethod 

34 def enabled() -> bool: 

35 

36 # Result 

37 try: 

38 return bool(Colored('').enabled()) 

39 except (NameError, TypeError): # pragma: no cover 

40 return False 

41 

42 # Prepare 

43 @staticmethod 

44 def prepare() -> None: 

45 

46 # Colors enabled 

47 if Colors.enabled(): 

48 Colors.RESET = Colored('reset').attribute() 

49 Colors.BOLD = Colors.RESET + Colored('bold').attribute() 

50 Colors.CYAN = Colors.BOLD + Colored('cyan').foreground() 

51 Colors.GREEN = Colors.BOLD + Colored('green').foreground() 

52 Colors.GREEN_THIN = Colors.RESET + Colored('green').foreground() 

53 Colors.GREY = Colors.BOLD + Colored('light_gray').foreground() 

54 Colors.RED = Colors.BOLD + Colored('red').foreground() 

55 Colors.RED_THIN = Colors.RESET + Colored('red').foreground() 

56 Colors.YELLOW = Colors.BOLD + Colored('yellow').foreground() 

57 Colors.YELLOW_LIGHT = Colors.BOLD + Colored('light_yellow').foreground() 

58 Colors.YELLOW_THIN = Colors.RESET + Colored('yellow').foreground() 

59 Colors.ALL = [ 

60 Colors.CYAN, 

61 Colors.GREEN, 

62 Colors.GREEN_THIN, 

63 Colors.GREY, 

64 Colors.RED, 

65 Colors.RED_THIN, 

66 Colors.YELLOW, 

67 Colors.YELLOW_LIGHT, 

68 Colors.YELLOW_THIN, 

69 Colors.BOLD, 

70 Colors.RESET, 

71 ] 

72 

73 # Colors disabled 

74 else: 

75 Colors.BOLD = '' 

76 Colors.CYAN = '' 

77 Colors.GREEN = '' 

78 Colors.GREEN_THIN = '' 

79 Colors.GREY = '' 

80 Colors.RED = '' 

81 Colors.RED_THIN = '' 

82 Colors.RESET = '' 

83 Colors.YELLOW = '' 

84 Colors.YELLOW_LIGHT = '' 

85 Colors.YELLOW_THIN = '' 

86 Colors.ALL = [] 

87 

88 # Strip 

89 @staticmethod 

90 def strip(string: str) -> str: 

91 

92 # Strip all colors 

93 for item in Colors.ALL: 

94 string = string.replace(item, '') 

95 

96 # Result 

97 return string