Smart outlets
[python_utils.git] / ansi.py
diff --git a/ansi.py b/ansi.py
index 769b29c46b21c705f8c8ad09906f9dd7239cfaa2..4c09db3df76c1c66561f097e6c48d48caa62156c 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
 
+import logging_utils
+
 logger = logging.getLogger(__name__)
 
 # https://en.wikipedia.org/wiki/ANSI_escape_code
@@ -1726,6 +1728,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 +1738,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 +1825,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(