Source code for nlpstack.integrations.mlflow.util
from collections import abc
from typing import Any, Dict, Mapping
[docs]def flatten_dict_for_mlflow_log(data: Mapping[str, Any]) -> Mapping[str, Any]:
output: Dict[str, Any] = {}
def _flatten(obj: Any, prefix: str = "") -> None:
if isinstance(obj, (int, float, str, bool, type(None))):
output[prefix] = obj
elif isinstance(obj, abc.Mapping):
for key, value in obj.items():
_flatten(value, f"{prefix}.{key}")
elif isinstance(obj, abc.Sequence):
for index, value in enumerate(obj):
_flatten(value, f"{prefix}.{index}")
else:
output[prefix] = obj
_flatten(data)
return {key.lstrip("."): value for key, value in output.items()}