Spaces:
Runtime error
Runtime error
File size: 3,734 Bytes
b319409 b8e59c5 b319409 b8e59c5 b319409 b8e59c5 b319409 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
import gradio as gr
from huggingface_hub import HfApi, create_repo, upload_file
import os
# Global variable for storing the token (persistent while app runs)
hf_token = None
def save_token(token):
global hf_token
hf_token = token.strip()
return f"Token saved! You can now manage your Spaces."
def manage_space(space_name, app_code, req_code):
global hf_token
if not hf_token:
return "Please provide a valid Hugging Face token first."
if not space_name.strip():
return "Error: Space name is required."
if not app_code.strip() or not req_code.strip():
return "Error: Both `app.py` and `requirements.txt` code are required."
api = HfApi()
try:
# Authenticate using the token
user_info = api.whoami(token=hf_token)
space_full_name = f"{user_info['name']}/{space_name.strip()}"
# Check if Space exists or create a new one
try:
api.repo_info(repo_id=space_full_name, repo_type="space", token=hf_token)
message = f"Space '{space_full_name}' exists. Updating files..."
except:
create_repo(repo_id=space_name.strip(), repo_type="space", space_sdk="streamlit", token=hf_token)
message = f"Space '{space_full_name}' did not exist. Created a new Space."
# Upload `app.py`
with open("app.py", "w") as app_file:
app_file.write(app_code.strip())
upload_file(
path_or_fileobj="app.py",
path_in_repo="app.py",
repo_id=space_full_name,
repo_type="space",
token=hf_token
)
# Upload `requirements.txt`
with open("requirements.txt", "w") as req_file:
req_file.write(req_code.strip())
upload_file(
path_or_fileobj="requirements.txt",
path_in_repo="requirements.txt",
repo_id=space_full_name,
repo_type="space",
token=hf_token
)
# Clean up temporary files
os.remove("app.py")
os.remove("requirements.txt")
return f"{message}\nFiles successfully updated in Space '{space_full_name}'!"
except Exception as e:
return f"An error occurred: {e}"
# Gradio interface
token_input = gr.Textbox(label="Hugging Face Token", type="password", placeholder="Enter your token here")
save_token_button = gr.Button("Save Token")
space_name_input = gr.Textbox(label="Space Name", placeholder="Enter the name of your Space")
app_code_input = gr.Textbox(label="app.py Code", lines=15, placeholder="Paste your app.py code here")
req_code_input = gr.Textbox(label="requirements.txt Code", lines=5, placeholder="Paste your requirements.txt content here")
manage_button = gr.Button("Commit Changes")
output = gr.Textbox(label="Output", lines=5)
save_token_interface = gr.Interface(fn=save_token, inputs=token_input, outputs=output)
manage_space_interface = gr.Interface(
fn=manage_space,
inputs=[space_name_input, app_code_input, req_code_input],
outputs=output
)
app = gr.Blocks()
with app:
with gr.Row(): # Row instead of Box for layout
gr.Markdown("# Hugging Face Helper")
with gr.Column(): # Use Column for vertical alignment
gr.Markdown("### Step 1: Save Your Hugging Face Token")
token_input.render()
save_token_button.render()
save_token_interface.render()
with gr.Column(): # Use Column for vertical alignment
gr.Markdown("### Step 2: Manage Your Hugging Face Space")
space_name_input.render()
app_code_input.render()
req_code_input.render()
manage_button.render()
manage_space_interface.render()
# Launch the Gradio app
app.launch()
|