Spaces:
Running
on
Zero
Running
on
Zero
import os | |
from huggingface_hub import hf_hub_download | |
def load_script(file_str: str): | |
""" | |
file_str: something like 'myorg/myrepo/mysubfolder/myscript.py' | |
This function downloads the file from the Hugging Face Hub into ./ (current directory). | |
""" | |
try: | |
# Split the path by "/" | |
parts = file_str.split("/") | |
if len(parts) < 3: | |
raise ValueError( | |
f"Invalid file specification '{file_str}'. " | |
f"Expected format: 'repo_id/[subfolder]/filename'" | |
) | |
# First two parts form the repo_id (e.g. 'myorg/myrepo') | |
repo_id = "/".join(parts[:2]) | |
# Last part is the actual filename (e.g. 'myscript.py') | |
filename = parts[-1] | |
# Anything between the second and last parts is a subfolder path | |
subfolder = None | |
if len(parts) > 3: | |
subfolder = "/".join(parts[2:-1]) | |
# Retrieve HF token from environment | |
hf_token = os.getenv("HF_TOKEN", None) | |
# Download the file into current directory "." | |
file_path = hf_hub_download( | |
repo_id=repo_id, | |
filename=filename, | |
subfolder=subfolder, | |
token=hf_token, | |
local_dir="." # Download into current directory | |
) | |
print(f"Downloaded {filename} from {repo_id} to {file_path}") | |
return file_path | |
except Exception as e: | |
print(f"Error downloading the script '{file_str}': {e}") | |
return None | |
def load_scripts(): | |
""" | |
1. Get the path of the 'FILE_LIST' file from the environment variable FILE_LIST. | |
2. Download that file list using load_script(). | |
3. Read its lines, and each line is another file to be downloaded using load_script(). | |
4. After all lines are downloaded, execute the last file. | |
""" | |
file_list = os.getenv("FILE_LIST", "").strip() | |
if not file_list: | |
print("No FILE_LIST environment variable set. Nothing to download.") | |
return | |
# Step 1: Download the file list itself | |
file_list_path = load_script(file_list) | |
if not file_list_path or not os.path.exists(file_list_path): | |
print(f"Could not download or find file list: {file_list_path}") | |
return | |
# Step 2: Read each line in the downloaded file list | |
try: | |
with open(file_list_path, 'r') as f: | |
lines = [line.strip() for line in f if line.strip()] | |
except Exception as e: | |
print(f"Error reading file list: {e}") | |
return | |
# Step 3: Download each file from the lines | |
downloaded_files = [] | |
for file_str in lines: | |
file_path = load_script(file_str) | |
if file_path: | |
downloaded_files.append(file_path) | |
# Step 4: Execute the last downloaded file | |
if downloaded_files: | |
last_file_path = downloaded_files[-1] | |
print(f"Executing the last downloaded script: {last_file_path}") | |
try: | |
with open(last_file_path, 'r') as f: | |
exec(f.read(), globals()) | |
except Exception as e: | |
print(f"Error executing the last downloaded script: {e}") | |
# Run the load_scripts function | |
load_scripts() | |