Source code for communication.functions

"""
This module contains helper functions.
"""

import logging
import signal
from contextlib import contextmanager
from typing import Any, Iterator

from tno.mpc.communication.exceptions import OptionalImportError


[docs]def handle_sigterm(*_args: Any) -> None: r""" Sigterm handler: raise KeyboardInterrupt. :param \*_args: unused arguments, accept any arguments :raise KeyboardInterrupt: raises a keyboard interrupt """ raise KeyboardInterrupt()
[docs]def init(name: str, logger_level: int = logging.INFO) -> logging.Logger: """ Initialize logger and sigterm handler. :param name: name of the logger :param logger_level: the logging level to use :return: a logger instance """ signal.signal(signal.SIGTERM, handle_sigterm) logger = logging.getLogger(name) logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") logger.setLevel(logger_level) return logger
[docs]@contextmanager def redirect_importerror_to_optionalimporterror() -> Iterator[None]: """ Redirect ImportError to OptionalImportError. :raise OptionalImportError: Managed context raised ImportError :return: Pass control from within a try block """ try: yield except ImportError as e: # pylint: disable=invalid-name raise OptionalImportError from e