""" Markitect domain-specific exceptions. This module provides a hierarchy of exceptions for the Markitect markdown processing system. All exceptions preserve context and support proper exception chaining. """ from typing import Optional, Dict, Any class MarkitectError(Exception): """Base exception for all Markitect operations. Provides enhanced error context and proper exception chaining support. Args: message: Human-readable error description cause: Original exception that caused this error (for chaining) context: Additional context information as key-value pairs """ def __init__(self, message: str, cause: Optional[Exception] = None, context: Optional[Dict[str, Any]] = None): super().__init__(message) self.cause = cause self.context = context or {} # Automatically chain if cause is provided if cause: self.__cause__ = cause def __str__(self) -> str: """Enhanced string representation with context.""" base_message = super().__str__() if self.context: context_info = ", ".join(f"{k}={v}" for k, v in self.context.items()) base_message = f"{base_message} [Context: {context_info}]" return base_message class DocumentError(MarkitectError): """Errors related to document processing and management. Raised when: - Document parsing fails - Document structure is invalid - Document metadata is corrupt """ pass class ASTError(MarkitectError): """Errors related to Abstract Syntax Tree operations. Raised when: - AST parsing fails - AST structure is invalid - AST transformation fails """ pass class CacheError(MarkitectError): """Errors related to cache operations. Raised when: - Cache read/write operations fail - Cache corruption is detected - Cache invalidation fails """ pass class DatabaseError(MarkitectError): """Errors related to database operations. Raised when: - Database connection fails - Query execution fails - Data integrity violations occur """ pass class SchemaError(MarkitectError): """Errors related to schema validation and processing. Raised when: - Schema validation fails - Schema parsing errors occur - Schema generation fails """ pass class ValidationError(MarkitectError): """Errors related to document validation against schemas. Raised when: - Document doesn't match schema - Validation rules are violated - Required fields are missing """ pass class GraphQLError(MarkitectError): """Errors related to GraphQL operations. Raised when: - GraphQL query parsing fails - GraphQL execution errors occur - GraphQL schema issues are encountered """ pass class ConfigurationError(MarkitectError): """Errors related to configuration and setup. Raised when: - Configuration files are missing or invalid - Environment setup is incomplete - Required settings are not configured """ pass