From bb2ee026ae02a6262a00edbb108dfbebe5daf1d3 Mon Sep 17 00:00:00 2001 From: Praanesh Selvaraj Date: Sat, 7 Feb 2026 13:01:22 +0530 Subject: [PATCH 1/2] refactor(version): centralize Pacta version using package metadata --- pacta/__init__.py | 5 +++++ pacta/_version.py | 15 +++++++++++++++ pacta/cli/_engine_adapter.py | 3 ++- pacta/reporting/builder.py | 3 ++- tests/cli/test_check.py | 5 +++-- tests/cli/test_cli.py | 5 +++-- tests/reporting/test_github_renderer.py | 9 +++++---- 7 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 pacta/_version.py diff --git a/pacta/__init__.py b/pacta/__init__.py index e69de29..7a79044 100644 --- a/pacta/__init__.py +++ b/pacta/__init__.py @@ -0,0 +1,5 @@ +from ._version import _detect_version + +PACTA_VERSION = _detect_version() + +__all__ = ["PACTA_VERSION"] diff --git a/pacta/_version.py b/pacta/_version.py new file mode 100644 index 0000000..278a0b9 --- /dev/null +++ b/pacta/_version.py @@ -0,0 +1,15 @@ +from importlib.metadata import version +from importlib.metadata import PackageNotFoundError + + +def _detect_version() -> str: + """ + Detect pacta version. + + Falls back to a development placeholder if the package metadata + is not available. + """ + try: + return version("pacta") + except PackageNotFoundError: + return "0.0.0-dev" diff --git a/pacta/cli/_engine_adapter.py b/pacta/cli/_engine_adapter.py index 1702ad7..031e417 100644 --- a/pacta/cli/_engine_adapter.py +++ b/pacta/cli/_engine_adapter.py @@ -2,6 +2,7 @@ from pathlib import Path from typing import Any +from pacta import PACTA_VERSION from pacta.core.config import EngineConfig from pacta.core.engine import DefaultPactaEngine from pacta.reporting.builder import DefaultReportBuilder @@ -95,7 +96,7 @@ def run_engine_scan( metadata={}, ) - builder = DefaultReportBuilder(tool="pacta", version=tool_version or "0.0.7") + builder = DefaultReportBuilder(tool="pacta", version=tool_version or PACTA_VERSION) if isinstance(res, Mapping): violations = res.get("violations", ()) diff --git a/pacta/reporting/builder.py b/pacta/reporting/builder.py index 11a6c46..e4576c3 100644 --- a/pacta/reporting/builder.py +++ b/pacta/reporting/builder.py @@ -6,6 +6,7 @@ from datetime import datetime, timezone from typing import Any +from pacta import PACTA_VERSION from pacta.reporting._extract import get_field from pacta.reporting.types import ( DiffSummary, @@ -71,7 +72,7 @@ class DefaultReportBuilder: - Summary counts """ - def __init__(self, *, tool: str = "pacta", version: str = "0.0.7") -> None: + def __init__(self, *, tool: str = "pacta", version: str = PACTA_VERSION) -> None: self._tool = tool self._version = version diff --git a/tests/cli/test_check.py b/tests/cli/test_check.py index 9988167..fd852f0 100644 --- a/tests/cli/test_check.py +++ b/tests/cli/test_check.py @@ -1,5 +1,6 @@ from unittest.mock import patch +from pacta import PACTA_VERSION from pacta.cli.main import main from pacta.core.engine import CheckResult from pacta.reporting.types import Report, RuleRef, RunInfo, Severity, Summary, Violation @@ -31,7 +32,7 @@ def _make_report(repo_root: str, violations=None, engine_errors=None) -> Report: return Report( tool="pacta", - version="0.0.7", + version=PACTA_VERSION, run=RunInfo( repo_root=repo_root, commit=None, @@ -41,7 +42,7 @@ def _make_report(repo_root: str, violations=None, engine_errors=None) -> Report: baseline_ref=None, mode="full", created_at=None, - tool_version="0.0.7", + tool_version=PACTA_VERSION, metadata={}, ), summary=Summary( diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index 3066d72..798298e 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -2,6 +2,7 @@ from unittest.mock import patch +from pacta import PACTA_VERSION from pacta.cli.main import main from pacta.reporting.types import EngineError, Report, RuleRef, RunInfo, Severity, Summary, Violation @@ -36,7 +37,7 @@ def create_test_report(repo_root, violations=None, engine_errors=None, **overrid return Report( tool="pacta", - version="0.0.7", + version=PACTA_VERSION, run=RunInfo( repo_root=str(repo_root), commit=None, @@ -46,7 +47,7 @@ def create_test_report(repo_root, violations=None, engine_errors=None, **overrid baseline_ref=overrides.get("baseline_ref"), mode=overrides.get("mode", "full"), created_at=None, - tool_version="0.0.7", + tool_version=PACTA_VERSION, metadata={}, ), summary=summary, diff --git a/tests/reporting/test_github_renderer.py b/tests/reporting/test_github_renderer.py index 72007d8..7a38dcc 100644 --- a/tests/reporting/test_github_renderer.py +++ b/tests/reporting/test_github_renderer.py @@ -1,3 +1,4 @@ +from pacta import PACTA_VERSION from pacta.reporting.renderers.github import GitHubReportRenderer from pacta.reporting.types import ( DiffSummary, @@ -23,7 +24,7 @@ def _make_run(**overrides): baseline_ref="baseline", mode="full", created_at="2025-01-22T12:00:00+00:00", - tool_version="0.0.7", + tool_version=PACTA_VERSION, metadata={}, ) defaults.update(overrides) @@ -71,7 +72,7 @@ def _make_report(*, violations=(), diff=None, trends=None, baseline_ref="baselin return Report( tool="pacta", - version="0.0.7", + version=PACTA_VERSION, run=_make_run(baseline_ref=baseline_ref), summary=Summary( total_violations=len(all_v), @@ -99,7 +100,7 @@ def test_header_includes_branch_and_commit(self): def test_no_branch_or_commit(self): report = Report( tool="pacta", - version="0.0.7", + version=PACTA_VERSION, run=_make_run(branch=None, commit=None, baseline_ref=None), summary=Summary(total_violations=0, by_severity={}, by_status={}, by_rule={}, engine_errors=0), violations=(), @@ -239,7 +240,7 @@ def test_footer_includes_version(self): report = _make_report() out = GitHubReportRenderer().render(report) assert "Pacta" in out - assert "v0.0.7" in out + assert PACTA_VERSION in out class TestGitHubRendererFullOutput: From 608ace861efda27b534c8fafffdcfe9207d07af1 Mon Sep 17 00:00:00 2001 From: Praanesh Selvaraj Date: Mon, 9 Feb 2026 20:55:46 +0530 Subject: [PATCH 2/2] style: apply lint fixes --- pacta/_version.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pacta/_version.py b/pacta/_version.py index 278a0b9..2f8ce26 100644 --- a/pacta/_version.py +++ b/pacta/_version.py @@ -1,5 +1,4 @@ -from importlib.metadata import version -from importlib.metadata import PackageNotFoundError +from importlib.metadata import PackageNotFoundError, version def _detect_version() -> str: