from __future__ import annotations
import logging
import logging.config
from pathlib import Path
import yaml
from typing_extensions import Literal
import smac
__copyright__ = "Copyright 2022, automl.org"
__license__ = "3-clause BSD"
[docs]
def setup_logging(
    level: int | Path | Literal[False] | None = False,
) -> None:
    """Sets up the logging configuration for all modules.
    Parameters
    ----------
    level : int | Path | Literal[False] | None, defaults to None
        An integer representing the logging level. An custom logging configuration can be used when passing a path.
        If False, no logging setup is performed.
    """
    if level is False:
        return
    if isinstance(level, Path):
        log_filename = level
    else:
        path = Path() / smac.__file__
        log_filename = path.parent / "logging.yml"
    with (log_filename).open("r") as stream:
        config = yaml.safe_load(stream)
    if isinstance(level, int):
        config["root"]["level"] = level
        config["handlers"]["console"]["level"] = level
    logging.config.dictConfig(config) 
[docs]
def get_logger(logger_name: str) -> logging.Logger:
    """Get the logger by name."""
    logger = logging.getLogger(logger_name)
    return logger