-
-
Notifications
You must be signed in to change notification settings - Fork 596
Open
Labels
BugSomething doesn't work the way it should.Something doesn't work the way it should.Error ReportingIssues related to clearer or more robust validation error reportingIssues related to clearer or more robust validation error reporting
Description
In continuation to #1250. The fix has seemingly undesired side effect.
from jsonschema import Draft202012Validator as Validator, exceptions
schema = {'oneOf': [
{'properties': {'run': {'type': 'string'}}, 'required': ['run']},
{'properties': {'uses': {'type': 'string'}}, 'required': ['uses']},
]}
instance = {'uses': 1, 'run': 1}
error = exceptions.best_match(Validator(schema).iter_errors(instance))
print(schema, "\n\n", error)
After the fix it produces:
1 is not of type 'string'
On instance['run']:
1
Conceptually, it is not clear why run
has priority (I understand that technically it has priority due to the alphabetical order).
Based on real example https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/github-workflow.json
As an alternative proposal, the relevance function could not be changed, but best_match
could distinguish errors having different error.path in the same subscheme, and choose first of them (maybe having even not the minimal relevance, but the maximum one for this particular subscheme provided that it is still minimal among different subschemes).
Metadata
Metadata
Assignees
Labels
BugSomething doesn't work the way it should.Something doesn't work the way it should.Error ReportingIssues related to clearer or more robust validation error reportingIssues related to clearer or more robust validation error reporting