AffixIO's picture
Publish affix-huggingface 0.3.0
551b309 verified
Raw
History Blame Contribute Delete
2.77 kB
"""Exceptions raised by the AffixIO Hugging Face SDK."""
# Credit: @paparichens
from __future__ import annotations
from typing import Any
class AffixHuggingFaceError(Exception):
"""Base SDK error."""
class ConfigurationError(AffixHuggingFaceError):
"""Required credentials or configuration are missing."""
class AffixAPIError(AffixHuggingFaceError):
"""The AffixIO API returned an error response."""
def __init__(
self,
message: str,
*,
status_code: int,
code: str | None = None,
request_id: str | None = None,
body: dict[str, Any] | None = None,
) -> None:
super().__init__(message)
self.status_code = status_code
self.code = code
self.request_id = request_id
self.body = body or {}
class AdmissionDenied(AffixHuggingFaceError):
"""AffixIO refused the inference request before Hugging Face was called."""
def __init__(
self,
message: str,
*,
reason_code: str,
receipt_id: str | None = None,
request_id: str | None = None,
) -> None:
super().__init__(message)
self.reason_code = reason_code
self.receipt_id = receipt_id
self.request_id = request_id
UPGRADE_STEPS = (
"Your free allowance is used up. To continue with your own key:\n"
" 1. Register at https://hub.affix-io.com/ and request API access.\n"
" 2. Access is granted after review, not instantly.\n"
" 3. Once approved, create a key at https://hub.affix-io.com/credentials/\n"
" 4. Set AFFIX_API_KEY=aio_... and run again. Your key has no trial cap."
)
class TrialExhausted(AffixHuggingFaceError):
"""The server-side proof allowance for this subject has been used up."""
def __init__(
self,
message: str,
*,
limit: int,
used: int,
request_id: str | None = None,
) -> None:
super().__init__(f"{message}\n\n{UPGRADE_STEPS}")
self.limit = limit
self.used = used
self.remaining = 0
self.request_id = request_id
self.upgrade_url = "https://hub.affix-io.com/"
self.upgrade_steps = UPGRADE_STEPS
class RegistrationThrottled(AffixHuggingFaceError):
"""AffixIO refused to register another new subject from this origin today."""
class EvidenceError(AffixHuggingFaceError):
"""Inference completed, but completion evidence could not be issued."""
def __init__(self, message: str, *, output: Any, cause: Exception) -> None:
super().__init__(message)
self.output = output
self.__cause__ = cause
class StreamNotComplete(AffixHuggingFaceError):
"""A final stream receipt was requested before the stream finished."""