Skip to content

Exceptions

This section details the custom exception hierarchy used in envresolve.

envresolve.exceptions

Custom exceptions for envresolve.

EnvResolveError

Bases: Exception

Base exception for all envresolve errors.

Source code in src/envresolve/exceptions.py
class EnvResolveError(Exception):
    """Base exception for all envresolve errors."""

CircularReferenceError

Bases: EnvResolveError

Raised when a circular reference is detected in variable expansion.

Source code in src/envresolve/exceptions.py
class CircularReferenceError(EnvResolveError):
    """Raised when a circular reference is detected in variable expansion."""

    def __init__(self, variable_name: str, chain: list[str] | None = None) -> None:
        """Initialize CircularReferenceError.

        Args:
            variable_name: The variable that caused the circular reference
            chain: Optional list showing the reference chain
        """
        self.variable_name = variable_name
        self.chain = chain or []
        chain_str = " -> ".join(self.chain) if self.chain else variable_name
        msg = f"Circular reference detected: {chain_str}"
        super().__init__(msg)

__init__

__init__(
    variable_name: str, chain: list[str] | None = None
) -> None

Initialize CircularReferenceError.

Parameters:

Name Type Description Default
variable_name str

The variable that caused the circular reference

required
chain list[str] | None

Optional list showing the reference chain

None
Source code in src/envresolve/exceptions.py
def __init__(self, variable_name: str, chain: list[str] | None = None) -> None:
    """Initialize CircularReferenceError.

    Args:
        variable_name: The variable that caused the circular reference
        chain: Optional list showing the reference chain
    """
    self.variable_name = variable_name
    self.chain = chain or []
    chain_str = " -> ".join(self.chain) if self.chain else variable_name
    msg = f"Circular reference detected: {chain_str}"
    super().__init__(msg)

VariableNotFoundError

Bases: EnvResolveError

Raised when a referenced variable is not found in the environment.

Source code in src/envresolve/exceptions.py
class VariableNotFoundError(EnvResolveError):
    """Raised when a referenced variable is not found in the environment."""

    def __init__(self, variable_name: str) -> None:
        """Initialize VariableNotFoundError.

        Args:
            variable_name: The variable that was not found
        """
        self.variable_name = variable_name
        super().__init__(f"Variable not found: {variable_name}")

__init__

__init__(variable_name: str) -> None

Initialize VariableNotFoundError.

Parameters:

Name Type Description Default
variable_name str

The variable that was not found

required
Source code in src/envresolve/exceptions.py
def __init__(self, variable_name: str) -> None:
    """Initialize VariableNotFoundError.

    Args:
        variable_name: The variable that was not found
    """
    self.variable_name = variable_name
    super().__init__(f"Variable not found: {variable_name}")

URIParseError

Bases: EnvResolveError

Raised when a secret URI cannot be parsed.

Source code in src/envresolve/exceptions.py
class URIParseError(EnvResolveError):
    """Raised when a secret URI cannot be parsed."""

    def __init__(self, message: str, uri: str | None = None) -> None:
        """Initialize URIParseError.

        Args:
            message: Error message describing the parsing failure
            uri: The URI that failed to parse (optional)
        """
        self.uri = uri
        full_message = f"{message}: {uri}" if uri else message
        super().__init__(full_message)

__init__

__init__(message: str, uri: str | None = None) -> None

Initialize URIParseError.

Parameters:

Name Type Description Default
message str

Error message describing the parsing failure

required
uri str | None

The URI that failed to parse (optional)

None
Source code in src/envresolve/exceptions.py
def __init__(self, message: str, uri: str | None = None) -> None:
    """Initialize URIParseError.

    Args:
        message: Error message describing the parsing failure
        uri: The URI that failed to parse (optional)
    """
    self.uri = uri
    full_message = f"{message}: {uri}" if uri else message
    super().__init__(full_message)

SecretResolutionError

Bases: EnvResolveError

Raised when a secret cannot be resolved from its provider.

Source code in src/envresolve/exceptions.py
class SecretResolutionError(EnvResolveError):
    """Raised when a secret cannot be resolved from its provider."""

    def __init__(
        self, message: str, uri: str, original_error: Exception | None = None
    ) -> None:
        """Initialize SecretResolutionError.

        Args:
            message: Error message describing the resolution failure
            uri: The URI that failed to resolve
            original_error: The original exception that caused this error (optional)
        """
        self.uri = uri
        self.original_error = original_error
        full_message = f"{message}: {uri}"
        if original_error:
            full_message = f"{full_message} (caused by: {original_error})"
        super().__init__(full_message)

__init__

__init__(
    message: str,
    uri: str,
    original_error: Exception | None = None,
) -> None

Initialize SecretResolutionError.

Parameters:

Name Type Description Default
message str

Error message describing the resolution failure

required
uri str

The URI that failed to resolve

required
original_error Exception | None

The original exception that caused this error (optional)

None
Source code in src/envresolve/exceptions.py
def __init__(
    self, message: str, uri: str, original_error: Exception | None = None
) -> None:
    """Initialize SecretResolutionError.

    Args:
        message: Error message describing the resolution failure
        uri: The URI that failed to resolve
        original_error: The original exception that caused this error (optional)
    """
    self.uri = uri
    self.original_error = original_error
    full_message = f"{message}: {uri}"
    if original_error:
        full_message = f"{full_message} (caused by: {original_error})"
    super().__init__(full_message)

ProviderRegistrationError

Bases: EnvResolveError

Raised when a provider registration fails.

Source code in src/envresolve/exceptions.py
class ProviderRegistrationError(EnvResolveError):
    """Raised when a provider registration fails."""

    def __init__(self, message: str, original_error: Exception | None = None) -> None:
        """Initialize ProviderRegistrationError.

        Args:
            message: Error message describing the registration failure
            original_error: The original exception that caused this error (optional)
        """
        self.original_error = original_error
        super().__init__(message)

__init__

__init__(
    message: str, original_error: Exception | None = None
) -> None

Initialize ProviderRegistrationError.

Parameters:

Name Type Description Default
message str

Error message describing the registration failure

required
original_error Exception | None

The original exception that caused this error (optional)

None
Source code in src/envresolve/exceptions.py
def __init__(self, message: str, original_error: Exception | None = None) -> None:
    """Initialize ProviderRegistrationError.

    Args:
        message: Error message describing the registration failure
        original_error: The original exception that caused this error (optional)
    """
    self.original_error = original_error
    super().__init__(message)