← Files Public Equity InvestingARCHIVED FILE
skills/public-equity-investing/internal-support/dashboard-builder/scripts/render_dashboard.py
1.82 KB · Oct 2, 2026 · 00:03 UTC
#!/usr/bin/env python3
"""Render a standalone Public Equity Investing dashboard HTML file."""
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
PLUGIN_ROOT = Path(__file__).resolve().parents[5]
sys.path.insert(0, str(PLUGIN_ROOT))
from shared.dashboard.qa import load_payload, validate_payload # noqa: E402
from shared.dashboard.renderer import render_dashboard # noqa: E402
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("payload", help="Path to dashboard payload JSON.")
parser.add_argument("output", help="Path to write standalone HTML.")
parser.add_argument(
"--profile",
choices=["draft", "production"],
default="production",
help="Validation profile. Rendering defaults to production because HTML is the user-facing artifact.",
)
parser.add_argument("--qa-json", help="Optional path to write validation report JSON.")
args = parser.parse_args()
payload = load_payload(args.payload)
report = validate_payload(payload, profile=args.profile)
if args.qa_json:
qa_path = Path(args.qa_json)
qa_path.parent.mkdir(parents=True, exist_ok=True)
qa_path.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8")
if report["hard_failures"]:
for failure in report["hard_failures"]:
print(f"failure: {failure}", file=sys.stderr)
return 1
html = render_dashboard(payload, validate=False)
output_path = Path(args.output)
output_path.parent.mkdir(parents=True, exist_ok=True)
output_path.write_text(html, encoding="utf-8")
for warning in report["warnings"]:
print(f"warning: {warning}", file=sys.stderr)
print(str(output_path))
return 0
if __name__ == "__main__":
raise SystemExit(main())
SHA-256: 7bd054f48b05fa6d2126280395b1549048b09c34966f4b0b04c7a1d556392e28