From da8875915e6564154b396d78ddec89146997e42f Mon Sep 17 00:00:00 2001 From: Alex Jones Date: Wed, 11 Feb 2026 19:23:47 +0000 Subject: [PATCH] feat: Add DVSim version to generated reports Add the version that was used to run DVSim to the generated block and summary reports, with a link to the tag of the relevant Github release for that version (only provided that the version can be found). Signed-off-by: Alex Jones --- src/dvsim/sim/data.py | 3 +++ src/dvsim/sim/flow.py | 8 ++++++++ src/dvsim/sim/report.py | 7 ++++--- src/dvsim/templates/reports/block_report.html | 6 ++++++ src/dvsim/templates/reports/summary_report.html | 7 +++++++ 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/dvsim/sim/data.py b/src/dvsim/sim/data.py index da6beef8..a71ce4b4 100644 --- a/src/dvsim/sim/data.py +++ b/src/dvsim/sim/data.py @@ -233,6 +233,9 @@ class SimResultsSummary(BaseModel): top: IPMeta """Meta data for the top level config.""" + version: str | None + """The version of DVSim being used, if applicable.""" + timestamp: datetime """Run time stamp.""" diff --git a/src/dvsim/sim/flow.py b/src/dvsim/sim/flow.py index c5fd3a06..be3802a6 100644 --- a/src/dvsim/sim/flow.py +++ b/src/dvsim/sim/flow.py @@ -9,6 +9,7 @@ from collections import OrderedDict, defaultdict from collections.abc import Mapping, Sequence from datetime import datetime, timezone +from importlib.metadata import PackageNotFoundError, version from pathlib import Path from typing import ClassVar @@ -638,6 +639,12 @@ def gen_results(self, results: Sequence[CompletedJobStatus]) -> None: .isoformat() ) + try: + dvsim_version = version("dvsim").strip() + except PackageNotFoundError as e: + log.debug("DVSim package not found: %s", str(e)) + dvsim_version = None + results_summary = SimResultsSummary( top=IPMeta( name=self.name, @@ -646,6 +653,7 @@ def gen_results(self, results: Sequence[CompletedJobStatus]) -> None: branch=self.branch, url=url, ), + version=dvsim_version, timestamp=timestamp, flow_results=all_flow_results, report_path=reports_dir, diff --git a/src/dvsim/sim/report.py b/src/dvsim/sim/report.py index 435f74db..016b2807 100644 --- a/src/dvsim/sim/report.py +++ b/src/dvsim/sim/report.py @@ -17,12 +17,13 @@ ) -def gen_block_report(results: SimFlowResults, path: Path) -> None: +def gen_block_report(results: SimFlowResults, path: Path, version: str | None = None) -> None: """Generate a block report. Args: results: flow results for the block path: output directory path + version: dvsim version used to get results for this block """ file_name = ( @@ -42,7 +43,7 @@ def gen_block_report(results: SimFlowResults, path: Path) -> None: (path / f"{file_name}.html").write_text( render_template( path="reports/block_report.html", - data={"results": results}, + data={"results": results, "version": version}, ), ) @@ -99,4 +100,4 @@ def gen_reports(summary: SimResultsSummary, path: Path) -> None: gen_summary_report(summary=summary, path=path) for flow_result in summary.flow_results.values(): - gen_block_report(results=flow_result, path=path) + gen_block_report(results=flow_result, path=path, version=summary.version) diff --git a/src/dvsim/templates/reports/block_report.html b/src/dvsim/templates/reports/block_report.html index bf1594c1..1f0933de 100644 --- a/src/dvsim/templates/reports/block_report.html +++ b/src/dvsim/templates/reports/block_report.html @@ -40,6 +40,12 @@

Simulation Results: {{ block.name }}

{{ timestamp.strftime("%d/%m/%Y %H:%M:%S") }} + {% if version %} + + DVSim: v{{ version }} + + {% endif %} sha: {{ block.commit[:7] }} diff --git a/src/dvsim/templates/reports/summary_report.html b/src/dvsim/templates/reports/summary_report.html index b484d255..64bf0c37 100644 --- a/src/dvsim/templates/reports/summary_report.html +++ b/src/dvsim/templates/reports/summary_report.html @@ -6,6 +6,7 @@ --> {% set top = summary.top %} {% set timestamp = summary.timestamp %} +{% set version = summary.version %}