leaderboard / utils /encrypt.py
benediktstroebl
added encrypted uploads
45c55a7
import os
import zipfile
import json
from json_encryption import JsonEncryption
from tqdm import tqdm
from huggingface_hub import HfApi
# Create an instance with your password
encryptor = JsonEncryption("hal1234")
# Create encrypted_files directory if it doesn't exist
encrypted_dir = "encrypted_files"
if not os.path.exists(encrypted_dir):
os.makedirs(encrypted_dir)
# Get all JSON files from evals_live directory
json_files = [f for f in os.listdir("evals_live") if f.endswith(".json")]
if not json_files:
print("No files found to encrypt and upload")
exit()
# Initialize Hugging Face API
api = HfApi(token=os.getenv("HF_TOKEN"))
# Process each file
for json_file in tqdm(json_files, desc="Encrypting files", unit="file"):
input_path = os.path.join("evals_live", json_file)
# Read the JSON to get the run_id
with open(input_path) as f:
data = json.load(f)
run_id = data["config"]["run_id"]
encrypted_path = os.path.join(encrypted_dir, json_file)
zip_path = os.path.join(encrypted_dir, f"{run_id}.zip")
try:
# Only encrypt and zip if the zip doesn't exist yet
if not os.path.exists(zip_path):
# Encrypt the JSON file
encryptor.encrypt_json_file(input_path, encrypted_path)
# Create zip archive containing the encrypted file
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
zipf.write(encrypted_path, os.path.basename(encrypted_path))
# Remove the unzipped encrypted file
os.remove(encrypted_path)
# Upload to Hugging Face Hub (attempt for all files)
api.upload_file(
path_or_fileobj=zip_path,
path_in_repo=os.path.basename(zip_path),
repo_id="agent-evals/agent_traces",
repo_type="dataset",
commit_message=f"Add encrypted trace for {json_file}"
)
print(f"Successfully uploaded {zip_path}")
except Exception as e:
print(f"Error processing {json_file}: {str(e)}")
print(f"Processed {len(json_files)} files")