Source code for imednet.cli.utils.context

from __future__ import annotations

from contextlib import contextmanager
from typing import Iterator

import typer
from rich import print
from rich.markup import escape

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( "[bold red]Error:[/bold red] IMEDNET_API_KEY and " "IMEDNET_SECURITY_KEY environment variables must be set." ) raise typer.Exit(code=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"[bold red]Error initializing SDK:[/bold red] {escape(str(exc))}") raise typer.Exit(code=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: msg = f"Fetching {escape(name)} for study '{escape(study_key)}'..." else: msg = f"Fetching {escape(name)}..." with console.status(f"[bold blue]{msg}[/bold blue]", spinner="dots"): yield