| import re |
| import os |
|
|
| import os |
| import json |
| import argparse |
|
|
| import IPython |
| |
| |
| |
| |
| |
| |
| |
| |
| def extract_dict(res, task_name, prefix="new_task"): |
| """ parse task dictionary from the code itself """ |
| task_dict = {"task-name": task_name, |
| "assets-used": []} |
| pattern = r'\'(.*?).urdf' |
| asset_string = re.findall(pattern, res) |
|
|
| pattern = r'"""(.*?)"""' |
| description_string = re.findall(pattern, res, re.DOTALL) |
| task_dict["assets-used"] = [file + ".urdf" for file in asset_string] |
| task_dict["task-description"] = description_string[0] |
| print(description_string[0]) |
| print(asset_string) |
| return task_dict |
|
|
|
|
| |
| parser = argparse.ArgumentParser() |
|
|
| parser.add_argument( |
| "--files", "-f", type=str, default="exps" |
| ) |
| args = parser.parse_args() |
|
|
|
|
| data_path = "prompts/data" |
| generated_task_path = os.path.join(data_path, "generated_tasks.json") |
| generated_task_code_path = os.path.join(data_path, "generated_task_codes.json") |
|
|
| generated_tasks = json.load(open(generated_task_path)) |
| generated_task_codes = json.load(open(generated_task_code_path)) |
|
|
|
|
| task_names = args.files.split(",") |
| print("Task names:", task_names) |
|
|
| for task_name in task_names: |
|
|
| task_name = task_name.replace("_", "-") |
| task_name_py = task_name.replace("-", "_") + ".py" |
| file_path = "cliport/generated_tasks/" + task_name_py |
| if os.path.exists(file_path) and task_name not in generated_tasks: |
| print("add task:", task_name) |
|
|
| code = open(file_path).read() |
| generated_tasks[task_name] = extract_dict(code, task_name) |
|
|
| if task_name_py not in generated_task_codes: |
| generated_task_codes.append(task_name_py) |
|
|
| with open(generated_task_code_path, "w") as outfile: |
| json.dump(generated_task_codes, outfile, indent=4) |
|
|
| with open(generated_task_path, "w") as outfile: |
| json.dump(generated_tasks, outfile, indent=4) |
|
|
|
|