"""
Copyright © 2025 olafsson lab
"""
from __future__ import annotations
import sys
from importlib.metadata import PackageNotFoundError, version as package_version
from platform import python_version
_PACKAGE_CANDIDATES = ("spacr-nightly", "spacr")
[docs]
def get_version() -> str:
"""Return the installed spacr package version, or ``"unknown"`` if not found.
:returns: Version string from the first candidate distribution that resolves.
"""
for package_name in _PACKAGE_CANDIDATES:
try:
return package_version(package_name)
except PackageNotFoundError:
continue
return "unknown"
[docs]
def get_torch_version() -> str:
"""Return the installed PyTorch version, or ``"not available"`` if torch is missing.
:returns: ``torch.__version__`` when importable, otherwise a placeholder string.
"""
try:
import torch
return torch.__version__
except Exception:
return "not available"
[docs]
def get_version_info() -> dict[str, str]:
"""Return a dict of spacr, platform, Python, and torch version strings.
:returns: Mapping with keys ``spacr_version``, ``platform``, ``python_version``, ``torch_version``.
"""
return {
"spacr_version": get_version(),
"platform": sys.platform,
"python_version": python_version(),
"torch_version": get_torch_version(),
}
__version__ = get_version()
[docs]
version_str = format_version_info()