← Files Public Equity InvestingARCHIVED FILE
skills/equity-model-update/scripts/materialize_model_update.py
1.73 KB · Oct 2, 2026 · 00:03 UTC
#!/usr/bin/env python3
from __future__ import annotations
import argparse
import sys
from datetime import datetime, timezone
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
from model_update_core import materialize, output_paths
from model_update_dates import parse_date
from model_update_io import write_run_log
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description="Materialize equity-model-update source-to-model artifacts from a supplied CSV."
)
parser.add_argument("input_csv", type=Path, help="CSV with source/model mapping rows.")
parser.add_argument("--out", type=Path, default=Path("output"), help="Output directory.")
parser.add_argument(
"--run-date",
default=datetime.now(timezone.utc).date().isoformat(),
help="Run date used by freshness checks, YYYY-MM-DD.",
)
parser.add_argument("--stale-days", type=int, default=45, help="Stale threshold in days.")
return parser
def main() -> int:
args = build_parser().parse_args()
run_date = parse_date(args.run_date)
if run_date is None:
print("ERROR: --run-date must be parseable as YYYY-MM-DD")
return 1
try:
return materialize(args.input_csv, args.out, run_date, args.stale_days)
except Exception as exc:
args.out.mkdir(parents=True, exist_ok=True)
write_run_log(
args.out / "run_log.json",
status="failed",
input_path=args.input_csv,
row_count=0,
outputs=output_paths(args.out),
warnings=[],
failures=[str(exc)],
)
print(f"ERROR: {exc}")
return 1
if __name__ == "__main__":
raise SystemExit(main())
SHA-256: fd516b7b298680bbe9b6557663aa19f3b8c5dbbbda33a8c62e86282e31d0e112