Files
undergrad-uh401/utils.py
2025-12-06 03:59:17 +00:00

62 lines
1.5 KiB
Python

import argparse
import logging
import os
logger = logging.getLogger("utils")
# Common Args
def get_common_args(prog: str):
# Setup Args
parser = argparse.ArgumentParser(prog=prog)
# Analysis settings
parser.add_argument(
"-D",
"--data-dir",
help="Directory for downloaded data",
default=os.environ.get("DATA_DIRECTORY", "data")
)
# Debug
parser.add_argument(
"-d",
"--debug",
default=False,
action="store_true",
help="Enable verbose logging",
)
return parser
# LOGGING
class Formatter(logging.Formatter):
grey = "\x1b[37m"
yellow = "\x1b[33m"
red = "\x1b[31m"
bold_red = "\x1b[1;31m"
reset = "\x1b[0m"
format = "%(asctime)s - %(name)-24s - %(levelname)-7s - %(message)s (%(filename)s:%(lineno)d)"
FORMATS = {
logging.DEBUG: logging.Formatter(grey + format + reset),
logging.INFO: logging.Formatter(format),
logging.WARNING: logging.Formatter(yellow + format + reset),
logging.ERROR: logging.Formatter(red + format + reset),
logging.CRITICAL: logging.Formatter(bold_red + format + reset),
}
def format(self, record):
return self.FORMATS.get(record.levelno).format(record)
def setup_logging(debug: bool = False):
ch = logging.StreamHandler()
ch.setFormatter(Formatter())
logging.basicConfig(
handlers=[ch],
level=logging.DEBUG if debug else logging.INFO,
)