GEM/DatasetCardForm
9
1from argparse import ArgumentParser2from json import load3 4def parse_args():5 parser = ArgumentParser()6 parser.add_argument('input', type=str, nargs='+', \7 help='Specify paths to files (e.g., path/to/*.json)')8 9 return parser.parse_args()10 11 12def json_to_markdown(filename):13 json = load(open(filename))14 15 markdown = f'# Dataset Card for {json["name"]}\n\n'16 17 markdown += f'You can find the '18 19 markdown += json['summary'] + '\n\n'20 21 for key in json:22 if key not in ('name', 'summary', 'sections'):23 markdown += f'#### {key}\n{json[key]}\n\n'24 25 markdown += '\n'.join(section_to_markdown(section) \26 for section in json['sections'])27 28 with open(f'{filename[:-5]}.md', 'w') as f:29 f.write(markdown)30 31 32def section_to_markdown(section):33 markdown = f'{"#" * section["level"]} {section["title"]}\n\n'34 markdown += '\n'.join(subsection_to_markdown(subsection) \35 for subsection in section['subsections'])36 37 return markdown + '\n'38 39 40def subsection_to_markdown(subsection):41 markdown = f'{"#" * subsection["level"]} {subsection["title"]}\n\n'42 markdown += '\n'.join(field_to_markdown(field) \43 for field in subsection['fields'])44 45 return markdown + '\n'46 47 48def field_to_markdown(field):49 markdown = f'{"#" * field["level"]} {field["title"]}\n\n'50 51 if 'flags' in field and 'quick' in field['flags']:52 markdown += f'<!-- quick -->\n'53 54 if field.get('info', False):55 markdown += f'<!-- info: {field["info"]} -->\n'56 57 if field.get('scope', False):58 markdown += f'<!-- scope: {field["scope"]} -->\n'59 60 markdown += field.get('content', '')61 62 return markdown + '\n'63 64 65def main():66 """Converts JSON output from `reformat_json.py`67 to Markdown input for Data Cards Labs."""68 args = parse_args()69 for filename in args.input:70 if filename[-5:] == '.json':71 json_to_markdown(filename)72 73 74if __name__ == '__main__':75 main()