Spaces:
Sleeping
Sleeping
| import re | |
| import os | |
| import os | |
| import json | |
| import argparse | |
| import IPython | |
| # "place-blue-on-line-ends": { | |
| # "task-name": "place-blue-on-line-ends", | |
| # "task-description": "Pick up each blue box and accurately place it at the end of a green line.", | |
| # "assets-used": [ | |
| # "line/line-template.urdf", | |
| # "box/box-template.urdf" | |
| # ] | |
| # } | |
| 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 | |
| # remove some tasks from the list | |
| 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) | |