Logging, timing, and filesystem helpers.
ensure_dir
ensure_dir(path: str) -> str
Source code in halocat/utils.py
| def ensure_dir(path: str) -> str:
os.makedirs(path, exist_ok=True)
return path
|
get_logger
get_logger(name: str = 'halocat', level: int = logging.INFO, logfile: str | None = None) -> logging.Logger
Source code in halocat/utils.py
| def get_logger(name: str = "halocat", level: int = logging.INFO,
logfile: str | None = None) -> logging.Logger:
logger = logging.getLogger(name)
if logger.handlers:
return logger
logger.setLevel(level)
fmt = logging.Formatter(
"[%(asctime)s] %(levelname)s %(name)s: %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
sh = logging.StreamHandler()
sh.setFormatter(fmt)
logger.addHandler(sh)
if logfile is not None:
ensure_dir(os.path.dirname(logfile))
fh = logging.FileHandler(logfile)
fh.setFormatter(fmt)
logger.addHandler(fh)
return logger
|
timer
timer(label: str, logger: Logger | None = None)
Source code in halocat/utils.py
| @contextmanager
def timer(label: str, logger: logging.Logger | None = None):
t0 = time.perf_counter()
yield
dt = time.perf_counter() - t0
msg = f"{label}: {dt:.2f} s"
if logger is not None:
logger.info(msg)
else:
print(msg)
|