from typing import Any, Dict | |
class Singleton(type): | |
_instances = {} | |
def __call__(cls, *args, **kwargs): | |
if cls not in cls._instances: | |
cls._instances[cls] = super().__call__(*args, **kwargs) | |
return cls._instances[cls] | |
def flatten_dict( | |
d: Dict[str, Any], parent_key: str = "", sep: str = "_" | |
) -> Dict[str, Any]: | |
items = [] | |
for k, v in d.items(): | |
new_key = parent_key + sep + k if parent_key else k | |
if isinstance(v, dict): | |
items.extend(flatten_dict(v, new_key, sep=sep).items()) | |
else: | |
items.append((new_key, v)) | |
return dict(items) | |