MY_Translator / hf_upload_models.py
shadowsilence's picture
Upload folder using huggingface_hub
fba0a90 verified
import os
from huggingface_hub import HfApi
# Configuration
REPO_ID = "shadowsilence/burmese-english-translator"
REPO_TYPE = "space"
PROJECT_ROOT = "/Users/htutkoko/Library/CloudStorage/GoogleDrive-htutkoko1994@gmail.com/My Drive/NLP/Project_A3/A3_Burmese_English_Puffer"
APP_PATH = os.path.join(PROJECT_ROOT, "app")
api = HfApi()
print(f"Starting FULL CLEANUP and RE-DEPLOYMENT to {REPO_ID}...")
# 1. Nuclear Option: Delete ALL existing files on the Hub to start fresh
try:
print("Listing existing files on Hub...")
all_files = api.list_repo_files(repo_id=REPO_ID, repo_type=REPO_TYPE)
# Identify top-level items to delete to clean the repo
# We delete paths that don't look like hidden git files
paths_to_delete = []
for f in all_files:
# Get the top-level part of the path
parts = f.split('/')
root_item = parts[0]
if root_item not in ['.gitattributes', '.gitignore', 'README.md'] and root_item not in paths_to_delete:
paths_to_delete.append(root_item)
print(f"Deleting the following root items: {paths_to_delete}")
for item in paths_to_delete:
try:
# Try deleting as a folder first (most common for 'app', 'models')
print(f"Deleting folder: {item}...")
api.delete_folder(repo_id=REPO_ID, repo_type=REPO_TYPE, folder_path=item)
except:
# Fallback to file delete
try:
print(f"Deleting file: {item}...")
api.delete_file(repo_id=REPO_ID, repo_type=REPO_TYPE, path_in_repo=item)
except Exception as e:
print(f"Could not delete {item}: {e}")
print("Cleanup complete. Starting fresh upload...")
# 2. Upload Dockerfile and requirements.txt to root
files_to_upload = ["Dockerfile", "requirements.txt"]
for file in files_to_upload:
local_path = os.path.join(PROJECT_ROOT, file)
if os.path.exists(local_path):
print(f"Uploading {file}...")
api.upload_file(
path_or_fileobj=local_path,
path_in_repo=file,
repo_id=REPO_ID,
repo_type=REPO_TYPE
)
# 3. Upload the entire 'app' directory (code + models + static)
print("Uploading 'app' directory (this may take a moment)...")
api.upload_folder(
folder_path=APP_PATH,
path_in_repo="app",
repo_id=REPO_ID,
repo_type=REPO_TYPE,
commit_message="Full clean redeploy with verified models",
# Explicitly allow everything we need
allow_patterns=["**"]
)
print("SUCCESS: Full redeployment finished!")
except Exception as e:
print(f"Deployment failed: {e}")