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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-22 10:53 +0000
1#!/usr/bin/env python3
3# Standard libraries
4from typing import List
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
15# Colors class, pylint: disable=too-few-public-methods
16class Colors:
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 = ''
32 # Enabled
33 @staticmethod
34 def enabled() -> bool:
36 # Result
37 try:
38 return bool(Colored('').enabled())
39 except (NameError, TypeError): # pragma: no cover
40 return False
42 # Prepare
43 @staticmethod
44 def prepare() -> None:
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 ]
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 = []
88 # Strip
89 @staticmethod
90 def strip(string: str) -> str:
92 # Strip all colors
93 for item in Colors.ALL:
94 string = string.replace(item, '')
96 # Result
97 return string