from enum import StrEnum class Color(StrEnum): """Colors from rich. Source: https://rich.readthedocs.io/en/stable/appendix/colors.html""" BLACK = "#000000" RED = "#800000" GREEN = "#008000" YELLOW = "#808000" BLUE = "#000080" MAGENTA = "#800080" CYAN = "#008080" WHITE = "#c0c0c0" BRIGHT_BLACK = "#808080" BRIGHT_RED = "#ff0000" BRIGHT_GREEN = "#00ff00" BRIGHT_YELLOW = "#ffff00" BRIGHT_BLUE = "#0000ff" BRIGHT_MAGENTA = "#ff00ff" BRIGHT_CYAN = "#00ffff" BRIGHT_WHITE = "#ffffff" GREY0 = "#000000" NAVY_BLUE = "#00005f" DARK_BLUE = "#000087" BLUE3 = "#0000d7" BLUE1 = "#0000ff" DARK_GREEN = "#005f00" DEEP_SKY_BLUE4 = "#005faf" DODGER_BLUE3 = "#005fd7" DODGER_BLUE2 = "#005fff" GREEN4 = "#008700" SPRING_GREEN4 = "#00875f" TURQUOISE4 = "#008787" DEEP_SKY_BLUE3 = "#0087d7" DODGER_BLUE1 = "#0087ff" DARK_CYAN = "#00af87" LIGHT_SEA_GREEN = "#00afaf" DEEP_SKY_BLUE2 = "#00afd7" DEEP_SKY_BLUE1 = "#00afff" GREEN3 = "#00d700" SPRING_GREEN3 = "#00d75f" CYAN3 = "#00d7af" DARK_TURQUOISE = "#00d7d7" TURQUOISE2 = "#00d7ff" GREEN1 = "#00ff00" SPRING_GREEN2 = "#00ff5f" SPRING_GREEN1 = "#00ff87" MEDIUM_SPRING_GREEN = "#00ffaf" CYAN2 = "#00ffd7" CYAN1 = "#00ffff" PURPLE4 = "#5f00af" PURPLE3 = "#5f00d7" BLUE_VIOLET = "#5f00ff" GREY37 = "#5f5f5f" MEDIUM_PURPLE4 = "#5f5f87" SLATE_BLUE3 = "#5f5fd7" ROYAL_BLUE1 = "#5f5fff" CHARTREUSE4 = "#5f8700" PALE_TURQUOISE4 = "#5f8787" STEEL_BLUE = "#5f87af" STEEL_BLUE3 = "#5f87d7" CORNFLOWER_BLUE = "#5f87ff" DARK_SEA_GREEN4 = "#5faf5f" CADET_BLUE = "#5fafaf" SKY_BLUE3 = "#5fafd7" CHARTREUSE3 = "#5fd700" SEA_GREEN3 = "#5fd787" AQUAMARINE3 = "#5fd7af" MEDIUM_TURQUOISE = "#5fd7d7" STEEL_BLUE1 = "#5fd7ff" SEA_GREEN2 = "#5fff5f" SEA_GREEN1 = "#5fffaf" DARK_SLATE_GRAY2 = "#5fffff" DARK_RED = "#870000" DARK_MAGENTA = "#8700af" ORANGE4 = "#875f00" LIGHT_PINK4 = "#875f5f" PLUM4 = "#875f87" MEDIUM_PURPLE3 = "#875fd7" SLATE_BLUE1 = "#875fff" WHEAT4 = "#87875f" GREY53 = "#878787" LIGHT_SLATE_GREY = "#8787af" MEDIUM_PURPLE = "#8787d7" LIGHT_SLATE_BLUE = "#8787ff" YELLOW4 = "#87af00" DARK_SEA_GREEN = "#87af87" LIGHT_SKY_BLUE3 = "#87afd7" SKY_BLUE2 = "#87afff" CHARTREUSE2 = "#87d700" PALE_GREEN3 = "#87d787" DARK_SLATE_GRAY3 = "#87d7d7" SKY_BLUE1 = "#87d7ff" CHARTREUSE1 = "#87ff00" LIGHT_GREEN = "#87ff87" AQUAMARINE1 = "#87ffd7" DARK_SLATE_GRAY1 = "#87ffff" DEEP_PINK4 = "#af005f" MEDIUM_VIOLET_RED = "#af0087" DARK_VIOLET = "#af00d7" PURPLE = "#af00ff" MEDIUM_ORCHID3 = "#af5faf" MEDIUM_ORCHID = "#af5fd7" DARK_GOLDENROD = "#af8700" ROSY_BROWN = "#af8787" GREY63 = "#af87af" MEDIUM_PURPLE2 = "#af87d7" MEDIUM_PURPLE1 = "#af87ff" DARK_KHAKI = "#afaf5f" NAVAJO_WHITE3 = "#afaf87" GREY69 = "#afafaf" LIGHT_STEEL_BLUE3 = "#afafd7" LIGHT_STEEL_BLUE = "#afafff" DARK_OLIVE_GREEN3 = "#afd75f" DARK_SEA_GREEN3 = "#afd787" LIGHT_CYAN3 = "#afd7d7" LIGHT_SKY_BLUE1 = "#afd7ff" GREEN_YELLOW = "#afff00" DARK_OLIVE_GREEN2 = "#afff5f" PALE_GREEN1 = "#afff87" DARK_SEA_GREEN2 = "#afffaf" PALE_TURQUOISE1 = "#afffff" RED3 = "#d70000" DEEP_PINK3 = "#d70087" MAGENTA3 = "#d700d7" DARK_ORANGE3 = "#d75f00" INDIAN_RED = "#d75f5f" HOT_PINK3 = "#d75f87" HOT_PINK2 = "#d75faf" ORCHID = "#d75fd7" ORANGE3 = "#d78700" LIGHT_SALMON3 = "#d7875f" LIGHT_PINK3 = "#d78787" PINK3 = "#d787af" PLUM3 = "#d787d7" VIOLET = "#d787ff" GOLD3 = "#d7af00" LIGHT_GOLDENROD3 = "#d7af5f" TAN = "#d7af87" MISTY_ROSE3 = "#d7afaf" THISTLE3 = "#d7afd7" PLUM2 = "#d7afff" YELLOW3 = "#d7d700" KHAKI3 = "#d7d75f" LIGHT_YELLOW3 = "#d7d7af" GREY84 = "#d7d7d7" LIGHT_STEEL_BLUE1 = "#d7d7ff" YELLOW2 = "#d7ff00" DARK_OLIVE_GREEN1 = "#d7ff87" DARK_SEA_GREEN1 = "#d7ffaf" HONEYDEW2 = "#d7ffd7" LIGHT_CYAN1 = "#d7ffff" RED1 = "#ff0000" DEEP_PINK2 = "#ff005f" DEEP_PINK1 = "#ff00af" MAGENTA2 = "#ff00d7" MAGENTA1 = "#ff00ff" ORANGE_RED1 = "#ff5f00" INDIAN_RED1 = "#ff5f87" HOT_PINK = "#ff5fd7" MEDIUM_ORCHID1 = "#ff5fff" DARK_ORANGE = "#ff8700" SALMON1 = "#ff875f" LIGHT_CORAL = "#ff8787" PALE_VIOLET_RED1 = "#ff87af" ORCHID2 = "#ff87d7" ORCHID1 = "#ff87ff" ORANGE1 = "#ffaf00" SANDY_BROWN = "#ffaf5f" LIGHT_SALMON1 = "#ffaf87" LIGHT_PINK1 = "#ffafaf" PINK1 = "#ffafd7" PLUM1 = "#ffafff" GOLD1 = "#ffd700" LIGHT_GOLDENROD2 = "#ffd787" NAVAJO_WHITE1 = "#ffd7af" MISTY_ROSE1 = "#ffd7d7" THISTLE1 = "#ffd7ff" YELLOW1 = "#ffff00" LIGHT_GOLDENROD1 = "#ffff5f" KHAKI1 = "#ffff87" WHEAT1 = "#ffffaf" CORNSILK1 = "#ffffd7" GREY100 = "#ffffff" GREY3 = "#080808" GREY7 = "#121212" GREY11 = "#1c1c1c" GREY15 = "#262626" GREY19 = "#303030" GREY23 = "#3a3a3a" GREY27 = "#444444" GREY30 = "#4e4e4e" GREY35 = "#585858" GREY39 = "#626262" GREY42 = "#6c6c6c" GREY46 = "#767676" GREY50 = "#808080" GREY54 = "#8a8a8a" GREY58 = "#949494" GREY62 = "#9e9e9e" GREY66 = "#a8a8a8" GREY70 = "#b2b2b2" GREY74 = "#bcbcbc" GREY78 = "#c6c6c6" GREY82 = "#d0d0d0" GREY85 = "#dadada" GREY89 = "#e4e4e4" GREY93 = "#eeeeee" @property def ansi(self) -> str: """Returns the ANSI escape code for the color.""" # Mapping from hex to its designated ANSI code mapping = { "#000000": "\033[30m", "#800000": "\033[31m", "#008000": "\033[32m", "#808000": "\033[33m", "#000080": "\033[34m", "#800080": "\033[35m", "#008080": "\033[36m", "#c0c0c0": "\033[37m", "#808080": "\033[90m", "#ff0000": "\033[91m", "#00ff00": "\033[92m", "#ffff00": "\033[93m", "#0000ff": "\033[94m", "#ff00ff": "\033[95m", "#00ffff": "\033[96m", "#ffffff": "\033[97m", "#00005f": "\033[38;5;17m", "#000087": "\033[38;5;18m", "#0000d7": "\033[38;5;20m", "#005f00": "\033[38;5;22m", "#005faf": "\033[38;5;25m", "#005fd7": "\033[38;5;26m", "#005fff": "\033[38;5;27m", "#008700": "\033[38;5;28m", "#00875f": "\033[38;5;29m", "#008787": "\033[38;5;30m", "#0087d7": "\033[38;5;32m", "#0087ff": "\033[38;5;33m", "#00af87": "\033[38;5;36m", "#00afaf": "\033[38;5;37m", "#00afd7": "\033[38;5;38m", "#00afff": "\033[38;5;39m", "#00d700": "\033[38;5;40m", "#00d75f": "\033[38;5;41m", "#00d7af": "\033[38;5;43m", "#00d7d7": "\033[38;5;44m", "#00d7ff": "\033[38;5;45m", "#00ff5f": "\033[38;5;47m", "#00ff87": "\033[38;5;48m", "#00ffaf": "\033[38;5;49m", "#00ffd7": "\033[38;5;50m", "#5f00af": "\033[38;5;55m", "#5f00d7": "\033[38;5;56m", "#5f00ff": "\033[38;5;57m", "#5f5f5f": "\033[38;5;59m", "#5f5f87": "\033[38;5;60m", "#5f5fd7": "\033[38;5;62m", "#5f5fff": "\033[38;5;63m", "#5f8700": "\033[38;5;64m", "#5f8787": "\033[38;5;66m", "#5f87af": "\033[38;5;67m", "#5f87d7": "\033[38;5;68m", "#5f87ff": "\033[38;5;69m", "#5faf5f": "\033[38;5;71m", "#5fafaf": "\033[38;5;73m", "#5fafd7": "\033[38;5;74m", "#5fd700": "\033[38;5;76m", "#5fd787": "\033[38;5;78m", "#5fd7af": "\033[38;5;79m", "#5fd7d7": "\033[38;5;80m", "#5fd7ff": "\033[38;5;81m", "#5fff5f": "\033[38;5;83m", "#5fffaf": "\033[38;5;85m", "#5fffff": "\033[38;5;87m", "#870000": "\033[38;5;88m", "#8700af": "\033[38;5;91m", "#875f00": "\033[38;5;94m", "#875f5f": "\033[38;5;95m", "#875f87": "\033[38;5;96m", "#875fd7": "\033[38;5;98m", "#875fff": "\033[38;5;99m", "#87875f": "\033[38;5;101m", "#878787": "\033[38;5;102m", "#8787af": "\033[38;5;103m", "#8787d7": "\033[38;5;104m", "#8787ff": "\033[38;5;105m", "#87af00": "\033[38;5;106m", "#87af87": "\033[38;5;108m", "#87afd7": "\033[38;5;110m", "#87afff": "\033[38;5;111m", "#87d700": "\033[38;5;112m", "#87d787": "\033[38;5;114m", "#87d7d7": "\033[38;5;116m", "#87d7ff": "\033[38;5;117m", "#87ff00": "\033[38;5;118m", "#87ff87": "\033[38;5;120m", "#87ffd7": "\033[38;5;122m", "#87ffff": "\033[38;5;123m", "#af005f": "\033[38;5;125m", "#af0087": "\033[38;5;126m", "#af00d7": "\033[38;5;128m", "#af00ff": "\033[38;5;129m", "#af5faf": "\033[38;5;133m", "#af5fd7": "\033[38;5;134m", "#af8700": "\033[38;5;136m", "#af8787": "\033[38;5;138m", "#af87af": "\033[38;5;139m", "#af87d7": "\033[38;5;140m", "#af87ff": "\033[38;5;141m", "#afaf5f": "\033[38;5;143m", "#afaf87": "\033[38;5;144m", "#afafaf": "\033[38;5;145m", "#afafd7": "\033[38;5;146m", "#afafff": "\033[38;5;147m", "#afd75f": "\033[38;5;149m", "#afd787": "\033[38;5;150m", "#afd7d7": "\033[38;5;152m", "#afd7ff": "\033[38;5;153m", "#afff00": "\033[38;5;154m", "#afff5f": "\033[38;5;155m", "#afff87": "\033[38;5;156m", "#afffaf": "\033[38;5;157m", "#afffff": "\033[38;5;159m", "#d70000": "\033[38;5;160m", "#d70087": "\033[38;5;162m", "#d700d7": "\033[38;5;164m", "#d75f00": "\033[38;5;166m", "#d75f5f": "\033[38;5;167m", "#d75f87": "\033[38;5;168m", "#d75faf": "\033[38;5;169m", "#d75fd7": "\033[38;5;170m", "#d78700": "\033[38;5;172m", "#d7875f": "\033[38;5;173m", "#d78787": "\033[38;5;174m", "#d787af": "\033[38;5;175m", "#d787d7": "\033[38;5;176m", "#d787ff": "\033[38;5;177m", "#d7af00": "\033[38;5;178m", "#d7af5f": "\033[38;5;179m", "#d7af87": "\033[38;5;180m", "#d7afaf": "\033[38;5;181m", "#d7afd7": "\033[38;5;182m", "#d7afff": "\033[38;5;183m", "#d7d700": "\033[38;5;184m", "#d7d75f": "\033[38;5;185m", "#d7d7af": "\033[38;5;187m", "#d7d7d7": "\033[38;5;188m", "#d7d7ff": "\033[38;5;189m", "#d7ff00": "\033[38;5;190m", "#d7ff87": "\033[38;5;192m", "#d7ffaf": "\033[38;5;193m", "#d7ffd7": "\033[38;5;194m", "#d7ffff": "\033[38;5;195m", "#ff005f": "\033[38;5;197m", "#ff00af": "\033[38;5;199m", "#ff00d7": "\033[38;5;200m", "#ff5f00": "\033[38;5;202m", "#ff5f87": "\033[38;5;204m", "#ff5fd7": "\033[38;5;206m", "#ff5fff": "\033[38;5;207m", "#ff8700": "\033[38;5;208m", "#ff875f": "\033[38;5;209m", "#ff8787": "\033[38;5;210m", "#ff87af": "\033[38;5;211m", "#ff87d7": "\033[38;5;212m", "#ff87ff": "\033[38;5;213m", "#ffaf00": "\033[38;5;214m", "#ffaf5f": "\033[38;5;215m", "#ffaf87": "\033[38;5;216m", "#ffafaf": "\033[38;5;217m", "#ffafd7": "\033[38;5;218m", "#ffafff": "\033[38;5;219m", "#ffd700": "\033[38;5;220m", "#ffd787": "\033[38;5;222m", "#ffd7af": "\033[38;5;223m", "#ffd7d7": "\033[38;5;224m", "#ffd7ff": "\033[38;5;225m", "#ffff5f": "\033[38;5;227m", "#ffff87": "\033[38;5;228m", "#ffffaf": "\033[38;5;229m", "#ffffd7": "\033[38;5;230m", "#080808": "\033[38;5;232m", "#121212": "\033[38;5;233m", "#1c1c1c": "\033[38;5;234m", "#262626": "\033[38;5;235m", "#303030": "\033[38;5;236m", "#3a3a3a": "\033[38;5;237m", "#444444": "\033[38;5;238m", "#4e4e4e": "\033[38;5;239m", "#585858": "\033[38;5;240m", "#626262": "\033[38;5;241m", "#6c6c6c": "\033[38;5;242m", "#767676": "\033[38;5;243m", "#8a8a8a": "\033[38;5;245m", "#949494": "\033[38;5;246m", "#9e9e9e": "\033[38;5;247m", "#a8a8a8": "\033[38;5;248m", "#b2b2b2": "\033[38;5;249m", "#bcbcbc": "\033[38;5;250m", "#c6c6c6": "\033[38;5;251m", "#d0d0d0": "\033[38;5;252m", "#dadada": "\033[38;5;253m", "#e4e4e4": "\033[38;5;254m", "#eeeeee": "\033[38;5;255m", } return mapping.get(self.value, "") @staticmethod def reset() -> str: return "\033[0m" if __name__ == "__main__": try: c = Color.DODGER_BLUE1 print(f"{c.name} ({c.value}): {c.ansi}Hello, Desert Thunder!{Color.reset()}") except AttributeError: print("DODGER_BLUE1 not found in Enum.") print(f"Total colors in Enum: {len(Color)}")