Skip to content

Commit

Permalink
Use JSON Schema validator for Draft 2020-12 in _validate_obj_json
Browse files Browse the repository at this point in the history
For dandi JSON schema 0.7.0 or above
  • Loading branch information
candleindark committed Jan 19, 2024
1 parent 51d4c53 commit b718dc2
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions dandischema/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,17 @@ def publish_model_schemata(releasedir: Union[str, Path]) -> Path:


def _validate_obj_json(data: dict, schema: dict, missing_ok: bool = False) -> None:
validator = jsonschema.Draft7Validator(
schema, format_checker=jsonschema.Draft7Validator.FORMAT_CHECKER
)
if version2tuple(data["schemaVersion"]) >= version2tuple("0.7.0"):
# schema version 0.7.0 and above is produced with Pydantic V2
# which is compliant with JSON Schema Draft 2020-12
validator = jsonschema.Draft202012Validator(
schema, format_checker=jsonschema.Draft202012Validator.FORMAT_CHECKER
)
else:
validator = jsonschema.Draft7Validator(
schema, format_checker=jsonschema.Draft7Validator.FORMAT_CHECKER
)

error_list = []
for error in sorted(validator.iter_errors(data), key=str):
if missing_ok and "is a required property" in error.message:
Expand Down

0 comments on commit b718dc2

Please sign in to comment.