Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/haclient/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@

from __future__ import annotations

from importlib.metadata import PackageNotFoundError
from importlib.metadata import version as _pkg_version

from haclient.api import HAClient
from haclient.config import ConnectionConfig, ServicePolicy
from haclient.core.connection import Connection
Expand Down Expand Up @@ -67,4 +70,7 @@
"register_domain",
]

__version__ = "0.2.0"
try:
__version__ = _pkg_version("haclient")
except PackageNotFoundError: # pragma: no cover - only hit when package not installed
__version__ = "0.0.0+unknown"
26 changes: 26 additions & 0 deletions tests/test_packaging.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"""Packaging metadata tests.

Ensures the package version is single-sourced from installed metadata
(see issue #78).
"""

from __future__ import annotations

from importlib.metadata import version as pkg_version

import haclient


def test_version_matches_package_metadata() -> None:
"""``haclient.__version__`` must match installed package metadata.

This guards against the previous drift where ``pyproject.toml`` and
``haclient/__init__.py`` declared different versions.
"""
assert haclient.__version__ == pkg_version("haclient")


def test_version_is_non_empty_string() -> None:
"""``__version__`` must be a non-empty string."""
assert isinstance(haclient.__version__, str)
assert haclient.__version__
Loading