Skip to content

confingy.exceptions#

exceptions #

ValidationError #

Bases: _BaseConfingyError

Raised when validation fails.

Source code in src/confingy/exceptions.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class ValidationError(_BaseConfingyError):
    """Raised when validation fails."""

    def __init__(
        self,
        error: PydanticValidationError,
        cls_name: str,
        config: Optional[dict] = None,
    ):
        self.error = error
        self.cls_name = cls_name
        self.config = config

        # Format a clear error message
        details = []
        for err in self.error.errors():
            loc = ".".join(str(loc_part) for loc_part in err.get("loc", []))
            msg = err.get("msg", "")
            input_value = err.get("input", "")

            if loc:
                details.append(f"  • Field '{loc}': {msg} (got {input_value!r})")
            else:
                details.append(f"  • {msg}")

        error_text = f"Validation failed for {cls_name}:\n" + "\n".join(details)

        # Add config information if available for debugging
        if config:
            config_str = "\n".join(f"  {k}: {v!r}" for k, v in config.items())
            error_text += f"\n\nProvided configuration:\n{config_str}"

        self.message = error_text
        super().__init__(self.message)

SerializationError #

Bases: _BaseConfingyError

Raised when serialization fails.

Source code in src/confingy/exceptions.py
48
49
50
51
class SerializationError(_BaseConfingyError):
    """Raised when serialization fails."""

    pass

DeserializationError #

Bases: _BaseConfingyError

Raised when deserialization fails.

Source code in src/confingy/exceptions.py
54
55
56
57
class DeserializationError(_BaseConfingyError):
    """Raised when deserialization fails."""

    pass