Source code for project_config.serializers.toml

"""TOML serializing."""

from __future__ import annotations

import typing as t

import tomlkit


[docs]def loads(string: str) -> t.Dict[str, t.Any]: """Converts a TOML file string to an object. Args: string (str): TOML file string to convert. Returns: dict: Conversion result. """ def iterate_key_values(obj: t.Any) -> t.Any: _partial_result: t.Union[t.Dict[str, t.Any], t.List[t.Any]] if isinstance(obj, dict): _partial_result = {} for key, value in obj.items(): key = str(key) if isinstance(value, dict): value = dict(value) _partial_result[key] = iterate_key_values(value) else: if isinstance(value, list): value = iterate_key_values(value) elif isinstance(value, str): value = str(value) _partial_result[key] = value elif isinstance(obj, list): _partial_result = [] for item in obj: if isinstance(item, dict): item = dict(item) _partial_result.append(iterate_key_values(item)) else: if isinstance(item, list): item = iterate_key_values(item) elif isinstance(item, str): item = str(item) _partial_result.append(item) return _partial_result return iterate_key_values(dict(tomlkit.loads(string))) # type: ignore