in glean_parser/util.py [0:0]
def pprint_validation_error(error) -> str:
"""
A version of jsonschema's ValidationError __str__ method that doesn't
include the schema fragment that failed. This makes the error messages
much more succinct.
It also shows any subschemas of anyOf/allOf that failed, if any (what
jsonschema calls "context").
"""
essential_for_verbose = (
error.validator,
error.validator_value,
error.instance,
error.schema,
)
if any(m is _unset for m in essential_for_verbose):
return textwrap.fill(error.message)
instance = error.instance
for path in list(error.relative_path)[::-1]:
if isinstance(path, str):
instance = {path: instance}
else:
instance = [instance]
yaml_instance = ordered_yaml_dump(instance, width=72, default_flow_style=False)
parts = ["```", yaml_instance.rstrip(), "```", "", textwrap.fill(error.message)]
if error.context:
parts.extend(
textwrap.fill(x.message, initial_indent=" ", subsequent_indent=" ")
for x in error.context
)
description = error.schema.get("description")
if description:
parts.extend(
["", "Documentation for this node:", textwrap.indent(description, " ")]
)
return "\n".join(parts)