CoolFace
Apppublic

GEM/DatasetCardForm

sourceHugging Faceupdated 4y agoView on Hugging Face
9likes
construct_md.py75 linesDownload Raw Back to formatting
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()