| from functools import reduce |
| from typing import Any, Callable, Dict |
| |
| from . import formats |
| from .error_reporting import detailed_errors, ValidationError |
| from .extra_validations import EXTRA_VALIDATIONS |
| from .fastjsonschema_exceptions import JsonSchemaException, JsonSchemaValueException |
| from .fastjsonschema_validations import validate as _validate |
| |
| __all__ = [ |
| "validate", |
| "FORMAT_FUNCTIONS", |
| "EXTRA_VALIDATIONS", |
| "ValidationError", |
| "JsonSchemaException", |
| "JsonSchemaValueException", |
| ] |
| |
| |
| FORMAT_FUNCTIONS: Dict[str, Callable[[str], bool]] = { |
| fn.__name__.replace("_", "-"): fn |
| for fn in formats.__dict__.values() |
| if callable(fn) and not fn.__name__.startswith("_") |
| } |
| |
| |
| def validate(data: Any) -> bool: |
| """Validate the given ``data`` object using JSON Schema |
| This function raises ``ValidationError`` if ``data`` is invalid. |
| """ |
| with detailed_errors(): |
| _validate(data, custom_formats=FORMAT_FUNCTIONS) |
| reduce(lambda acc, fn: fn(acc), EXTRA_VALIDATIONS, data) |
| return True |