17db96d56Sopenharmony_ci"""
27db96d56Sopenharmony_ciLogging support for make_layout.
37db96d56Sopenharmony_ci"""
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ci__author__ = "Steve Dower <steve.dower@python.org>"
67db96d56Sopenharmony_ci__version__ = "3.8"
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ciimport logging
97db96d56Sopenharmony_ciimport sys
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci__all__ = []
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ciLOG = None
147db96d56Sopenharmony_ciHAS_ERROR = False
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_cidef public(f):
187db96d56Sopenharmony_ci    __all__.append(f.__name__)
197db96d56Sopenharmony_ci    return f
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ci@public
237db96d56Sopenharmony_cidef configure_logger(ns):
247db96d56Sopenharmony_ci    global LOG
257db96d56Sopenharmony_ci    if LOG:
267db96d56Sopenharmony_ci        return
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci    LOG = logging.getLogger("make_layout")
297db96d56Sopenharmony_ci    LOG.level = logging.DEBUG
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci    if ns.v:
327db96d56Sopenharmony_ci        s_level = max(logging.ERROR - ns.v * 10, logging.DEBUG)
337db96d56Sopenharmony_ci        f_level = max(logging.WARNING - ns.v * 10, logging.DEBUG)
347db96d56Sopenharmony_ci    else:
357db96d56Sopenharmony_ci        s_level = logging.ERROR
367db96d56Sopenharmony_ci        f_level = logging.INFO
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci    handler = logging.StreamHandler(sys.stdout)
397db96d56Sopenharmony_ci    handler.setFormatter(logging.Formatter("{levelname:8s} {message}", style="{"))
407db96d56Sopenharmony_ci    handler.setLevel(s_level)
417db96d56Sopenharmony_ci    LOG.addHandler(handler)
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci    if ns.log:
447db96d56Sopenharmony_ci        handler = logging.FileHandler(ns.log, encoding="utf-8", delay=True)
457db96d56Sopenharmony_ci        handler.setFormatter(
467db96d56Sopenharmony_ci            logging.Formatter("[{asctime}]{levelname:8s}: {message}", style="{")
477db96d56Sopenharmony_ci        )
487db96d56Sopenharmony_ci        handler.setLevel(f_level)
497db96d56Sopenharmony_ci        LOG.addHandler(handler)
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ciclass BraceMessage:
537db96d56Sopenharmony_ci    def __init__(self, fmt, *args, **kwargs):
547db96d56Sopenharmony_ci        self.fmt = fmt
557db96d56Sopenharmony_ci        self.args = args
567db96d56Sopenharmony_ci        self.kwargs = kwargs
577db96d56Sopenharmony_ci
587db96d56Sopenharmony_ci    def __str__(self):
597db96d56Sopenharmony_ci        return self.fmt.format(*self.args, **self.kwargs)
607db96d56Sopenharmony_ci
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_ci@public
637db96d56Sopenharmony_cidef log_debug(msg, *args, **kwargs):
647db96d56Sopenharmony_ci    return LOG.debug(BraceMessage(msg, *args, **kwargs))
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ci
677db96d56Sopenharmony_ci@public
687db96d56Sopenharmony_cidef log_info(msg, *args, **kwargs):
697db96d56Sopenharmony_ci    return LOG.info(BraceMessage(msg, *args, **kwargs))
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci@public
737db96d56Sopenharmony_cidef log_warning(msg, *args, **kwargs):
747db96d56Sopenharmony_ci    return LOG.warning(BraceMessage(msg, *args, **kwargs))
757db96d56Sopenharmony_ci
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ci@public
787db96d56Sopenharmony_cidef log_error(msg, *args, **kwargs):
797db96d56Sopenharmony_ci    global HAS_ERROR
807db96d56Sopenharmony_ci    HAS_ERROR = True
817db96d56Sopenharmony_ci    return LOG.error(BraceMessage(msg, *args, **kwargs))
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ci@public
857db96d56Sopenharmony_cidef log_exception(msg, *args, **kwargs):
867db96d56Sopenharmony_ci    global HAS_ERROR
877db96d56Sopenharmony_ci    HAS_ERROR = True
887db96d56Sopenharmony_ci    return LOG.exception(BraceMessage(msg, *args, **kwargs))
897db96d56Sopenharmony_ci
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ci@public
927db96d56Sopenharmony_cidef error_was_logged():
937db96d56Sopenharmony_ci    return HAS_ERROR
94