in lm_human_preferences/utils/hyperparams.py [0:0]
def _type_map(ty, separator):
typemap = {}
for f in fields(ty):
typemap[f.name] = f.type
if is_hparam_type(f.type):
nested = _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, _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