12345678910111213141516171819202122232425262728293031323334 |
- 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
|