Files
SkillCompiler/data/format-preference/natural-instructions/src/auto_update_readme.py
T
2026-09-04 14:58:42 +08:00

59 lines
2.1 KiBLFS
Python

import json
from os import listdir, path
from os.path import isfile, join
"""
For each updated task file, automatically update its corresponding line in README with new Category, Domain, Input Language and Output Language
"""
def add_to_list(l, index, value):
if len(l) < index+1:
l.append(value)
else:
l[index] = value
def modify_task_line(task_name, lines, new_fields):
for i, line in enumerate(lines):
fields = [ x.strip() for x in line.split("|")]
# found the line
if fields[0] == f"`{task_name}`":
# modify the feilds
fields[2] = new_fields["category"]
add_to_list(fields, 3, new_fields["domains"])
add_to_list(fields, 4, new_fields["input_language"])
add_to_list(fields, 5, new_fields["output_language"])
lines[i] = "\t| ".join(fields) + "\n"
# write
def update_readme(readme_path, lines):
out = open(readme_path, 'w')
out.writelines(lines); out.close()
if __name__ == "__main__":
tasks_path = 'tasks/'
readme_path = f"{tasks_path}README.md"
lines = open(readme_path, 'r').readlines()
files = [f for f in listdir(tasks_path) if isfile(join(tasks_path, f))]
files.sort()
for file in files:
if ".json" in file:
file_path = tasks_path + file
# open each json file
with open(file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
if "Domains" in data and "Input_language" in data and "Output_language" in data:
task_name = path.splitext(file)[0]
new_fields = {
"category": ", ".join(data["Categories"]),
"domains": ", ".join(data["Domains"]),
"input_language": ", ".join(data["Input_language"]),
"output_language": ", ".join(data["Output_language"])
}
modify_task_line(task_name, lines, new_fields)
update_readme(readme_path, lines)
print(f"Updated task {task_name} in readme")