Source code for idmtools.utils.command_line

"""
utilities for command line.

Copyright 2021, Bill & Melinda Gates Foundation. All rights reserved.
"""
import contextlib
import logging
import sys

from io import StringIO
from itertools import cycle

animation = cycle(("|", "/", "-", "\\"))


[docs]@contextlib.contextmanager def suppress_output(stdout=True, stderr=True): """ Suppress any print/logging from a block of code. Args: stdout: If True, hide output from stdout; if False, show it. stderr: If True, hide output from stderr; if False, show it. """ # Remember existing output streams for restoration original_stdout = sys.stdout original_stderr = sys.stderr # Suppress requested channel output if stdout: sys.stdout = StringIO() if stderr: sys.stderr = StringIO() # Deactivate logging previous_level = logging.root.manager.disable logging.disable(logging.ERROR) yield # Restore original output streams sys.stdout = original_stdout sys.stderr = original_stderr logging.disable(previous_level)