Spaces:
Sleeping
Sleeping
import json | |
from jsonschema import validate, exceptions | |
meta_schema = { | |
"type": "object", | |
"required": ["type", "properties"], | |
"properties": {"type": {"type": "string"}, "properties": {"type": "object"}}, | |
} | |
def validate_schema_structure(schema_str): | |
""" | |
Parse and Validate a JSON Schema object | |
Args: | |
schema_str: A valid JSON schema object seralized to a string | |
Returns: | |
tuple: (bool, object) where: | |
- First element is a boolean indicating success (True) or failure (False) | |
- Second element is either the validated schema object (on success) | |
or an error message string (on failure) | |
""" | |
try: | |
schema = json.loads(schema_str) | |
validate(instance=schema, schema=meta_schema) | |
return True, schema | |
except exceptions.ValidationError as e: | |
return False, f"Schema structure validation error: {e}" | |
except json.JSONDecodeError as e: | |
return False, f"Invalid JSON syntax: {str(e)}" | |
except Exception as e: | |
return False, f"Unexpected error: {str(e)}" | |