Skip to content

Commit f2d35c4

Browse files
authored
Merge pull request #38 from PraaneshSelvaraj/refactor/centralize-version-source
2 parents 04bb0c3 + 608ace8 commit f2d35c4

7 files changed

Lines changed: 34 additions & 10 deletions

File tree

pacta/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from ._version import _detect_version
2+
3+
PACTA_VERSION = _detect_version()
4+
5+
__all__ = ["PACTA_VERSION"]

pacta/_version.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from importlib.metadata import PackageNotFoundError, version
2+
3+
4+
def _detect_version() -> str:
5+
"""
6+
Detect pacta version.
7+
8+
Falls back to a development placeholder if the package metadata
9+
is not available.
10+
"""
11+
try:
12+
return version("pacta")
13+
except PackageNotFoundError:
14+
return "0.0.0-dev"

pacta/cli/_engine_adapter.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from pathlib import Path
33
from typing import Any
44

5+
from pacta import PACTA_VERSION
56
from pacta.core.config import EngineConfig
67
from pacta.core.engine import DefaultPactaEngine
78
from pacta.reporting.builder import DefaultReportBuilder
@@ -95,7 +96,7 @@ def run_engine_scan(
9596
metadata={},
9697
)
9798

98-
builder = DefaultReportBuilder(tool="pacta", version=tool_version or "0.0.7")
99+
builder = DefaultReportBuilder(tool="pacta", version=tool_version or PACTA_VERSION)
99100

100101
if isinstance(res, Mapping):
101102
violations = res.get("violations", ())

pacta/reporting/builder.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from datetime import datetime, timezone
77
from typing import Any
88

9+
from pacta import PACTA_VERSION
910
from pacta.reporting._extract import get_field
1011
from pacta.reporting.types import (
1112
DiffSummary,
@@ -71,7 +72,7 @@ class DefaultReportBuilder:
7172
- Summary counts
7273
"""
7374

74-
def __init__(self, *, tool: str = "pacta", version: str = "0.0.7") -> None:
75+
def __init__(self, *, tool: str = "pacta", version: str = PACTA_VERSION) -> None:
7576
self._tool = tool
7677
self._version = version
7778

tests/cli/test_check.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from unittest.mock import patch
22

3+
from pacta import PACTA_VERSION
34
from pacta.cli.main import main
45
from pacta.core.engine import CheckResult
56
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:
3132

3233
return Report(
3334
tool="pacta",
34-
version="0.0.7",
35+
version=PACTA_VERSION,
3536
run=RunInfo(
3637
repo_root=repo_root,
3738
commit=None,
@@ -41,7 +42,7 @@ def _make_report(repo_root: str, violations=None, engine_errors=None) -> Report:
4142
baseline_ref=None,
4243
mode="full",
4344
created_at=None,
44-
tool_version="0.0.7",
45+
tool_version=PACTA_VERSION,
4546
metadata={},
4647
),
4748
summary=Summary(

tests/cli/test_cli.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from unittest.mock import patch
44

5+
from pacta import PACTA_VERSION
56
from pacta.cli.main import main
67
from pacta.reporting.types import EngineError, Report, RuleRef, RunInfo, Severity, Summary, Violation
78

@@ -36,7 +37,7 @@ def create_test_report(repo_root, violations=None, engine_errors=None, **overrid
3637

3738
return Report(
3839
tool="pacta",
39-
version="0.0.7",
40+
version=PACTA_VERSION,
4041
run=RunInfo(
4142
repo_root=str(repo_root),
4243
commit=None,
@@ -46,7 +47,7 @@ def create_test_report(repo_root, violations=None, engine_errors=None, **overrid
4647
baseline_ref=overrides.get("baseline_ref"),
4748
mode=overrides.get("mode", "full"),
4849
created_at=None,
49-
tool_version="0.0.7",
50+
tool_version=PACTA_VERSION,
5051
metadata={},
5152
),
5253
summary=summary,

tests/reporting/test_github_renderer.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from pacta import PACTA_VERSION
12
from pacta.reporting.renderers.github import GitHubReportRenderer
23
from pacta.reporting.types import (
34
DiffSummary,
@@ -23,7 +24,7 @@ def _make_run(**overrides):
2324
baseline_ref="baseline",
2425
mode="full",
2526
created_at="2025-01-22T12:00:00+00:00",
26-
tool_version="0.0.7",
27+
tool_version=PACTA_VERSION,
2728
metadata={},
2829
)
2930
defaults.update(overrides)
@@ -71,7 +72,7 @@ def _make_report(*, violations=(), diff=None, trends=None, baseline_ref="baselin
7172

7273
return Report(
7374
tool="pacta",
74-
version="0.0.7",
75+
version=PACTA_VERSION,
7576
run=_make_run(baseline_ref=baseline_ref),
7677
summary=Summary(
7778
total_violations=len(all_v),
@@ -99,7 +100,7 @@ def test_header_includes_branch_and_commit(self):
99100
def test_no_branch_or_commit(self):
100101
report = Report(
101102
tool="pacta",
102-
version="0.0.7",
103+
version=PACTA_VERSION,
103104
run=_make_run(branch=None, commit=None, baseline_ref=None),
104105
summary=Summary(total_violations=0, by_severity={}, by_status={}, by_rule={}, engine_errors=0),
105106
violations=(),
@@ -239,7 +240,7 @@ def test_footer_includes_version(self):
239240
report = _make_report()
240241
out = GitHubReportRenderer().render(report)
241242
assert "Pacta" in out
242-
assert "v0.0.7" in out
243+
assert PACTA_VERSION in out
243244

244245

245246
class TestGitHubRendererFullOutput:

0 commit comments

Comments
 (0)