""" Custom exception classes for YLFF with user-friendly error messages. """ from typing import Any, Dict, Optional class YLFFError(Exception): """Base exception for all YLFF errors.""" def __init__( self, message: str, details: Optional[Dict[str, Any]] = None, suggestion: Optional[str] = None, ): """ Args: message: Human-readable error message details: Additional error details (e.g., file paths, parameters) suggestion: Helpful suggestion for resolving the error """ self.message = message self.details = details or {} self.suggestion = suggestion super().__init__(self.message) def to_dict(self) -> Dict[str, Any]: """Convert exception to dictionary for API responses.""" result = { "error": self.__class__.__name__, "message": self.message, } if self.details: result["details"] = self.details if self.suggestion: result["suggestion"] = self.suggestion return result class ValidationError(YLFFError): """Error during validation process.""" class ModelLoadError(YLFFError): """Error loading or initializing ML model.""" class ConfigurationError(YLFFError): """Error in configuration or settings.""" class DataError(YLFFError): """Error with input data (missing files, invalid format, etc.).""" class ProcessingError(YLFFError): """Error during data processing or computation.""" class JobError(YLFFError): """Error with job execution or status.""" class ARKitError(YLFFError): """Error processing ARKit data.""" class BAError(YLFFError): """Error during Bundle Adjustment."""