|
if __name__ == "__main__": |
|
import argparse |
|
import os |
|
import re |
|
from zipfile import ZipFile |
|
|
|
parser = argparse.ArgumentParser( |
|
description="Package and zip LLM provided solutions" |
|
) |
|
parser.add_argument("--root", type=str, help="Root directory of solutions") |
|
parser.add_argument( |
|
"--output", type=str, required=True, help="Output directory of zip files" |
|
) |
|
args = parser.parse_args() |
|
|
|
|
|
directory_pattern = re.compile(r"(.*)_temp_(?:\d*\.?\d+)$") |
|
|
|
assert os.path.isdir(args.root) |
|
os.makedirs(args.output, exist_ok=True) |
|
|
|
for directory in os.listdir(args.root): |
|
match = directory_pattern.match(directory) |
|
if not match: |
|
continue |
|
directory_name = match.group(0) |
|
full_dir_path = os.path.join(args.root, directory_name) |
|
assert os.path.isdir(full_dir_path) |
|
print(f"Processing {full_dir_path}") |
|
|
|
zip_file_path = os.path.join(args.output, f"{directory_name}.zip") |
|
if os.path.exists(zip_file_path): |
|
print(f"Skipping -- {zip_file_path} already exists") |
|
continue |
|
|
|
with ZipFile(zip_file_path, "w") as zip_file: |
|
|
|
for task_id in os.listdir(full_dir_path): |
|
task_dir = os.path.join(full_dir_path, task_id) |
|
if not os.path.isdir(task_dir): |
|
continue |
|
for sample_id in os.listdir(task_dir): |
|
sample_file = os.path.join(task_dir, sample_id) |
|
if not sample_file.endswith(".py"): |
|
continue |
|
zip_file.write( |
|
sample_file, os.path.join(directory_name, task_id, sample_id) |
|
) |
|
|