def _flat_type_map()

in summarize_from_feedback/utils/hyperparams.py [0:0]


def _flat_type_map(ty, separator):
    typemap = {}
    for f in fields(ty):
        typemap[f.name] = f.type
        if is_hparam_type(f.type):
            nested = _flat_type_map(f.type, separator=separator)
        elif _is_union_type(f.type):
            nested = {}
            for ty_option in f.type.__args__:
                if is_hparam_type(ty_option):
                    _update_disjoint(nested, _flat_type_map(ty_option, separator=separator))
        else:
            nested = {}
        _update_disjoint(typemap, {f"{f.name}{separator}{k}": t for k, t in nested.items()})
    return typemap