Source code for imednet.cli.utils.context
"""CLI context and SDK initialization helpers."""
from __future__ import annotations
import sys
from collections.abc import Iterator
from contextlib import contextmanager
from imednet.config import load_config
from imednet.sdk import ImednetSDK
from .output import console
[docs]def get_sdk() -> ImednetSDK:
"""Initialize and return the SDK instance using :func:`load_config`."""
try:
config = load_config()
except ValueError:
print("Error: IMEDNET_API_KEY and IMEDNET_SECURITY_KEY environment variables must be set.")
sys.exit(1)
try:
return ImednetSDK(
api_key=config.api_key,
security_key=config.security_key,
base_url=config.base_url,
)
except Exception as exc: # pragma: no cover - defensive
print(f"Error initializing SDK: {exc}")
sys.exit(1)
[docs]@contextmanager
def fetching_status(name: str, study_key: str | None = None) -> Iterator[None]:
"""Context manager to show a spinner while fetching data."""
if study_key: # noqa: SIM108
msg = f"Fetching {name} for study '{study_key}'..."
else:
msg = f"Fetching {name}..."
with console.status(msg):
yield