Add report generation timing stats

This commit is contained in:
Jordan Wages 2025-07-19 04:50:09 -05:00
commit 669b51e03c
3 changed files with 33 additions and 17 deletions

View file

@ -3,6 +3,8 @@ import sqlite3
from pathlib import Path
import shutil
from typing import List, Dict, Optional
from datetime import datetime
import time
import yaml
@ -74,7 +76,9 @@ def _render_snippet(report: Dict, out_dir: Path) -> None:
snippet_path.write_text(template.render(report=report))
def _write_stats() -> None:
def _write_stats(
generated_at: Optional[str] = None, generation_seconds: Optional[float] = None
) -> None:
"""Query basic dataset stats and write them to ``output/global/stats.json``."""
conn = sqlite3.connect(DB_PATH)
cur = conn.cursor()
@ -98,6 +102,10 @@ def _write_stats() -> None:
"end_date": end_date,
"unique_domains": unique_domains,
}
if generated_at:
stats["generated_at"] = generated_at
if generation_seconds is not None:
stats["generation_seconds"] = generation_seconds
out_path = OUTPUT_DIR / "global" / "stats.json"
_save_json(out_path, stats)
@ -197,14 +205,9 @@ def _generate_root_index() -> None:
"""Render the top-level index listing all intervals and domains."""
_copy_icons()
intervals = sorted(
[
name
for name in INTERVAL_FORMATS
if (OUTPUT_DIR / name).is_dir()
]
[name for name in INTERVAL_FORMATS if (OUTPUT_DIR / name).is_dir()]
)
domains_dir = OUTPUT_DIR / "domains"
domains: List[str] = []
if domains_dir.is_dir():
@ -227,6 +230,9 @@ def _generate_global() -> None:
typer.echo("No report definitions found")
return
start_time = time.time()
generated_at = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
_copy_icons()
conn = sqlite3.connect(DB_PATH)
@ -269,7 +275,8 @@ def _generate_global() -> None:
report_list.append(entry)
_save_json(out_dir / "reports.json", report_list)
_write_stats()
elapsed = round(time.time() - start_time, 2)
_write_stats(generated_at, elapsed)
typer.echo("Generated global reports")