Source code for DatabankLib.SchemaValidation.ValidateYAML

import json
import logging
import os

import yaml
from jsonschema import Draft202012Validator, FormatChecker

"""
Tools for validating YAML files against predefined JSON Schemas.

Schemas are stored under the `Schema` subdirectory, and this module
provides helpers to validate both in-memory dicts and on-disk YAML files.
"""


logger = logging.getLogger(__name__)
default_schema_path = os.path.join(os.path.dirname(__file__), "Schema", "info_yml_schema.json")


[docs] def validate_info_dict(instance: dict, schema_path: str = default_schema_path): """ Validate an info dict against a schema dict. Returns a list of jsonschema.ValidationError objects which is empty with valid. """ with open(schema_path, encoding="utf-8") as f: schema = json.load(f) validator = Draft202012Validator(schema, format_checker=FormatChecker()) return list(validator.iter_errors(instance))
[docs] def validate_info_file(info_file_path: str, schema_path: str = default_schema_path): """ Validate an info file (YML/YAML) on disk against a JSON schema file. Returns a list of ValidationError objects (empty if valid). """ with open(info_file_path, encoding="utf-8") as f: instance = yaml.safe_load(f) return validate_info_dict(instance, schema_path)