Source code for jupyter_starters.json_
"""Some third-party preferred alternatives to stdlib/status quo for parsing and
validating JSON."""
# pylint: disable=invalid-name,c-extension-no-member
from typing import Any, Callable, Dict, Text
try:
import ujson
loads = ujson.loads
dumps = ujson.dumps
except ImportError: # pragma: no cover
import json
loads = json.loads # type: ignore
dumps = json.dumps # type: ignore
try:
import fastjsonschema.compile as json_validator
from fastjsonschema import JsonSchemaException
except ImportError:
from jsonschema import validate
from jsonschema.exceptions import ValidationError as JsonSchemaException
from jsonschema.validators import validator_for
[docs] def json_validator(schema: Dict[Text, Any]) -> Callable[[Dict[Text, Any]], Any]:
"""Implements that fastjsonschema.compile API with jsonschema."""
validator_cls = validator_for(schema)
def _validate(instance: Dict[Text, Any]) -> Any:
validate(instance, schema, cls=validator_cls)
return instance
return _validate
__all__ = ["loads", "dumps", "json_validator", "JsonSchemaException"]