FUCAT's picture
Deploy grok2api to HF Spaces (Docker)
7e55e53
Raw
History Blame Contribute Delete
1.17 kB
"""Flatten / unflatten helpers shared by all backends."""
import json
import logging
from typing import Any
_log = logging.getLogger(__name__)
def flatten(nested: dict[str, Any], prefix: str = "") -> dict[str, str]:
"""Recursively flatten *nested* to ``{"section.key": json_value, ...}``."""
out: dict[str, str] = {}
for k, v in nested.items():
full = f"{prefix}.{k}" if prefix else k
if isinstance(v, dict):
out.update(flatten(v, full))
else:
out[full] = json.dumps(v, ensure_ascii=False)
return out
def unflatten(flat: dict[str, str]) -> dict[str, Any]:
"""Rebuild a nested dict from ``{"section.key": json_value, ...}``."""
result: dict[str, Any] = {}
for dotted, json_val in flat.items():
parts = dotted.split(".")
node = result
for part in parts[:-1]:
node = node.setdefault(part, {})
try:
node[parts[-1]] = json.loads(json_val)
except (json.JSONDecodeError, ValueError):
_log.warning("config: failed to deserialize key %r, treating as string", dotted)
node[parts[-1]] = json_val
return result