Files
descarga_factura_transporte/pipeline_utils.py
T

38 lines
1.4 KiB
Python
Raw Normal View History

"""Utilidades compartidas por los módulos del pipeline."""
import os
import logging
import tomllib
logger = logging.getLogger("pipeline")
def ruta_carpeta(subcarpeta: str) -> str:
"""Retorna la ruta absoluta de ``subcarpeta`` relativa a la raíz del proyecto."""
return os.path.join(os.path.dirname(__file__), subcarpeta)
def log(msg: str, level: int = 1, last: bool = False, severity: int = logging.INFO) -> None:
"""
Registra ``msg`` con la indentación de árbol usada en el log del pipeline.
Args:
msg: Mensaje a registrar.
level: Nivel de indentación del árbol (1-4).
last: True si es el último hijo de su rama (``└──`` en vez de ``├──``).
severity: Nivel de ``logging`` (``logging.WARNING``, ``logging.ERROR``…).
Por defecto ``logging.INFO``.
"""
branch = " └── " if last else " ├── "
pfx = {1: branch, 2: f" │ {branch}", 3: f" │ │ {branch}", 4: f" │ │ │ {branch}"}.get(level, branch)
logger.log(severity, f"{pfx}{msg}")
def version_del_proyecto() -> str:
"""Versión de ``pyproject.toml`` (por ejemplo ``1.2.0``), o ``desconocida`` si no se puede leer."""
try:
with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "pyproject.toml"), "rb") as f:
return tomllib.load(f)["project"]["version"]
except (OSError, KeyError, tomllib.TOMLDecodeError):
return "desconocida"