python-jsonschema / python-jsonschema/jsonschema
error object properties "schema" and "relative_schema_path" seem to be inconsistent
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 5k
- Forks
- 671
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 10
Description
I need to parse a jsonschema.exceptions.ValidationError object to help produce a more useful error message to my customers, but I am not sure that the fields of the ValidationError object are correct.
Test case: https://gist.github.com/jason-s/6d2b3418f4edb7fc8064
Raw object (in yaml format, but jsonschema is representation-agnostic -- thank you, it means I can use it for yaml files):
debug:
foo:
bar:
jiminy: cricket
mickey: mouse
44hoho: twinkie
The validator correctly find that 44hoho is not a legal property name; it doesn't match patternProperties and in my schema I have additionalProperties = false.
The problem is that the error object's relative_schema_path and schema seem inconsistent.
My test case prints:
parent : None
relative_path : deque(['debug', 'foo', 'bar'])
relative_schema_path: deque(['properties', 'debug', 'properties', 'foo', 'properties', 'bar', 'additionalProperties'])
instance : {'jiminy': 'cricket', 'mickey': 'mouse', '44hoho': 'twinkie'}
schema_path : deque(['properties', 'debug', 'properties', 'foo', 'properties', 'bar', 'additionalProperties'])
validator : additionalProperties
context : []
path : deque(['debug', 'foo', 'bar'])
message : Additional properties are not allowed ('44hoho' was unexpected)
schema : {'additionalProperties': False, 'type': 'object', 'patternProperties': {'^[^\\d\\W]\\w*$': {'type': 'string'}}}
cause : None
validator_value: False
Note that the schema attribute is a sub-portion of the schema object, but the relative schema path is from the root schema.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked gist and reproduce the reported ValidationError output, then read the ValidationError fields involved: schema, relative_schema_path, schema_path, path, and validator. Determine the intended relationship between the reported schema fragment and schema paths; done means the fields are consistent and the reproduction is covered by a regression test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100