Colors from the rich python library as a StrEnum with ANSI codes
colors.py
424 lines 14 kB view raw
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)}")