Spaces:
Runtime error
Runtime error
Statute_Prediction
/
venv
/lib
/python3.11
/site-packages
/jsonschema
/benchmarks
/nested_schemas.py
""" | |
Validating highly nested schemas shouldn't cause exponential time blowups. | |
See https://github.com/python-jsonschema/jsonschema/issues/1097. | |
""" | |
from itertools import cycle | |
from jsonschema.validators import validator_for | |
metaschemaish = { | |
"$id": "https://example.com/draft/2020-12/schema/strict", | |
"$schema": "https://json-schema.org/draft/2020-12/schema", | |
"$vocabulary": { | |
"https://json-schema.org/draft/2020-12/vocab/core": True, | |
"https://json-schema.org/draft/2020-12/vocab/applicator": True, | |
"https://json-schema.org/draft/2020-12/vocab/unevaluated": True, | |
"https://json-schema.org/draft/2020-12/vocab/validation": True, | |
"https://json-schema.org/draft/2020-12/vocab/meta-data": True, | |
"https://json-schema.org/draft/2020-12/vocab/format-annotation": True, | |
"https://json-schema.org/draft/2020-12/vocab/content": True, | |
}, | |
"$dynamicAnchor": "meta", | |
"$ref": "https://json-schema.org/draft/2020-12/schema", | |
"unevaluatedProperties": False, | |
} | |
def nested_schema(levels): | |
""" | |
Produce a schema which validates deeply nested objects and arrays. | |
""" | |
names = cycle(["foo", "bar", "baz", "quux", "spam", "eggs"]) | |
schema = {"type": "object", "properties": {"ham": {"type": "string"}}} | |
for _, name in zip(range(levels - 1), names): | |
schema = {"type": "object", "properties": {name: schema}} | |
return schema | |
validator = validator_for(metaschemaish)(metaschemaish) | |
if __name__ == "__main__": | |
from pyperf import Runner | |
runner = Runner() | |
not_nested = nested_schema(levels=1) | |
runner.bench_func("not nested", lambda: validator.is_valid(not_nested)) | |
for levels in range(1, 11, 3): | |
schema = nested_schema(levels=levels) | |
runner.bench_func( | |
f"nested * {levels}", | |
lambda schema=schema: validator.is_valid(schema), | |
) | |