summaryrefslogtreecommitdiffstats
path: root/Lib/_colorize.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/_colorize.py')
-rw-r--r--Lib/_colorize.py43
1 files changed, 42 insertions, 1 deletions
diff --git a/Lib/_colorize.py b/Lib/_colorize.py
index a39ff2c..5489548 100644
--- a/Lib/_colorize.py
+++ b/Lib/_colorize.py
@@ -7,7 +7,22 @@ COLORIZE = True
# types
if False:
- from typing import IO
+ from typing import IO, Literal
+
+ type ColorTag = Literal[
+ "PROMPT",
+ "KEYWORD",
+ "BUILTIN",
+ "COMMENT",
+ "STRING",
+ "NUMBER",
+ "OP",
+ "DEFINITION",
+ "SOFT_KEYWORD",
+ "RESET",
+ ]
+
+ theme: dict[ColorTag, str]
class ANSIColors:
@@ -23,6 +38,7 @@ class ANSIColors:
WHITE = "\x1b[37m" # more like LIGHT GRAY
YELLOW = "\x1b[33m"
+ BOLD = "\x1b[1m"
BOLD_BLACK = "\x1b[1;30m" # DARK GRAY
BOLD_BLUE = "\x1b[1;34m"
BOLD_CYAN = "\x1b[1;36m"
@@ -120,3 +136,28 @@ def can_colorize(*, file: IO[str] | IO[bytes] | None = None) -> bool:
return os.isatty(file.fileno())
except io.UnsupportedOperation:
return hasattr(file, "isatty") and file.isatty()
+
+
+def set_theme(t: dict[ColorTag, str] | None = None) -> None:
+ global theme
+
+ if t:
+ theme = t
+ return
+
+ colors = get_colors()
+ theme = {
+ "PROMPT": colors.BOLD_MAGENTA,
+ "KEYWORD": colors.BOLD_BLUE,
+ "BUILTIN": colors.CYAN,
+ "COMMENT": colors.RED,
+ "STRING": colors.GREEN,
+ "NUMBER": colors.YELLOW,
+ "OP": colors.RESET,
+ "DEFINITION": colors.BOLD,
+ "SOFT_KEYWORD": colors.BOLD_BLUE,
+ "RESET": colors.RESET,
+ }
+
+
+set_theme()