"""Typed classification of one weekly model-provider attempt."""

from __future__ import annotations

from collections.abc import Mapping

from .nutrition_weekly_owner_model import JsonValue, WeeklyExplanationModel
from .nutrition_weekly_owner_request import WeeklyProviderOutcomeUnknown


def call_weekly_provider(
    model: WeeklyExplanationModel,
    request: Mapping[str, JsonValue],
) -> tuple[Mapping[str, JsonValue], bool, bool]:
    try:
        return model.generate(request), False, False
    except WeeklyProviderOutcomeUnknown:
        return {}, False, True
    except (OSError, TimeoutError, TypeError, ValueError):
        return {}, True, False
