mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-06-18 07:19:35 +00:00
39 lines
982 B
Python
39 lines
982 B
Python
"""Provider base types — shared dataclasses + helpers."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
from dataclasses import dataclass, field
|
|
from datetime import datetime, timezone
|
|
from typing import Any
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class ProviderUnavailable(RuntimeError):
|
|
"""Raised by a provider when its env vars or network call are unusable."""
|
|
|
|
|
|
@dataclass
|
|
class ProviderResult:
|
|
provider: str
|
|
status: str # ok | no_key | http_error | timeout | empty | unsupported
|
|
data: Any = None
|
|
error: str | None = None
|
|
fetched_at: str = field(
|
|
default_factory=lambda: datetime.now(timezone.utc).isoformat()
|
|
)
|
|
|
|
def to_dict(self) -> dict[str, Any]:
|
|
return {
|
|
"provider": self.provider,
|
|
"status": self.status,
|
|
"data": self.data,
|
|
"error": self.error,
|
|
"fetched_at": self.fetched_at,
|
|
}
|
|
|
|
|
|
def now_iso() -> str:
|
|
return datetime.now(timezone.utc).isoformat()
|