Files
config-converter-cli/configconverter/exceptions.py

72 lines
1.7 KiB
Python

"""Custom exceptions for config-converter-cli."""
from typing import Any, Optional
class ConfigConverterError(Exception):
"""Base exception for config converter errors."""
def __init__(self, message: str, details: Optional[dict] = None):
super().__init__(message)
self.message = message
self.details = details or {}
class ParseError(ConfigConverterError):
"""Raised when parsing fails due to invalid syntax."""
def __init__(
self,
message: str,
line_number: Optional[int] = None,
column: Optional[int] = None,
context: Optional[str] = None,
):
details = {}
if line_number is not None:
details["line_number"] = line_number
if column is not None:
details["column"] = column
if context is not None:
details["context"] = context
super().__init__(message, details)
self.line_number = line_number
self.column = column
self.context = context
class InvalidFormatError(ConfigConverterError):
"""Raised when the input format cannot be determined or is unsupported."""
pass
class UnsupportedConversionError(ConfigConverterError):
"""Raised when a conversion direction is not supported."""
pass
class FileNotFoundError(ConfigConverterError):
"""Raised when a file cannot be found."""
pass
class QueryError(ConfigConverterError):
"""Raised when a JMESPath query fails."""
pass
class ValidationError(ConfigConverterError):
"""Raised when validation fails."""
pass
class IndentationError(ConfigConverterError):
"""Raised when indentation is invalid."""
pass