Source code for episia.core.exceptions

"""
This module defines custom exception classes for specific error
conditions in epidemiological analysis.
"""


[docs] class EpisiaError(Exception): """Base exception for all Episia errors."""
[docs] def __init__(self, message: str = "An error occurred in Episia"): self.message = message super().__init__(self.message)
[docs] class ValidationError(EpisiaError): """Raised when data validation fails."""
[docs] def __init__(self, message: str = "Data validation failed"): super().__init__(message)
[docs] class ConvergenceError(EpisiaError): """Raised when numerical algorithm fails to converge."""
[docs] def __init__(self, message: str = "Algorithm failed to converge"): super().__init__(message)
[docs] class ConfigurationError(EpisiaError): """Raised when configuration is invalid."""
[docs] def __init__(self, message: str = "Invalid configuration"): super().__init__(message)
[docs] class DataError(EpisiaError): """Raised when data is invalid or insufficient."""
[docs] def __init__(self, message: str = "Invalid or insufficient data"): super().__init__(message)
[docs] class ModelError(EpisiaError): """Raised when model fitting or evaluation fails."""
[docs] def __init__(self, message: str = "Model error occurred"): super().__init__(message)
[docs] class StatisticalError(EpisiaError): """Raised when statistical assumptions are violated."""
[docs] def __init__(self, message: str = "Statistical assumption violated"): super().__init__(message)
[docs] class DimensionError(EpisiaError): """Raised when array dimensions are incompatible."""
[docs] def __init__(self, message: str = "Dimension mismatch"): super().__init__(message)
[docs] class ParameterError(EpisiaError): """Raised when function parameters are invalid."""
[docs] def __init__(self, message: str = "Invalid parameter value"): super().__init__(message)
[docs] class ComputationError(EpisiaError): """Raised when numerical computation fails."""
[docs] def __init__(self, message: str = "Numerical computation failed"): super().__init__(message)
[docs] class FileError(EpisiaError): """Raised when file operations fail."""
[docs] def __init__(self, message: str = "File operation failed"): super().__init__(message)
[docs] class PlotError(EpisiaError): """Raised when plotting fails."""
[docs] def __init__(self, message: str = "Plotting failed"): super().__init__(message)
[docs] class WarningManager: """ Manager for warnings in Episia. Provides consistent warning formatting and filtering. """
[docs] @staticmethod def warn( message: str, warning_type: type = UserWarning, stacklevel: int = 2 ) -> None: """ Issue a warning with consistent formatting. Args: message: Warning message warning_type: Type of warning stacklevel: Stack level for warning origin """ import warnings warnings.warn(f"[Episia] {message}", warning_type, stacklevel)
[docs] @staticmethod def filter_warnings(action: str = "default") -> None: """ Set warning filters for Episia. Args: action: 'default', 'ignore', or 'error' """ import warnings if action == "ignore": warnings.filterwarnings("ignore", module="episia") elif action == "error": warnings.filterwarnings("error", module="episia") elif action == "default": # Default filters warnings.filterwarnings("once", category=DeprecationWarning, module="episia") warnings.filterwarnings("always", category=RuntimeWarning, module="episia")