Source code for spaceKLIP.logging_tools

import logging
# Define logging
_log = logging.getLogger(__name__)
_log.setLevel(logging.INFO)

from contextlib import contextmanager

[docs] @contextmanager def crds_logging_disabled(highest_level=-3): """ A context manager that will prevent any logging messages triggered during the body from being processed. Usage to suppress levels up to Critical: >>> with crds_logging_disabled(-3): >>> do_something() Parameters ---------- highest_level : int For CRDS, logging levels are defined as: -3: CRITICAL -2: ERROR -1: WARNING 0: INFO 1: DEBUG """ from crds.core import log as crds_log previous_level = crds_log.get_verbose() crds_log.set_verbose(highest_level) try: yield finally: crds_log.set_verbose(previous_level)
[docs] @contextmanager def all_logging_disabled(highest_level=logging.CRITICAL): """ A context manager that will prevent any logging messages triggered during the body from being processed. Usage to suppress levels up to INFO: >>> with all_logging_disabled(logging.INFO): >>> do_something() Parameters ---------- highest_level : int The highest logging level that will be let through. Any logging messages at this level or above will be processed as normal. The default is CRITICAL, which will allow only CRITICAL messages through. """ previous_level = logging.root.manager.disable logging.disable(highest_level-1) try: yield finally: logging.disable(previous_level)
[docs] @contextmanager def suppress_stdout(): """Context manager to suppress stdout""" import sys, os prev_stdout = sys.stdout # backup current stdout sys.stdout = open(os.devnull, "w") try: with open(os.devnull, "w") as fh: sys.stdout = fh yield finally: sys.stdout = prev_stdout # reset old stdout