diff options
author | Harald Nezbeda <hn@nezhar.com> | 2021-06-16 14:09:25 +0200 |
---|---|---|
committer | Harald Nezbeda <hn@nezhar.com> | 2021-07-19 18:14:31 +0200 |
commit | 0e4eaeb86569b9dfb664efee436573cedc4fa333 (patch) | |
tree | bd7884fb8bf262bddb0c1735781d0def67d6885d /jsonschema/_validators.py | |
parent | edc5eb086b557336dfb6963ed38f47464ee17727 (diff) | |
download | jsonschema-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.py | 24 |
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 |