Source code for exasol.toolbox.util.workflows.exceptions

from collections.abc import Mapping
from pathlib import Path


[docs] class YamlError(Exception): """ Base exception for YAML errors. """ message_template = "An error occurred with file: {file_path}" def __init__(self, file_path: Path, **kwargs): self.file_path = file_path # Format the template defined in the subclass message = self.message_template.format(file_path=file_path, **kwargs) super().__init__(message)
[docs] class YamlOutputError(YamlError): """ Raised when the final workflow cannot be exported as a YAML file. This would likely indicate that one of the preceding transformation steps led to a format that is no longer able to be exported as a YAML file. """ message_template = "File {file_path} could not be output by ruamel-yaml."
[docs] class YamlParsingError(YamlError): """ Raised when the rendered template is not a valid YAML file, as it cannot be parsed by ruamel-yaml. """ message_template = ( "File {file_path} could not be parsed. Check for invalid YAML syntax." )
[docs] class TemplateRenderingError(YamlError): """ Raised when Jinja fails to modify the template. It may be that a Jinja variable was not defined, a brace was not closed, etc. """ message_template = ( "File {file_path} failed to render. Check for Jinja-related errors." )
[docs] class InvalidWorkflowPatcherYamlError(YamlError): """ Raised when the :class:`WorkflowPatcher` failed the validation constraints of :class:`WorkflowPatcherConfig`. """ message_template = "File '{file_path}' is malformed; it failed Pydantic validation."
[docs] class InvalidWorkflowPatcherEntryError(YamlError): """ Raised when the :class:`WorkflowPatcher` is used but one of the specified keys it listed does not exist in the relevant workflow template file. """ message_template = ( "In file '{file_path}', an entry '{entry}' does not exist in " "the workflow template. Please fix the entry." )
[docs] class YamlKeyError(Exception): """ Base exception for when a specified value cannot be found in a YAML. """ message_template = "An error occurred with job: '{job_name}'" def __init__(self, **kwargs): # Store all attributes dynamically (job_name, step_id, etc.) for key, value in kwargs.items(): setattr(self, key, value) self._data = kwargs # Format the template using the passed-in arguments super().__init__(self.message_template.format(**kwargs)) @property def entry(self) -> Mapping[str, str]: return self._data
[docs] class YamlJobValueError(YamlKeyError): """ Raised when a job cannot be found in a YAML file. """ message_template = "Job '{job_name}' could not be found"
[docs] class YamlStepIdValueError(YamlKeyError): """ Raised when a step_id associated with a specific job cannot be found in a YAML file. """ message_template = "Step_id '{step_id}' not found in job '{job_name}'"