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