""" Custom exception types for the Model Manager. This module defines domain-specific exceptions used across the training workflow to convey additional context (e.g., flags indicating which steps completed successfully) without altering control flow semantics. """ class ModelTrainingError(Exception): """ Exception raised when the model training workflow fails. This exception carries flags indicating whether the model was trained and/or saved successfully, enabling the workflow to map errors to appropriate experiment statuses. """ def __init__(self, model_trained: bool, model_saved: bool, message: str | None = None): """ Initialize ModelTrainingError with training state flags. Args: model_trained: True if the training step completed successfully. model_saved: True if the model saving step completed successfully. message: Optional custom error message. If None, a default message including the state flags is generated. """ self.model_trained = model_trained self.model_saved = model_saved if message is None: message = ( 'Model training workflow failed ' f'(model_trained={model_trained}, model_saved={model_saved})' ) super().__init__(message)