Fix a couple of bugs in executors. Use run_tests.sh as a pre commit
[python_utils.git] / ansi.py
diff --git a/ansi.py b/ansi.py
index dfbf48a0b0858c50cb2039ec14d169115a86599b..d30ae27e625dbe585d82d3392837b39bf436f888 100755 (executable)
--- a/ansi.py
+++ b/ansi.py
@@ -8,6 +8,8 @@ import re
 import sys
 from typing import Any, Callable, Dict, Iterable, Optional, Tuple
 
+from overrides import overrides
+
 import logging_utils
 
 logger = logging.getLogger(__name__)
@@ -1738,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(
@@ -1822,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(
@@ -1858,7 +1866,7 @@ class StdoutInterceptor(io.TextIOBase):
         self.buf = ''
 
     @abstractmethod
-    def write(self, s):
+    def write(self, s: str):
         pass
 
     def __enter__(self) -> None:
@@ -1877,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)