I passed a (very large) dict: gs://broad-ukbb/broad.freeze_6/temp/header_dict.pickle. good to know it’s probaby a typecheck failure; hopefully it’s just a typo within the dict!
# expect: (None or Mapping[str, Mapping[str, Mapping[str, str]]])
def validate(d):
for k, v in d.items():
if not isinstance(k, str):
raise ValueError(f'bad top level key {k}')
if not isinstance(v, dict):
raise ValueError(f'bad top-level value {v} at {k}')
for k2, v2 in v.items():
if not isinstance(k2, str):
raise ValueError(f'bad 2nd-level key {k2} at ${k}')
if not isinstance(v2, dict):
raise ValueError(f'bad 2nd-level value {v2} at {k}/{k2}')
for k3, v3 in v2.items():
if not isinstance(k3, str):
raise ValueError(f'bad 3rd-level key {k3} at ${k}/{k2}')
if not isinstance(v3, str):
raise ValueError(f'bad 3rd-level value {v3} at {k}/{k2}/{k3}')