Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use latest jsonschema version v4.18 or higher #1521

Closed
2 tasks
shahzebsiddiqui opened this issue Jul 6, 2023 · 2 comments
Closed
2 tasks

Use latest jsonschema version v4.18 or higher #1521

shahzebsiddiqui opened this issue Jul 6, 2023 · 2 comments

Comments

@shahzebsiddiqui
Copy link
Member

shahzebsiddiqui commented Jul 6, 2023

According to https://github.com/python-jsonschema/jsonschema/releases/tag/v4.18.0 the RefResolver has been deprecated in favor of referencing library which requires a bit of work to change the codebase. This will impact the way we call custom_validator method

resolver = RefResolver.from_schema(
schema_table["definitions.schema.json"]["recipe"], store=schema_store
)
def custom_validator(recipe, schema):
"""This is a custom validator for validating JSON documents. We implement a
custom resolver using `RefResolver <https://python-jsonschema.readthedocs.io/en/stable/references/#jsonschema.RefResolver>`_
to find schemas locally in order to validate buildspecs with schema files on local filesystem. This ensures changes to
schema can be done in sync with change to code base.
This method uses `Draft7Validator <https://python-jsonschema.readthedocs.io/en/stable/validate/#jsonschema.Draft7Validator>`_
for validating schemas. If there is an error during validation jsonschema will raise an exception of type
`jsonschema.exceptions.ValidationError <https://python-jsonschema.readthedocs.io/en/stable/errors/#jsonschema.exceptions.ValidationError>`_
Args:
recipe (dict): Loaded test recipe as YAML document
schema (dict): Schema document loaded in JSON format
Raises:
jsonschema.exceptions.ValidationError: if recipe fails to validate with schema
"""
# making sure input recipe and schema are dictionary
assert isinstance(recipe, dict)
assert isinstance(schema, dict)
validator = Draft7Validator(schema, resolver=resolver)
validator.validate(recipe)

What we need to do

To summarize the following line needs to be changed since resolver needs to be handled via Registry().with_resource()

resolver = RefResolver.from_schema(
    schema_table["definitions.schema.json"]["recipe"], store=schema_store
)

For more details also check out https://python-jsonschema.readthedocs.io/en/stable/referencing/

@shahzebsiddiqui
Copy link
Member Author

@Xiangs18 i created a PR #1793 so feel free to get started from here.

@shahzebsiddiqui
Copy link
Member Author

this was addressed in #1802

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants