from __future__ import annotations
import importlib
from functools import lru_cache
from types import ModuleType
class RustExtensionUnavailableError(ImportError):
pass
@lru_cache(maxsize=1)
def rust_module() -> ModuleType:
try:
return importlib.import_module("gamfit._rust")
except ImportError as exc: raise RustExtensionUnavailableError(
"gamfit._rust is not available. Build or install the package with maturin first."
) from exc
def extension_status() -> dict[str, object]:
try:
module = rust_module()
except RustExtensionUnavailableError as exc:
return {
"available": False,
"module": "gamfit._rust",
"reason": str(exc),
}
build_info = module.build_info()
return {
"available": True,
"module": "gamfit._rust",
**dict(build_info),
}