You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.1 KiB
72 lines
2.1 KiB
"""
|
|
An implementation of JSON Schema for Python
|
|
|
|
The main functionality is provided by the validator classes for each of the
|
|
supported JSON Schema versions.
|
|
|
|
Most commonly, `jsonschema.validators.validate` is the quickest way to simply
|
|
validate a given instance under a schema, and will create a validator
|
|
for you.
|
|
"""
|
|
import warnings
|
|
|
|
from jsonschema._format import FormatChecker
|
|
from jsonschema._types import TypeChecker
|
|
from jsonschema.exceptions import (
|
|
ErrorTree,
|
|
FormatError,
|
|
RefResolutionError,
|
|
SchemaError,
|
|
ValidationError,
|
|
)
|
|
from jsonschema.protocols import Validator
|
|
from jsonschema.validators import (
|
|
Draft3Validator,
|
|
Draft4Validator,
|
|
Draft6Validator,
|
|
Draft7Validator,
|
|
Draft201909Validator,
|
|
Draft202012Validator,
|
|
RefResolver,
|
|
validate,
|
|
)
|
|
|
|
|
|
def __getattr__(name):
|
|
if name == "__version__":
|
|
warnings.warn(
|
|
"Accessing jsonschema.__version__ is deprecated and will be "
|
|
"removed in a future release. Use importlib.metadata directly "
|
|
"to query for jsonschema's version.",
|
|
DeprecationWarning,
|
|
stacklevel=2,
|
|
)
|
|
|
|
try:
|
|
from importlib import metadata
|
|
except ImportError:
|
|
import importlib_metadata as metadata
|
|
|
|
return metadata.version("jsonschema")
|
|
|
|
format_checkers = {
|
|
"draft3_format_checker": Draft3Validator,
|
|
"draft4_format_checker": Draft4Validator,
|
|
"draft6_format_checker": Draft6Validator,
|
|
"draft7_format_checker": Draft7Validator,
|
|
"draft201909_format_checker": Draft201909Validator,
|
|
"draft202012_format_checker": Draft202012Validator,
|
|
}
|
|
ValidatorForFormat = format_checkers.get(name)
|
|
if ValidatorForFormat is not None:
|
|
warnings.warn(
|
|
f"Accessing jsonschema.{name} is deprecated and will be "
|
|
"removed in a future release. Instead, use the FORMAT_CHECKER "
|
|
"attribute on the corresponding Validator.",
|
|
DeprecationWarning,
|
|
stacklevel=2,
|
|
)
|
|
return ValidatorForFormat.FORMAT_CHECKER
|
|
|
|
raise AttributeError(f"module {__name__} has no attribute {name}")
|