Skip to content

Commit a85b9f2

Browse files
committed
Add version resolution logic to package API
1 parent 10f8e5f commit a85b9f2

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

src/refua_data/__init__.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,38 @@
11
"""refua-data package API."""
22

3+
from importlib.metadata import version as _distribution_version
4+
from pathlib import Path
5+
import tomllib
6+
37
from .cache import CacheBackend, DataCache
48
from .catalog import DatasetCatalog, get_default_catalog
59
from .models import ApiDatasetConfig, DatasetDefinition, FetchResult, MaterializeResult
610
from .pipeline import DatasetManager
711
from .validation import SourceValidationResult
812

13+
14+
def _read_version_from_pyproject() -> str | None:
15+
pyproject_path = Path(__file__).resolve().parents[2] / "pyproject.toml"
16+
if not pyproject_path.exists():
17+
return None
18+
19+
data = tomllib.loads(pyproject_path.read_text(encoding="utf-8"))
20+
project = data.get("project", {})
21+
version = project.get("version")
22+
if not version:
23+
return None
24+
return str(version)
25+
26+
27+
def _resolve_version() -> str:
28+
local_version = _read_version_from_pyproject()
29+
if local_version is not None:
30+
return local_version
31+
return _distribution_version("refua-data")
32+
33+
34+
__version__ = _resolve_version()
35+
936
__all__ = [
1037
"ApiDatasetConfig",
1138
"CacheBackend",
@@ -16,5 +43,6 @@
1643
"FetchResult",
1744
"MaterializeResult",
1845
"SourceValidationResult",
46+
"__version__",
1947
"get_default_catalog",
2048
]

0 commit comments

Comments
 (0)