Skip to content

Errors

provide.foundation.config.errors

TODO: Add module docstring.

Classes

ConfigError

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

Bases: FoundationError

Base configuration error.

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)

ParseError

ParseError(
    message: str,
    *,
    value: str | Any,
    field_name: str | None = None,
    expected_type: str | None = None,
    valid_options: list[str] | None = None,
    **kwargs: Any
)

Bases: ConfigError

Configuration value parsing failed.

Source code in provide/foundation/config/errors.py
def __init__(
    self,
    message: str,
    *,
    value: str | Any,
    field_name: str | None = None,
    expected_type: str | None = None,
    valid_options: list[str] | None = None,
    **kwargs: Any,
) -> None:
    super().__init__(
        message,
        value=value,
        field_name=field_name,
        expected_type=expected_type,
        valid_options=valid_options,
        **kwargs,
    )

ValidationError

ValidationError(
    message: str,
    *,
    value: Any,
    field_name: str,
    constraint: str | None = None,
    **kwargs: Any
)

Bases: ConfigError

Configuration value validation failed.

Source code in provide/foundation/config/errors.py
def __init__(
    self,
    message: str,
    *,
    value: Any,
    field_name: str,
    constraint: str | None = None,
    **kwargs: Any,
) -> None:
    super().__init__(
        message,
        value=value,
        field_name=field_name,
        constraint=constraint,
        **kwargs,
    )

Functions

format_invalid_value_error

format_invalid_value_error(
    field_name: str,
    value: Any,
    expected_type: str | None = None,
    valid_options: list[str] | None = None,
    additional_info: str | None = None,
) -> str

Create a standardized invalid value error message.

Parameters:

Name Type Description Default
field_name str

Name of the field being parsed

required
value Any

The invalid value

required
expected_type str | None

Expected type (e.g., "boolean", "float")

None
valid_options list[str] | None

List of valid option strings

None
additional_info str | None

Additional context about the error

None

Returns:

Type Description
str

Formatted error message

Examples:

>>> format_invalid_value_error("log_level", "INVALID", valid_options=["DEBUG", "INFO"])
"Invalid log_level 'INVALID'. Valid options: DEBUG, INFO"
>>> format_invalid_value_error("sample_rate", "abc", expected_type="float")
"Invalid sample_rate 'abc'. Expected: float"
Source code in provide/foundation/config/errors.py
def format_invalid_value_error(
    field_name: str,
    value: Any,
    expected_type: str | None = None,
    valid_options: list[str] | None = None,
    additional_info: str | None = None,
) -> str:
    """Create a standardized invalid value error message.

    Args:
        field_name: Name of the field being parsed
        value: The invalid value
        expected_type: Expected type (e.g., "boolean", "float")
        valid_options: List of valid option strings
        additional_info: Additional context about the error

    Returns:
        Formatted error message

    Examples:
        >>> format_invalid_value_error("log_level", "INVALID", valid_options=["DEBUG", "INFO"])
        "Invalid log_level 'INVALID'. Valid options: DEBUG, INFO"

        >>> format_invalid_value_error("sample_rate", "abc", expected_type="float")
        "Invalid sample_rate 'abc'. Expected: float"

    """
    parts = [f"Invalid {field_name} '{value}'."]

    if valid_options:
        parts.append(f"Valid options: {', '.join(valid_options)}")
    elif expected_type:
        parts.append(f"Expected: {expected_type}")

    if additional_info:
        parts.append(additional_info)

    return " ".join(parts)

format_validation_error

format_validation_error(
    field_name: str,
    value: Any,
    constraint: str,
    additional_info: str | None = None,
) -> str

Create a standardized validation error message.

Parameters:

Name Type Description Default
field_name str

Name of the field being validated

required
value Any

The invalid value

required
constraint str

Description of the constraint that failed

required
additional_info str | None

Additional context

None

Returns:

Type Description
str

Formatted error message

Examples:

>>> format_validation_error("port", 0, "must be between 1 and 65535")
"Value 0 for port must be between 1 and 65535"
>>> format_validation_error("sample_rate", 1.5, "must be between 0.0 and 1.0")
"Value 1.5 for sample_rate must be between 0.0 and 1.0"
Source code in provide/foundation/config/errors.py
def format_validation_error(
    field_name: str,
    value: Any,
    constraint: str,
    additional_info: str | None = None,
) -> str:
    """Create a standardized validation error message.

    Args:
        field_name: Name of the field being validated
        value: The invalid value
        constraint: Description of the constraint that failed
        additional_info: Additional context

    Returns:
        Formatted error message

    Examples:
        >>> format_validation_error("port", 0, "must be between 1 and 65535")
        "Value 0 for port must be between 1 and 65535"

        >>> format_validation_error("sample_rate", 1.5, "must be between 0.0 and 1.0")
        "Value 1.5 for sample_rate must be between 0.0 and 1.0"

    """
    parts = [f"Value {value} for {field_name} {constraint}"]

    if additional_info:
        parts.append(f"({additional_info})")

    return "".join(parts)