summaryrefslogtreecommitdiff
path: root/setuptools/config/_validate_pyproject/__init__.py
diff options
context:
space:
mode:
authorAnderson Bravalheri <andersonbravalheri@gmail.com>2022-03-30 19:41:38 +0100
committerAnderson Bravalheri <andersonbravalheri@gmail.com>2022-03-30 19:41:38 +0100
commit0a5e992ea63b123982df60fdaec5bd2dce5e3248 (patch)
treef87e8706f2ff5aad33e00423c8f2d682d227eb3e /setuptools/config/_validate_pyproject/__init__.py
parentcc55da0c4afbd128cf58d1cd4862e30bfceba56d (diff)
downloadpython-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__.py34
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