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:
  • data (dict[str, Any] | D) – Input data to validate (dict or dataclass instance).

  • json_schema (JsonSchema) – Pre-generated JSON Schema from to_json_schema.

Raises:

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:
  • schema (type[D]) – Target dataclass type.

  • data (dict[str, Any]) – Dictionary data to populate instance.

Returns:

New dataclass instance of type schema.

Return type:

D

Raises:

Examples

>>> schema = MyConfigDataclass
>>> data = {"field1": "value", "field2": 42}
>>> validator = JsonSchemaBackend()
>>> instance = validator.from_dict(schema, data)