121 lines
3.8 KiB
Python
121 lines
3.8 KiB
Python
"""
|
|
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 SchemaError, ValidationError
|
|
from jsonschema.validators import (
|
|
Draft3Validator,
|
|
Draft4Validator,
|
|
Draft6Validator,
|
|
Draft7Validator,
|
|
Draft201909Validator,
|
|
Draft202012Validator,
|
|
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,
|
|
)
|
|
|
|
from importlib import metadata
|
|
return metadata.version("jsonschema")
|
|
elif name == "RefResolver":
|
|
from jsonschema.validators import _RefResolver
|
|
warnings.warn(
|
|
_RefResolver._DEPRECATION_MESSAGE,
|
|
DeprecationWarning,
|
|
stacklevel=2,
|
|
)
|
|
return _RefResolver
|
|
elif name == "ErrorTree":
|
|
warnings.warn(
|
|
"Importing ErrorTree directly from the jsonschema package "
|
|
"is deprecated and will become an ImportError. Import it from "
|
|
"jsonschema.exceptions instead.",
|
|
DeprecationWarning,
|
|
stacklevel=2,
|
|
)
|
|
from jsonschema.exceptions import ErrorTree
|
|
return ErrorTree
|
|
elif name == "FormatError":
|
|
warnings.warn(
|
|
"Importing FormatError directly from the jsonschema package "
|
|
"is deprecated and will become an ImportError. Import it from "
|
|
"jsonschema.exceptions instead.",
|
|
DeprecationWarning,
|
|
stacklevel=2,
|
|
)
|
|
from jsonschema.exceptions import FormatError
|
|
return FormatError
|
|
elif name == "Validator":
|
|
warnings.warn(
|
|
"Importing Validator directly from the jsonschema package "
|
|
"is deprecated and will become an ImportError. Import it from "
|
|
"jsonschema.protocols instead.",
|
|
DeprecationWarning,
|
|
stacklevel=2,
|
|
)
|
|
from jsonschema.protocols import Validator
|
|
return Validator
|
|
elif name == "RefResolutionError":
|
|
from jsonschema.exceptions import _RefResolutionError
|
|
warnings.warn(
|
|
_RefResolutionError._DEPRECATION_MESSAGE,
|
|
DeprecationWarning,
|
|
stacklevel=2,
|
|
)
|
|
return _RefResolutionError
|
|
|
|
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}")
|
|
|
|
|
|
__all__ = [
|
|
"Draft201909Validator",
|
|
"Draft202012Validator",
|
|
"Draft3Validator",
|
|
"Draft4Validator",
|
|
"Draft6Validator",
|
|
"Draft7Validator",
|
|
"FormatChecker",
|
|
"SchemaError",
|
|
"TypeChecker",
|
|
"ValidationError",
|
|
"validate",
|
|
]
|