diff options
| author | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2022-03-30 19:41:38 +0100 |
|---|---|---|
| committer | Anderson Bravalheri <andersonbravalheri@gmail.com> | 2022-03-30 19:41:38 +0100 |
| commit | 0a5e992ea63b123982df60fdaec5bd2dce5e3248 (patch) | |
| tree | f87e8706f2ff5aad33e00423c8f2d682d227eb3e /setuptools/config/_validate_pyproject/__init__.py | |
| parent | cc55da0c4afbd128cf58d1cd4862e30bfceba56d (diff) | |
| download | python-setuptools-git-0a5e992ea63b123982df60fdaec5bd2dce5e3248.tar.gz | |
Move _validate_pyproject to config
Diffstat (limited to 'setuptools/config/_validate_pyproject/__init__.py')
| -rw-r--r-- | setuptools/config/_validate_pyproject/__init__.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/setuptools/config/_validate_pyproject/__init__.py b/setuptools/config/_validate_pyproject/__init__.py new file mode 100644 index 00000000..dbe6cb4c --- /dev/null +++ b/setuptools/config/_validate_pyproject/__init__.py @@ -0,0 +1,34 @@ +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 |
