summaryrefslogtreecommitdiff
path: root/jsonschema/_validators.py
diff options
context:
space:
mode:
authorHarald Nezbeda <hn@nezhar.com>2021-06-16 14:09:25 +0200
committerHarald Nezbeda <hn@nezhar.com>2021-07-19 18:14:31 +0200
commit0e4eaeb86569b9dfb664efee436573cedc4fa333 (patch)
treebd7884fb8bf262bddb0c1735781d0def67d6885d /jsonschema/_validators.py
parentedc5eb086b557336dfb6963ed38f47464ee17727 (diff)
downloadjsonschema-0e4eaeb86569b9dfb664efee436573cedc4fa333.tar.gz
Julian/jsonschema#782: Add checks for prefixItems, basic check for unevaluatedItems
Diffstat (limited to 'jsonschema/_validators.py')
-rw-r--r--jsonschema/_validators.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/jsonschema/_validators.py b/jsonschema/_validators.py
index 0e973f3..7b273f4 100644
--- a/jsonschema/_validators.py
+++ b/jsonschema/_validators.py
@@ -422,3 +422,27 @@ def if_(validator, if_schema, instance, schema):
else_ = schema[u"else"]
for error in validator.descend(instance, else_, schema_path="else"):
yield error
+
+
+def unevaluatedItems(validator, unevaluatedItems, instance, schema):
+ if not validator.is_type(instance, "array"):
+ return
+
+ if unevaluatedItems:
+ return
+
+ # ToDo: Implement additional checks for "prefixItems", "items", "contains", "if", "then", "else", "allOf", "anyOf",
+ # "oneOf" and "not" keywords
+
+
+def prefixItems(validator, prefixItems, instance, schema):
+ if "unevaluatedItems" in schema:
+ return
+
+ if not validator.is_type(instance, "array"):
+ return
+
+ for k, v in enumerate(instance):
+ if k < len(prefixItems):
+ for error in validator.descend(v, prefixItems[k], schema_path="prefixItems"):
+ yield error