|
""" |
|
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", |
|
] |
|
|