MultiModal-Coherence-AI / src /exceptions.py
pratik-250620's picture
Upload folder using huggingface_hub
6835659 verified
"""
Custom exception hierarchy for MultiModal Coherence AI.
Provides structured error types so callers can distinguish between
retrieval failures, generation failures, and validation errors
instead of catching bare Exception everywhere.
"""
class MultiModalError(Exception):
"""Base exception for all project-specific errors."""
class RetrievalError(MultiModalError):
"""Raised when image or audio retrieval fails.
Attributes:
query: The query text that failed retrieval.
modality: 'image' or 'audio'.
best_similarity: The best similarity score found (if any).
"""
def __init__(self, message: str, *, query: str = "", modality: str = "", best_similarity: float | None = None):
super().__init__(message)
self.query = query
self.modality = modality
self.best_similarity = best_similarity
class GenerationError(MultiModalError):
"""Raised when text, image, or audio generation fails.
Attributes:
modality: 'text', 'image', or 'audio'.
backend: The backend that failed (e.g., 'ollama', 'audioldm', 'fallback_ambient').
"""
def __init__(self, message: str, *, modality: str = "", backend: str = ""):
super().__init__(message)
self.modality = modality
self.backend = backend
class ValidationError(MultiModalError):
"""Raised when input validation or conditioning checks fail.
Attributes:
field: The field or parameter that failed validation.
"""
def __init__(self, message: str, *, field: str = ""):
super().__init__(message)
self.field = field
class EmbeddingError(MultiModalError):
"""Raised when embedding computation fails.
Attributes:
modality: The modality that failed ('text', 'image', 'audio').
model: The model that failed (e.g., 'clip', 'clap').
"""
def __init__(self, message: str, *, modality: str = "", model: str = ""):
super().__init__(message)
self.modality = modality
self.model = model
class IndexError_(MultiModalError):
"""Raised when an embedding index is missing, empty, or corrupt."""
def __init__(self, message: str, *, index_path: str = ""):
super().__init__(message)
self.index_path = index_path
class PlanningError(MultiModalError):
"""Raised when the semantic planner fails to produce a valid plan."""