Colors from the rich python library as a StrEnum with ANSI codes
colors.py
1from enum import StrEnum
2
3class Color(StrEnum):
4 """Colors from rich.
5
6 Source: https://rich.readthedocs.io/en/stable/appendix/colors.html"""
7 BLACK = "#000000"
8 RED = "#800000"
9 GREEN = "#008000"
10 YELLOW = "#808000"
11 BLUE = "#000080"
12 MAGENTA = "#800080"
13 CYAN = "#008080"
14 WHITE = "#c0c0c0"
15 BRIGHT_BLACK = "#808080"
16 BRIGHT_RED = "#ff0000"
17 BRIGHT_GREEN = "#00ff00"
18 BRIGHT_YELLOW = "#ffff00"
19 BRIGHT_BLUE = "#0000ff"
20 BRIGHT_MAGENTA = "#ff00ff"
21 BRIGHT_CYAN = "#00ffff"
22 BRIGHT_WHITE = "#ffffff"
23 GREY0 = "#000000"
24 NAVY_BLUE = "#00005f"
25 DARK_BLUE = "#000087"
26 BLUE3 = "#0000d7"
27 BLUE1 = "#0000ff"
28 DARK_GREEN = "#005f00"
29 DEEP_SKY_BLUE4 = "#005faf"
30 DODGER_BLUE3 = "#005fd7"
31 DODGER_BLUE2 = "#005fff"
32 GREEN4 = "#008700"
33 SPRING_GREEN4 = "#00875f"
34 TURQUOISE4 = "#008787"
35 DEEP_SKY_BLUE3 = "#0087d7"
36 DODGER_BLUE1 = "#0087ff"
37 DARK_CYAN = "#00af87"
38 LIGHT_SEA_GREEN = "#00afaf"
39 DEEP_SKY_BLUE2 = "#00afd7"
40 DEEP_SKY_BLUE1 = "#00afff"
41 GREEN3 = "#00d700"
42 SPRING_GREEN3 = "#00d75f"
43 CYAN3 = "#00d7af"
44 DARK_TURQUOISE = "#00d7d7"
45 TURQUOISE2 = "#00d7ff"
46 GREEN1 = "#00ff00"
47 SPRING_GREEN2 = "#00ff5f"
48 SPRING_GREEN1 = "#00ff87"
49 MEDIUM_SPRING_GREEN = "#00ffaf"
50 CYAN2 = "#00ffd7"
51 CYAN1 = "#00ffff"
52 PURPLE4 = "#5f00af"
53 PURPLE3 = "#5f00d7"
54 BLUE_VIOLET = "#5f00ff"
55 GREY37 = "#5f5f5f"
56 MEDIUM_PURPLE4 = "#5f5f87"
57 SLATE_BLUE3 = "#5f5fd7"
58 ROYAL_BLUE1 = "#5f5fff"
59 CHARTREUSE4 = "#5f8700"
60 PALE_TURQUOISE4 = "#5f8787"
61 STEEL_BLUE = "#5f87af"
62 STEEL_BLUE3 = "#5f87d7"
63 CORNFLOWER_BLUE = "#5f87ff"
64 DARK_SEA_GREEN4 = "#5faf5f"
65 CADET_BLUE = "#5fafaf"
66 SKY_BLUE3 = "#5fafd7"
67 CHARTREUSE3 = "#5fd700"
68 SEA_GREEN3 = "#5fd787"
69 AQUAMARINE3 = "#5fd7af"
70 MEDIUM_TURQUOISE = "#5fd7d7"
71 STEEL_BLUE1 = "#5fd7ff"
72 SEA_GREEN2 = "#5fff5f"
73 SEA_GREEN1 = "#5fffaf"
74 DARK_SLATE_GRAY2 = "#5fffff"
75 DARK_RED = "#870000"
76 DARK_MAGENTA = "#8700af"
77 ORANGE4 = "#875f00"
78 LIGHT_PINK4 = "#875f5f"
79 PLUM4 = "#875f87"
80 MEDIUM_PURPLE3 = "#875fd7"
81 SLATE_BLUE1 = "#875fff"
82 WHEAT4 = "#87875f"
83 GREY53 = "#878787"
84 LIGHT_SLATE_GREY = "#8787af"
85 MEDIUM_PURPLE = "#8787d7"
86 LIGHT_SLATE_BLUE = "#8787ff"
87 YELLOW4 = "#87af00"
88 DARK_SEA_GREEN = "#87af87"
89 LIGHT_SKY_BLUE3 = "#87afd7"
90 SKY_BLUE2 = "#87afff"
91 CHARTREUSE2 = "#87d700"
92 PALE_GREEN3 = "#87d787"
93 DARK_SLATE_GRAY3 = "#87d7d7"
94 SKY_BLUE1 = "#87d7ff"
95 CHARTREUSE1 = "#87ff00"
96 LIGHT_GREEN = "#87ff87"
97 AQUAMARINE1 = "#87ffd7"
98 DARK_SLATE_GRAY1 = "#87ffff"
99 DEEP_PINK4 = "#af005f"
100 MEDIUM_VIOLET_RED = "#af0087"
101 DARK_VIOLET = "#af00d7"
102 PURPLE = "#af00ff"
103 MEDIUM_ORCHID3 = "#af5faf"
104 MEDIUM_ORCHID = "#af5fd7"
105 DARK_GOLDENROD = "#af8700"
106 ROSY_BROWN = "#af8787"
107 GREY63 = "#af87af"
108 MEDIUM_PURPLE2 = "#af87d7"
109 MEDIUM_PURPLE1 = "#af87ff"
110 DARK_KHAKI = "#afaf5f"
111 NAVAJO_WHITE3 = "#afaf87"
112 GREY69 = "#afafaf"
113 LIGHT_STEEL_BLUE3 = "#afafd7"
114 LIGHT_STEEL_BLUE = "#afafff"
115 DARK_OLIVE_GREEN3 = "#afd75f"
116 DARK_SEA_GREEN3 = "#afd787"
117 LIGHT_CYAN3 = "#afd7d7"
118 LIGHT_SKY_BLUE1 = "#afd7ff"
119 GREEN_YELLOW = "#afff00"
120 DARK_OLIVE_GREEN2 = "#afff5f"
121 PALE_GREEN1 = "#afff87"
122 DARK_SEA_GREEN2 = "#afffaf"
123 PALE_TURQUOISE1 = "#afffff"
124 RED3 = "#d70000"
125 DEEP_PINK3 = "#d70087"
126 MAGENTA3 = "#d700d7"
127 DARK_ORANGE3 = "#d75f00"
128 INDIAN_RED = "#d75f5f"
129 HOT_PINK3 = "#d75f87"
130 HOT_PINK2 = "#d75faf"
131 ORCHID = "#d75fd7"
132 ORANGE3 = "#d78700"
133 LIGHT_SALMON3 = "#d7875f"
134 LIGHT_PINK3 = "#d78787"
135 PINK3 = "#d787af"
136 PLUM3 = "#d787d7"
137 VIOLET = "#d787ff"
138 GOLD3 = "#d7af00"
139 LIGHT_GOLDENROD3 = "#d7af5f"
140 TAN = "#d7af87"
141 MISTY_ROSE3 = "#d7afaf"
142 THISTLE3 = "#d7afd7"
143 PLUM2 = "#d7afff"
144 YELLOW3 = "#d7d700"
145 KHAKI3 = "#d7d75f"
146 LIGHT_YELLOW3 = "#d7d7af"
147 GREY84 = "#d7d7d7"
148 LIGHT_STEEL_BLUE1 = "#d7d7ff"
149 YELLOW2 = "#d7ff00"
150 DARK_OLIVE_GREEN1 = "#d7ff87"
151 DARK_SEA_GREEN1 = "#d7ffaf"
152 HONEYDEW2 = "#d7ffd7"
153 LIGHT_CYAN1 = "#d7ffff"
154 RED1 = "#ff0000"
155 DEEP_PINK2 = "#ff005f"
156 DEEP_PINK1 = "#ff00af"
157 MAGENTA2 = "#ff00d7"
158 MAGENTA1 = "#ff00ff"
159 ORANGE_RED1 = "#ff5f00"
160 INDIAN_RED1 = "#ff5f87"
161 HOT_PINK = "#ff5fd7"
162 MEDIUM_ORCHID1 = "#ff5fff"
163 DARK_ORANGE = "#ff8700"
164 SALMON1 = "#ff875f"
165 LIGHT_CORAL = "#ff8787"
166 PALE_VIOLET_RED1 = "#ff87af"
167 ORCHID2 = "#ff87d7"
168 ORCHID1 = "#ff87ff"
169 ORANGE1 = "#ffaf00"
170 SANDY_BROWN = "#ffaf5f"
171 LIGHT_SALMON1 = "#ffaf87"
172 LIGHT_PINK1 = "#ffafaf"
173 PINK1 = "#ffafd7"
174 PLUM1 = "#ffafff"
175 GOLD1 = "#ffd700"
176 LIGHT_GOLDENROD2 = "#ffd787"
177 NAVAJO_WHITE1 = "#ffd7af"
178 MISTY_ROSE1 = "#ffd7d7"
179 THISTLE1 = "#ffd7ff"
180 YELLOW1 = "#ffff00"
181 LIGHT_GOLDENROD1 = "#ffff5f"
182 KHAKI1 = "#ffff87"
183 WHEAT1 = "#ffffaf"
184 CORNSILK1 = "#ffffd7"
185 GREY100 = "#ffffff"
186 GREY3 = "#080808"
187 GREY7 = "#121212"
188 GREY11 = "#1c1c1c"
189 GREY15 = "#262626"
190 GREY19 = "#303030"
191 GREY23 = "#3a3a3a"
192 GREY27 = "#444444"
193 GREY30 = "#4e4e4e"
194 GREY35 = "#585858"
195 GREY39 = "#626262"
196 GREY42 = "#6c6c6c"
197 GREY46 = "#767676"
198 GREY50 = "#808080"
199 GREY54 = "#8a8a8a"
200 GREY58 = "#949494"
201 GREY62 = "#9e9e9e"
202 GREY66 = "#a8a8a8"
203 GREY70 = "#b2b2b2"
204 GREY74 = "#bcbcbc"
205 GREY78 = "#c6c6c6"
206 GREY82 = "#d0d0d0"
207 GREY85 = "#dadada"
208 GREY89 = "#e4e4e4"
209 GREY93 = "#eeeeee"
210
211 @property
212 def ansi(self) -> str:
213 """Returns the ANSI escape code for the color."""
214 # Mapping from hex to its designated ANSI code
215 mapping = {
216 "#000000": "\033[30m",
217 "#800000": "\033[31m",
218 "#008000": "\033[32m",
219 "#808000": "\033[33m",
220 "#000080": "\033[34m",
221 "#800080": "\033[35m",
222 "#008080": "\033[36m",
223 "#c0c0c0": "\033[37m",
224 "#808080": "\033[90m",
225 "#ff0000": "\033[91m",
226 "#00ff00": "\033[92m",
227 "#ffff00": "\033[93m",
228 "#0000ff": "\033[94m",
229 "#ff00ff": "\033[95m",
230 "#00ffff": "\033[96m",
231 "#ffffff": "\033[97m",
232 "#00005f": "\033[38;5;17m",
233 "#000087": "\033[38;5;18m",
234 "#0000d7": "\033[38;5;20m",
235 "#005f00": "\033[38;5;22m",
236 "#005faf": "\033[38;5;25m",
237 "#005fd7": "\033[38;5;26m",
238 "#005fff": "\033[38;5;27m",
239 "#008700": "\033[38;5;28m",
240 "#00875f": "\033[38;5;29m",
241 "#008787": "\033[38;5;30m",
242 "#0087d7": "\033[38;5;32m",
243 "#0087ff": "\033[38;5;33m",
244 "#00af87": "\033[38;5;36m",
245 "#00afaf": "\033[38;5;37m",
246 "#00afd7": "\033[38;5;38m",
247 "#00afff": "\033[38;5;39m",
248 "#00d700": "\033[38;5;40m",
249 "#00d75f": "\033[38;5;41m",
250 "#00d7af": "\033[38;5;43m",
251 "#00d7d7": "\033[38;5;44m",
252 "#00d7ff": "\033[38;5;45m",
253 "#00ff5f": "\033[38;5;47m",
254 "#00ff87": "\033[38;5;48m",
255 "#00ffaf": "\033[38;5;49m",
256 "#00ffd7": "\033[38;5;50m",
257 "#5f00af": "\033[38;5;55m",
258 "#5f00d7": "\033[38;5;56m",
259 "#5f00ff": "\033[38;5;57m",
260 "#5f5f5f": "\033[38;5;59m",
261 "#5f5f87": "\033[38;5;60m",
262 "#5f5fd7": "\033[38;5;62m",
263 "#5f5fff": "\033[38;5;63m",
264 "#5f8700": "\033[38;5;64m",
265 "#5f8787": "\033[38;5;66m",
266 "#5f87af": "\033[38;5;67m",
267 "#5f87d7": "\033[38;5;68m",
268 "#5f87ff": "\033[38;5;69m",
269 "#5faf5f": "\033[38;5;71m",
270 "#5fafaf": "\033[38;5;73m",
271 "#5fafd7": "\033[38;5;74m",
272 "#5fd700": "\033[38;5;76m",
273 "#5fd787": "\033[38;5;78m",
274 "#5fd7af": "\033[38;5;79m",
275 "#5fd7d7": "\033[38;5;80m",
276 "#5fd7ff": "\033[38;5;81m",
277 "#5fff5f": "\033[38;5;83m",
278 "#5fffaf": "\033[38;5;85m",
279 "#5fffff": "\033[38;5;87m",
280 "#870000": "\033[38;5;88m",
281 "#8700af": "\033[38;5;91m",
282 "#875f00": "\033[38;5;94m",
283 "#875f5f": "\033[38;5;95m",
284 "#875f87": "\033[38;5;96m",
285 "#875fd7": "\033[38;5;98m",
286 "#875fff": "\033[38;5;99m",
287 "#87875f": "\033[38;5;101m",
288 "#878787": "\033[38;5;102m",
289 "#8787af": "\033[38;5;103m",
290 "#8787d7": "\033[38;5;104m",
291 "#8787ff": "\033[38;5;105m",
292 "#87af00": "\033[38;5;106m",
293 "#87af87": "\033[38;5;108m",
294 "#87afd7": "\033[38;5;110m",
295 "#87afff": "\033[38;5;111m",
296 "#87d700": "\033[38;5;112m",
297 "#87d787": "\033[38;5;114m",
298 "#87d7d7": "\033[38;5;116m",
299 "#87d7ff": "\033[38;5;117m",
300 "#87ff00": "\033[38;5;118m",
301 "#87ff87": "\033[38;5;120m",
302 "#87ffd7": "\033[38;5;122m",
303 "#87ffff": "\033[38;5;123m",
304 "#af005f": "\033[38;5;125m",
305 "#af0087": "\033[38;5;126m",
306 "#af00d7": "\033[38;5;128m",
307 "#af00ff": "\033[38;5;129m",
308 "#af5faf": "\033[38;5;133m",
309 "#af5fd7": "\033[38;5;134m",
310 "#af8700": "\033[38;5;136m",
311 "#af8787": "\033[38;5;138m",
312 "#af87af": "\033[38;5;139m",
313 "#af87d7": "\033[38;5;140m",
314 "#af87ff": "\033[38;5;141m",
315 "#afaf5f": "\033[38;5;143m",
316 "#afaf87": "\033[38;5;144m",
317 "#afafaf": "\033[38;5;145m",
318 "#afafd7": "\033[38;5;146m",
319 "#afafff": "\033[38;5;147m",
320 "#afd75f": "\033[38;5;149m",
321 "#afd787": "\033[38;5;150m",
322 "#afd7d7": "\033[38;5;152m",
323 "#afd7ff": "\033[38;5;153m",
324 "#afff00": "\033[38;5;154m",
325 "#afff5f": "\033[38;5;155m",
326 "#afff87": "\033[38;5;156m",
327 "#afffaf": "\033[38;5;157m",
328 "#afffff": "\033[38;5;159m",
329 "#d70000": "\033[38;5;160m",
330 "#d70087": "\033[38;5;162m",
331 "#d700d7": "\033[38;5;164m",
332 "#d75f00": "\033[38;5;166m",
333 "#d75f5f": "\033[38;5;167m",
334 "#d75f87": "\033[38;5;168m",
335 "#d75faf": "\033[38;5;169m",
336 "#d75fd7": "\033[38;5;170m",
337 "#d78700": "\033[38;5;172m",
338 "#d7875f": "\033[38;5;173m",
339 "#d78787": "\033[38;5;174m",
340 "#d787af": "\033[38;5;175m",
341 "#d787d7": "\033[38;5;176m",
342 "#d787ff": "\033[38;5;177m",
343 "#d7af00": "\033[38;5;178m",
344 "#d7af5f": "\033[38;5;179m",
345 "#d7af87": "\033[38;5;180m",
346 "#d7afaf": "\033[38;5;181m",
347 "#d7afd7": "\033[38;5;182m",
348 "#d7afff": "\033[38;5;183m",
349 "#d7d700": "\033[38;5;184m",
350 "#d7d75f": "\033[38;5;185m",
351 "#d7d7af": "\033[38;5;187m",
352 "#d7d7d7": "\033[38;5;188m",
353 "#d7d7ff": "\033[38;5;189m",
354 "#d7ff00": "\033[38;5;190m",
355 "#d7ff87": "\033[38;5;192m",
356 "#d7ffaf": "\033[38;5;193m",
357 "#d7ffd7": "\033[38;5;194m",
358 "#d7ffff": "\033[38;5;195m",
359 "#ff005f": "\033[38;5;197m",
360 "#ff00af": "\033[38;5;199m",
361 "#ff00d7": "\033[38;5;200m",
362 "#ff5f00": "\033[38;5;202m",
363 "#ff5f87": "\033[38;5;204m",
364 "#ff5fd7": "\033[38;5;206m",
365 "#ff5fff": "\033[38;5;207m",
366 "#ff8700": "\033[38;5;208m",
367 "#ff875f": "\033[38;5;209m",
368 "#ff8787": "\033[38;5;210m",
369 "#ff87af": "\033[38;5;211m",
370 "#ff87d7": "\033[38;5;212m",
371 "#ff87ff": "\033[38;5;213m",
372 "#ffaf00": "\033[38;5;214m",
373 "#ffaf5f": "\033[38;5;215m",
374 "#ffaf87": "\033[38;5;216m",
375 "#ffafaf": "\033[38;5;217m",
376 "#ffafd7": "\033[38;5;218m",
377 "#ffafff": "\033[38;5;219m",
378 "#ffd700": "\033[38;5;220m",
379 "#ffd787": "\033[38;5;222m",
380 "#ffd7af": "\033[38;5;223m",
381 "#ffd7d7": "\033[38;5;224m",
382 "#ffd7ff": "\033[38;5;225m",
383 "#ffff5f": "\033[38;5;227m",
384 "#ffff87": "\033[38;5;228m",
385 "#ffffaf": "\033[38;5;229m",
386 "#ffffd7": "\033[38;5;230m",
387 "#080808": "\033[38;5;232m",
388 "#121212": "\033[38;5;233m",
389 "#1c1c1c": "\033[38;5;234m",
390 "#262626": "\033[38;5;235m",
391 "#303030": "\033[38;5;236m",
392 "#3a3a3a": "\033[38;5;237m",
393 "#444444": "\033[38;5;238m",
394 "#4e4e4e": "\033[38;5;239m",
395 "#585858": "\033[38;5;240m",
396 "#626262": "\033[38;5;241m",
397 "#6c6c6c": "\033[38;5;242m",
398 "#767676": "\033[38;5;243m",
399 "#8a8a8a": "\033[38;5;245m",
400 "#949494": "\033[38;5;246m",
401 "#9e9e9e": "\033[38;5;247m",
402 "#a8a8a8": "\033[38;5;248m",
403 "#b2b2b2": "\033[38;5;249m",
404 "#bcbcbc": "\033[38;5;250m",
405 "#c6c6c6": "\033[38;5;251m",
406 "#d0d0d0": "\033[38;5;252m",
407 "#dadada": "\033[38;5;253m",
408 "#e4e4e4": "\033[38;5;254m",
409 "#eeeeee": "\033[38;5;255m",
410 }
411 return mapping.get(self.value, "")
412
413 @staticmethod
414 def reset() -> str:
415 return "\033[0m"
416
417if __name__ == "__main__":
418 try:
419 c = Color.DODGER_BLUE1
420 print(f"{c.name} ({c.value}): {c.ansi}Hello, Desert Thunder!{Color.reset()}")
421 except AttributeError:
422 print("DODGER_BLUE1 not found in Enum.")
423
424 print(f"Total colors in Enum: {len(Color)}")