eyconf.validation.backends.interface.Validator¶
- class eyconf.validation.backends.interface.Validator(*args, **kwargs)¶
Protocol for pluggable validation backends supporting dataclass schemas.
Backends (e.g., JSONSchema, Pydantic) implement this to enable switching validation logic in Config classes. Ensures consistent API for schema generation, validation, instantiation, and instance checks.
Methods
__init__(*args, **kwargs)to_json_schema(schema)Generate JSON Schema from dataclass type.
validate(data, schema)Validate raw data against JSON Schema.
validate_and_construct(data, schema)Create validated dataclass instance from dictionary.
- __init__(*args, **kwargs)¶
- abstractmethod to_json_schema(schema: type[D]) dict[str, Any]¶
Generate JSON Schema from dataclass type.
- Parameters:
schema (type[D]) – Dataclass type to convert to JSON Schema.
- Returns:
JSON Schema dictionary compatible with draft-07+ specs.
- Return type:
JsonSchema
- Raises:
ValueError – If schema is invalid or unsupported by backend.
- abstractmethod validate(data: dict[str, Any] | D, schema: type[D]) None¶
Validate raw data against JSON Schema.
Converts dataclass instances to dicts internally if needed.
- Parameters:
- Raises:
ConfigurationError – If data fails validation rules.
MultiConfigurationError – If multiple validation errors occur.
Notes
Backends may implement custom error types but must be catchable by Config’s exception handling.
- abstractmethod validate_and_construct(data: D | dict[str, Any], schema: type[D]) D¶
Create validated dataclass instance from dictionary.
Validates data against derived JSON Schema before instantiation.
- Parameters:
- Returns:
New dataclass instance of type schema.
- Return type:
D
- Raises:
ConfigurationError – If data is invalid or incompatible with schema.
ValueError – If instantiation fails post-validation.
Examples
>>> schema = MyConfigDataclass >>> data = {"field1": "value", "field2": 42} >>> validator = JsonSchemaBackend() >>> instance = validator.from_dict(schema, data)