t2m / eval_suite /parse_prompt.py
thanhkt's picture
Upload 26 files
8fb7841 verified
import os
from tqdm import tqdm
def call_parse_prompt():
"""
Locates the prompts_raw directory and generates an __init__.py file containing prompt texts.
Searches for prompts_raw directory in current and parent directories. Once found, calls
create_python_file_with_texts() to generate the __init__.py file.
"""
current_file_path = os.path.abspath(__file__)
current_folder_path = os.path.dirname(current_file_path)
folder_path = os.path.join(current_folder_path, "prompts_raw")
# If prompts_raw not found in current directory, search parent directories
if not os.path.exists(folder_path):
parent_dir = current_folder_path
while parent_dir != os.path.dirname(parent_dir): # Stop at root directory
parent_dir = os.path.dirname(parent_dir)
test_path = os.path.join(parent_dir, "prompts_raw")
if os.path.exists(test_path):
folder_path = test_path
break
output_file = os.path.join(folder_path, "__init__.py")
create_python_file_with_texts(folder_path, output_file)
def create_python_file_with_texts(folder_path, output_file):
"""
Creates a Python file containing prompt texts from .txt files.
Args:
folder_path (str): Path to directory containing prompt .txt files
output_file (str): Path where the output __init__.py file will be created
The function reads all .txt files in the given folder, converts their contents into
Python variables, and writes them to the output file. Variable names are derived from
file paths with special characters replaced.
"""
with open(output_file, 'w', encoding='utf-8') as out_file:
out_file.write("# This file is generated automatically through parse_prompt.py\n\n")
txt_files = [file for root, dirs, files in os.walk(folder_path) for file in files if file.endswith(".txt")]
for file in tqdm(txt_files, desc="Processing files"):
file_path = os.path.join(folder_path, file)
var_name = "_" + file_path.replace(folder_path, "").replace(os.sep, "_").replace(".txt", "").strip("_")
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read().replace('"""', '\"\"\"')
out_file.write(f'{var_name} = """{content}"""\n\n')
if __name__ == "__main__":
call_parse_prompt()