Source code for flexeval.schema.schema_utils

import types
from typing import Annotated, Any

from pydantic import BeforeValidator, PlainSerializer, PlainValidator


[docs] def validate_python_module(value: Any) -> Any: if not isinstance(value, types.ModuleType): raise ValueError(f"Expected a module, got a {type(value)}.") return value
ModuleType = Annotated[ types.ModuleType, PlainValidator(validate_python_module), PlainSerializer(lambda x: str(x.__name__)), ]
[docs] def convert_none_or_empty_string_to_dict(value: Any): if value is None or (isinstance(value, str) and value.strip() == ""): return {} return value
OptionalDict = Annotated[dict, BeforeValidator(convert_none_or_empty_string_to_dict)]