Allow changing "$schema" in embedded resources #87
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #59. Ultimately this was surprisingly simple (unlike several of my early attempts at it 😅 ).
As of draft 2020-12, embedded schemas (subschemas with "$id") can set "$schema" to something different from their containing resource.
2019-09 allows the presence of "$schema" in such circumstances, but leaves the behavior up to the implementation if the value differs from the containing resource. This change allows "$schema" switching to behave the same in 2019-09 as in 2020-12.
The change adds a
validating_with
parameter to theResult
constructor and__call__
methods, which is set byJSONSchema.validate()
to indicate that the evaluation is evaluating a schema against its metaschema, rather than a normal evaluation.JSONSchema.evaluate()
checksresult.validating_with
, and if all of the conditions are met, changes the evaluating schema fromself
to the schema-as-instance's metaschema before proceeding as normal. The originalself
schema, whether boolean or object, is not applied at all.