markitect-main/config/exceptions.py

73 lines
2 KiB
Python
Raw Normal View History

"""
Configuration-specific exceptions.
Provides a unified exception hierarchy for all configuration-related errors
across the MarkiTect project.
"""
from typing import Optional, Dict, Any
class ConfigurationError(Exception):
"""Base exception for configuration-related errors.
Provides enhanced error context and troubleshooting guidance.
Args:
message: Human-readable error description
field: Specific configuration field that caused the error
value: The invalid value (if applicable)
suggestion: Suggested fix for the error
context: Additional context information
"""
def __init__(self,
message: str,
field: Optional[str] = None,
value: Optional[Any] = None,
suggestion: Optional[str] = None,
context: Optional[Dict[str, Any]] = None):
super().__init__(message)
self.field = field
self.value = value
self.suggestion = suggestion
self.context = context or {}
def __str__(self) -> str:
"""Enhanced string representation with troubleshooting guidance."""
parts = [super().__str__()]
if self.field:
parts.append(f"Field: {self.field}")
if self.value is not None:
parts.append(f"Value: {self.value}")
if self.suggestion:
parts.append(f"Suggestion: {self.suggestion}")
return " | ".join(parts)
class ConfigValidationError(ConfigurationError):
"""Configuration validation specific errors.
Raised when configuration values fail validation checks.
"""
pass
class ConfigFileError(ConfigurationError):
"""Configuration file related errors.
Raised when configuration files cannot be read, parsed, or found.
"""
pass
class EnvironmentVariableError(ConfigurationError):
"""Environment variable related errors.
Raised when required environment variables are missing or invalid.
"""
pass