X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=ansi.py;h=d30ae27e625dbe585d82d3392837b39bf436f888;hb=eb9e6df32ed696158bf34dba6464277b648f5c74;hp=769b29c46b21c705f8c8ad09906f9dd7239cfaa2;hpb=4faa994d32223c8d560d9dad0ca90a3f7eb10d6a;p=python_utils.git diff --git a/ansi.py b/ansi.py index 769b29c..d30ae27 100755 --- a/ansi.py +++ b/ansi.py @@ -8,6 +8,10 @@ import re import sys from typing import Any, Callable, Dict, Iterable, Optional, Tuple +from overrides import overrides + +import logging_utils + logger = logging.getLogger(__name__) # https://en.wikipedia.org/wiki/ANSI_escape_code @@ -1726,6 +1730,7 @@ def _find_color_by_name(name: str) -> Tuple[int, int, int]: return rgb +@logging_utils.squelch_repeated_log_messages(1) def fg(name: Optional[str] = "", red: Optional[int] = None, green: Optional[int] = None, @@ -1735,6 +1740,9 @@ def fg(name: Optional[str] = "", force_216color: bool = False) -> str: import string_utils + if name is not None and name == 'reset': + return '\033[39m' + if name is not None and string_utils.is_full_string(name): rgb = _find_color_by_name(name) return fg( @@ -1819,6 +1827,9 @@ def bg(name: Optional[str] = "", force_216color: bool = False) -> str: import string_utils + if name is not None and name == 'reset': + return '\033[49m' + if name is not None and string_utils.is_full_string(name): rgb = _find_color_by_name(name) return bg( @@ -1855,7 +1866,7 @@ class StdoutInterceptor(io.TextIOBase): self.buf = '' @abstractmethod - def write(self, s): + def write(self, s: str): pass def __enter__(self) -> None: @@ -1874,6 +1885,7 @@ class ProgrammableColorizer(StdoutInterceptor): super().__init__() self.patterns = [_ for _ in patterns] + @overrides def write(self, s: str): for pattern in self.patterns: s = pattern[0].sub(pattern[1], s)