Source code for kerb.parsing.schema

"""JSON Schema validation utilities.

This module provides functions for validating data against JSON Schema definitions.
"""

from typing import Any, Dict

from .types import ValidationResult


[docs] def validate_json_schema(data: Any, schema: Dict[str, Any]) -> ValidationResult: """Validate data against a JSON Schema. Args: data: Data to validate (typically a dict or list) schema: JSON Schema definition Returns: ValidationResult: Validation result with any errors Examples: >>> schema = {"type": "object", "properties": {"name": {"type": "string"}}} >>> validate_json_schema({"name": "John"}, schema) ValidationResult(valid=True, errors=[], data={'name': 'John'}) """ try: import jsonschema jsonschema.validate(instance=data, schema=schema) return ValidationResult(valid=True, data=data) except ImportError: return ValidationResult( valid=False, errors=[ "jsonschema package not installed. Install with: pip install jsonschema" ], data=data, ) except jsonschema.exceptions.ValidationError as e: return ValidationResult(valid=False, errors=[str(e)], data=data) except Exception as e: return ValidationResult( valid=False, errors=[f"Validation error: {str(e)}"], data=data )