Inherit hardcore template metadata

This commit is contained in:
2026-06-27 14:56:08 +02:00
parent 29e5e65e5f
commit a8d69083cd
7 changed files with 244 additions and 6 deletions
+37
View File
@@ -34,6 +34,43 @@ def template_metadata(item: Any) -> dict[str, Any]:
return {key: item[key] for key in TEMPLATE_METADATA_KEYS if key in item}
def merge_template_metadata(*metadata_values: Any) -> dict[str, Any]:
merged: dict[str, Any] = {}
for value in metadata_values:
metadata = template_metadata(value)
if not metadata:
continue
for key in ("action_family", "action_type", "family", "position_family", "position_key"):
if str(metadata.get(key) or "").strip():
merged[key] = metadata[key]
if metadata.get("position_keys") is not None:
merged["position_keys"] = merge_position_keys(
template_position_keys(merged),
template_position_keys(metadata),
)
hint_map = formatter_hints(metadata)
if hint_map:
existing = formatter_hints(merged)
for route, hints in hint_map.items():
for hint in hints:
if hint not in existing.setdefault(route, []):
existing[route].append(hint)
merged["formatter_hint"] = existing
return merged
def inherited_template_metadata(*containers: Any) -> dict[str, Any]:
metadata_parts: list[dict[str, Any]] = []
for container in containers:
if not isinstance(container, dict):
continue
nested = container.get("item_template_metadata")
if isinstance(nested, dict):
metadata_parts.append(nested)
metadata_parts.append(container)
return merge_template_metadata(*metadata_parts)
def template_position_family(metadata: dict[str, Any]) -> str:
return normalize_hardcore_position_family(
metadata.get("position_family") or metadata.get("family"),