Skip to content

exceptions

pyvider.hcl.exceptions

TODO: Add module docstring.

Classes

HclError

HclError(
    message: str,
    *,
    code: str | None = None,
    context: dict[str, Any] | None = None,
    cause: Exception | None = None,
    **extra_context: Any
)

Bases: FoundationError

Base class for errors related to HCL processing in Pyvider.

Source code in provide/foundation/errors/base.py
def __init__(
    self,
    message: str,
    *,
    code: str | None = None,
    context: dict[str, Any] | None = None,
    cause: Exception | None = None,
    **extra_context: Any,
) -> None:
    self.message = message
    self.code = code or self._default_code()
    self.context = context or {}
    self.context.update(extra_context)
    self.cause = cause
    if cause:
        self.__cause__ = cause
    super().__init__(message)

HclParsingError

HclParsingError(
    message: str,
    *,
    code: str | None = None,
    context: dict[str, Any] | None = None,
    cause: Exception | None = None,
    **extra_context: Any
)

Bases: HclError

Raised when HCL parsing or schema validation fails.

This is an attrs-based exception class for structured error reporting.

Source code in provide/foundation/errors/base.py
def __init__(
    self,
    message: str,
    *,
    code: str | None = None,
    context: dict[str, Any] | None = None,
    cause: Exception | None = None,
    **extra_context: Any,
) -> None:
    self.message = message
    self.code = code or self._default_code()
    self.context = context or {}
    self.context.update(extra_context)
    self.cause = cause
    if cause:
        self.__cause__ = cause
    super().__init__(message)
Functions
__str__
__str__() -> str

Provides a detailed error message including source location if available.

Source code in pyvider/hcl/exceptions.py
def __str__(self) -> str:
    """Provides a detailed error message including source location if available."""
    if self.source_file and self.line is not None and self.column is not None:
        return f"{self.message} (at {self.source_file}, line {self.line}, column {self.column})"
    elif self.source_file and self.line is not None:
        return f"{self.message} (at {self.source_file}, line {self.line})"
    elif self.source_file:
        return f"{self.message} (at {self.source_file})"
    return self.message