From 96c03ed3b165c5643ffb28b054b66204f8edaf9a Mon Sep 17 00:00:00 2001 From: Kristaps Kaupe Date: Fri, 4 Jun 2021 10:33:18 +0300 Subject: [PATCH] Disable coloured output if stdout is not a terminal --- jmbase/jmbase/support.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/jmbase/jmbase/support.py b/jmbase/jmbase/support.py index 611ff17..6efe998 100644 --- a/jmbase/jmbase/support.py +++ b/jmbase/jmbase/support.py @@ -77,7 +77,11 @@ DUST_THRESHOLD = 2730 class JoinMarketStreamHandler(ColorizingStreamHandler): def __init__(self): - super().__init__(colorizer=jm_colorizer, stream=sys.stdout) + if sys.stdout.isatty(): + super().__init__(colorizer=jm_colorizer, stream=sys.stdout) + else: + super().__init__(colorizer=MonochromaticColorizer, + stream=sys.stdout) def emit(self, record): if joinmarket_alert[0]: @@ -176,7 +180,11 @@ def jmprint(msg, level="info"): msg = msg.replace('}', '}}') fmtfn = eval(level) - print(jm_colorizer.colorize_message(fmtfn(msg))) + fmtd_msg = fmtfn(msg) + if sys.stdout.isatty(): + print(jm_colorizer.colorize_message(fmtd_msg)) + else: + print(fmtd_msg) def get_log(): """ @@ -189,7 +197,7 @@ def set_logging_level(level): handler.setLevel(level) def set_logging_color(colored=False): - if colored: + if colored and sys.stdout.isatty(): handler.colorizer = jm_colorizer else: handler.colorizer = MonochromaticColorizer()