Source code for pacman.utilities.file_format_schemas
# Copyright (c) 2015 The University of Manchester
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
A simple bit of support code for validation.
"""
import os
import json
from typing import Union
import jsonschema
from spinn_utilities.typing.json import JsonArray, JsonObject, JsonObjectArray
[docs]
def validate(json_obj: Union[JsonArray, JsonObject, JsonObjectArray],
schema_filename: str) -> None:
"""
Check that the given JSON object (or array) is valid against the
given schema. The schema is given by filename relative to this package.
:param json_obj: The entity to validate
:type json_obj: dict or list
:param str schema_filename:
The name of the file containing the schema (e.g., "routes.json")
:raises IOError: If the schema file doesn't exist.
:raises ~jsonschema.exceptions.ValidationError:
If the JSON object isn't valid.
"""
schema_file = os.path.join(os.path.dirname(__file__), schema_filename)
with open(schema_file, "r", encoding="utf-8") as f:
jsonschema.validate(json_obj, json.load(f))