Files
7000pctAUTO eda78b6530
Some checks failed
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
fix: resolve CI/CD test failures and linting issues
2026-02-04 07:32:17 +00:00

52 lines
1.3 KiB
Python

"""JSON Schema generation from parsed configurations."""
from typing import Any, Dict
def generate_schema(data: Any) -> Dict[str, Any]:
"""Generate a JSON Schema from a parsed configuration.
Args:
data: The parsed configuration data
Returns:
A dictionary representing the JSON Schema
"""
schema: Dict[str, Any] = {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": _infer_type(data),
}
if isinstance(data, dict):
schema["properties"] = {}
for key, value in data.items():
schema["properties"][key] = generate_schema(value)
elif isinstance(data, list):
if len(data) > 0:
schema["items"] = generate_schema(data[0])
else:
schema["items"] = {"type": "string"}
return schema
def _infer_type(data: Any) -> str:
"""Infer the JSON Schema type from a Python value."""
if data is None:
return "null"
elif isinstance(data, bool):
return "boolean"
elif isinstance(data, int):
return "integer"
elif isinstance(data, float):
return "number"
elif isinstance(data, str):
return "string"
elif isinstance(data, list):
return "array"
elif isinstance(data, dict):
return "object"
else:
return "string"