Source code for bsb.reporting

import sys
import warnings


def in_notebook():
    try:
        from IPython import get_ipython

        if "IPKernelApp" not in get_ipython().config:  # pragma: no cover
            return False
    except ImportError:
        return False
    except AttributeError:
        return False
    return True


def in_pytest():
    return "pytest" in sys.modules


[docs] def report(*message, level=2, ongoing=False, nodes=None, all_nodes=False): """ Send a message to the appropriate output channel. :param message: Text message to send. :type message: str :param level: Verbosity level of the message. :type level: int :param ongoing: The message is part of an ongoing progress report. :type ongoing: bool """ from . import options from .services import MPI message = " ".join(map(str, message)) rank = MPI.get_rank() if ( (not rank and nodes is None) or all_nodes or (nodes is not None and rank in nodes) ) and options.verbosity >= level: print(message, end="\n" if not ongoing else "\r", flush=True)
[docs] def warn(message, category=None, stacklevel=2, log_exc=None): """ Send a warning. :param message: Warning message :type message: str :param category: The class of the warning. """ from . import options if log_exc: import traceback from .storage._util import cache log = f"{message}\n\n{traceback.format_exception(type(log_exc), log_exc, log_exc.__traceback__)}" id = cache.files.store(log) path = cache.files.id_to_file_path(id) message += f" See '{path}' for full error log." # Avoid infinite loop looking up verbosity when verbosity option is broken. if "Error retrieving option 'verbosity'" in message or options.verbosity > 0: warnings.warn(message, category, stacklevel=stacklevel)
__all__ = [ "report", "warn", ]