Multi-format report generation: DOCX, PDF, TXT, MD, CSV, HTML, JSON.
Each report contains:
1. Results section - computed constants, deviations, comparison tables
2. Execution log - complete timestamped log of all computations
All reports are saved as separate files in the output directory.
ReportWriter
ReportWriter(output_dir: str = 'output/reports', formats: list[str] | None = None)
Generate reports in 7 formats with execution logs appended.
Source code in src/reporting/report_writer.py
| def __init__(self, output_dir: str = "output/reports",
formats: list[str] | None = None):
self.output_dir = Path(output_dir)
self.output_dir.mkdir(parents=True, exist_ok=True)
self.formats = formats or ["docx", "pdf", "txt", "md", "csv", "html", "json"]
logger.info(f"ReportWriter: output={self.output_dir}, formats={self.formats}")
|
generate_all
generate_all(results: dict, logs: str, title: str = 'Choptyuk Spinor Corrections - Verification Report') -> dict[str, str]
Generate reports in all configured formats.
Source code in src/reporting/report_writer.py
| def generate_all(self, results: dict, logs: str,
title: str = "Choptyuk Spinor Corrections - Verification Report") -> dict[str, str]:
"""Generate reports in all configured formats."""
timestamp = datetime.now(tz=timezone.utc).strftime("%Y%m%d_%H%M%S")
paths = {}
for fmt in self.formats:
try:
if fmt == "json":
paths[fmt] = self._write_json(results, logs, timestamp)
elif fmt == "txt":
paths[fmt] = self._write_txt(results, logs, title, timestamp)
elif fmt == "md":
paths[fmt] = self._write_md(results, logs, title, timestamp)
elif fmt == "csv":
paths[fmt] = self._write_csv(results, logs, timestamp)
elif fmt == "html":
paths[fmt] = self._write_html(results, logs, title, timestamp)
elif fmt == "docx":
paths[fmt] = self._write_docx(results, logs, title, timestamp)
elif fmt == "pdf":
paths[fmt] = self._write_pdf(results, logs, title, timestamp)
else:
logger.warning(f"Unknown format: {fmt}")
except OSError as e:
logger.error(f"Failed to generate {fmt} report: {e}")
return paths
|