From e12ced7425d6afbda42d675f18ba872ade1aa595 Mon Sep 17 00:00:00 2001 From: shenxianpeng Date: Wed, 29 Jul 2026 23:15:26 +0300 Subject: [PATCH 1/2] fix: handle PackageNotFoundError when commit-check is not installed Wrap __version__ in try/except so that importing commit-check does not crash in development environments where the package has not been pip installed (e.g. running directly via uv or python -m). Falls back to '0.0.0.dev'. --- commit_check/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/commit_check/__init__.py b/commit_check/__init__.py index fb2cffbb..e3c59b11 100644 --- a/commit_check/__init__.py +++ b/commit_check/__init__.py @@ -6,7 +6,7 @@ __version__ (package version) """ -from importlib.metadata import version +from importlib.metadata import version, PackageNotFoundError # Exit codes used across the package PASS = 0 @@ -76,4 +76,7 @@ DEFAULT_AI_ATTRIBUTION = "ignore" # "ignore" | "forbid" -__version__ = version("commit-check") +try: + __version__ = version("commit-check") +except PackageNotFoundError: + __version__ = "0.0.0.dev" From 5b94a42fef8df817991667490f624a602112635b Mon Sep 17 00:00:00 2001 From: shenxianpeng Date: Wed, 29 Jul 2026 23:21:13 +0300 Subject: [PATCH 2/2] test: add tests for __version__ fallback on PackageNotFoundError --- tests/version_test.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tests/version_test.py diff --git a/tests/version_test.py b/tests/version_test.py new file mode 100644 index 00000000..8923d476 --- /dev/null +++ b/tests/version_test.py @@ -0,0 +1,28 @@ +"""Tests for commit_check.__version__.""" + +import importlib +import pytest +from unittest.mock import patch +from importlib.metadata import PackageNotFoundError +import commit_check + + +class TestVersion: + """Tests for __version__ resolution.""" + + @pytest.mark.benchmark + def test_version_is_string_when_installed(self): + """When the package is installed, __version__ must be a non-empty string.""" + assert isinstance(commit_check.__version__, str) + assert len(commit_check.__version__) > 0 + + @pytest.mark.benchmark + def test_version_fallback_when_not_installed(self): + """When PackageNotFoundError is raised, __version__ must fall back to '0.0.0.dev'.""" + with patch("importlib.metadata.version", side_effect=PackageNotFoundError): + importlib.reload(commit_check) + assert commit_check.__version__ == "0.0.0.dev" + + # Reload again to restore original version + importlib.reload(commit_check) + assert isinstance(commit_check.__version__, str)