Return a JSON-serializable schema response for the provided breadcrumbs.
(
breadcrumbs_raw: Sequence[Mapping[str, Any]] | None = None,
*,
root_cls: Type[BaseConfig] = DesignConfig,
)
| 108 | |
| 109 | |
| 110 | def build_schema_response( |
| 111 | breadcrumbs_raw: Sequence[Mapping[str, Any]] | None = None, |
| 112 | *, |
| 113 | root_cls: Type[BaseConfig] = DesignConfig, |
| 114 | ) -> Dict[str, Any]: |
| 115 | """Return a JSON-serializable schema response for the provided breadcrumbs.""" |
| 116 | |
| 117 | breadcrumbs = _normalize_breadcrumbs(breadcrumbs_raw) |
| 118 | target_cls = _resolve_config_class(breadcrumbs, root_cls=root_cls) |
| 119 | schema_node = target_cls.collect_schema() |
| 120 | field_specs = target_cls.field_specs() |
| 121 | ordered_fields = _ordered_field_names(field_specs) |
| 122 | fields_payload = [_serialize_field(target_cls, name, field_specs) for name in ordered_fields] |
| 123 | |
| 124 | response = { |
| 125 | "schemaVersion": SCHEMA_VERSION, |
| 126 | "node": schema_node.node, |
| 127 | "fields": fields_payload, |
| 128 | "constraints": [constraint.to_json() for constraint in schema_node.constraints], |
| 129 | "breadcrumbs": [crumb.to_json() for crumb in breadcrumbs], |
| 130 | } |
| 131 | response["cacheKey"] = _hash_payload({"node": schema_node.node, "breadcrumbs": response["breadcrumbs"]}) |
| 132 | return response |
| 133 | |
| 134 | |
| 135 | __all__ = [ |
no test coverage detected