chore: update ascii colors to work with dark mode (#152)

pull/154/head
Nicholas Larus-Stone 2 years ago committed by GitHub
parent ca4b10bb74
commit 0c3ae78ec1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -9,7 +9,7 @@ class Chain(BaseModel, ABC):
"""Base interface that all chains should implement."""
verbose: bool = False
"""Whether to print out the code that was executed."""
"""Whether to print out response text."""
@property
@abstractmethod

@ -1,14 +1,19 @@
"""Handle chained inputs."""
from typing import Dict, List, Optional
_COLOR_MAPPING = {"blue": 51, "yellow": 229, "pink": 219, "green": 85}
_TEXT_COLOR_MAPPING = {
"blue": "36;1",
"yellow": "33;1",
"pink": "38;5;200",
"green": "32;1",
}
def get_color_mapping(
items: List[str], excluded_colors: Optional[List] = None
) -> Dict[str, str]:
"""Get mapping for items to a support color."""
colors = list(_COLOR_MAPPING.keys())
colors = list(_TEXT_COLOR_MAPPING.keys())
if excluded_colors is not None:
colors = [c for c in colors if c not in excluded_colors]
color_mapping = {item: colors[i % len(colors)] for i, item in enumerate(items)}
@ -20,8 +25,8 @@ def print_text(text: str, color: Optional[str] = None, end: str = "") -> None:
if color is None:
print(text, end=end)
else:
color_str = _COLOR_MAPPING[color]
print(f"\u001b[48;5;{color_str}m{text}\x1b[0m", end=end)
color_str = _TEXT_COLOR_MAPPING[color]
print(f"\u001b[{color_str}m\033[1;3m{text}\u001b[0m", end=end)
class ChainedInput:
@ -29,14 +34,14 @@ class ChainedInput:
def __init__(self, text: str, verbose: bool = False):
"""Initialize with verbose flag and initial text."""
self.verbose = verbose
if self.verbose:
self._verbose = verbose
if self._verbose:
print_text(text, None)
self._input = text
def add(self, text: str, color: Optional[str] = None) -> None:
"""Add text to input, print if in verbose mode."""
if self.verbose:
if self._verbose:
print_text(text, color)
self._input += text

@ -48,7 +48,7 @@ def test_chained_input_verbose() -> None:
chained_input.add("baz", color="blue")
sys.stdout = old_stdout
output = mystdout.getvalue()
assert output == "\x1b[48;5;51mbaz\x1b[0m"
assert output == "\x1b[36;1m\x1b[1;3mbaz\x1b[0m"
assert chained_input.input == "foobarbaz"

Loading…
Cancel
Save