Add exit_metrics_logging/src/exit_metrics_logging/cli.py

This commit is contained in:
Mika 2026-02-26 12:52:57 +00:00
parent 3594381ea4
commit 3e8795ebe7

View file

@ -0,0 +1,41 @@
import argparse
import sys
from pathlib import Path
from exit_metrics_logging import core
def _build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description="CLI zur Protokollierung von Exit-Metriken für einen Run."
)
parser.add_argument("--run_id", required=True, type=str, help="Eindeutiger Run-Identifier.")
parser.add_argument("--warn_rate", required=True, type=float, help="Prozentualer Anteil an Warnungen.")
parser.add_argument("--unknown_rate", required=True, type=float, help="Prozentualer Anteil unbekannter Zustände.")
parser.add_argument("--delta_t", required=True, type=float, help="Gemessene Zeitdifferenz in Sekunden.")
return parser
def main() -> None:
parser = _build_parser()
args = parser.parse_args()
# Eingabevalidierung
if not args.run_id:
parser.error("--run_id darf nicht leer sein.")
for param_name in ("warn_rate", "unknown_rate", "delta_t"):
val = getattr(args, param_name)
if not isinstance(val, float):
parser.error(f"{param_name} muss ein Float sein.")
try:
core.log_metrics(
run_id=args.run_id,
warn_rate=args.warn_rate,
unknown_rate=args.unknown_rate,
delta_t=args.delta_t
)
except Exception as e:
print(f"Fehler bei der Protokollierung: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()