Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -27,7 +27,7 @@ def enable_create(
|
|
27 |
profile: gr.OAuthProfile | None,
|
28 |
oauth_token: gr.OAuthToken | None
|
29 |
):
|
30 |
-
|
31 |
return gr.update(interactive=profile is not None)
|
32 |
|
33 |
def enable_repo_actions(
|
@@ -35,7 +35,7 @@ def enable_repo_actions(
|
|
35 |
profile: gr.OAuthProfile | None,
|
36 |
oauth_token: gr.OAuthToken | None
|
37 |
):
|
38 |
-
|
39 |
return gr.update(interactive=bool(repo_id and profile and oauth_token))
|
40 |
|
41 |
# — CORE ACTIONS —
|
@@ -46,7 +46,7 @@ def create_space(
|
|
46 |
profile: gr.OAuthProfile | None,
|
47 |
oauth_token: gr.OAuthToken | None
|
48 |
) -> tuple[str, str, str]:
|
49 |
-
if profile
|
50 |
return "", "⚠️ Please log in first.", "<p>No Space created yet.</p>"
|
51 |
repo_id = f"{profile.username}/{repo_name}"
|
52 |
create_repo(
|
@@ -62,17 +62,17 @@ def create_space(
|
|
62 |
return repo_id, logmsg, iframe
|
63 |
|
64 |
def upload_file_to_space(
|
65 |
-
file,
|
66 |
path_in_repo: str,
|
67 |
repo_id: str,
|
68 |
profile: gr.OAuthProfile | None,
|
69 |
oauth_token: gr.OAuthToken | None
|
70 |
) -> str:
|
71 |
-
if profile
|
72 |
return "⚠️ Please log in first."
|
73 |
if not repo_id:
|
74 |
return "⚠️ Please create a Space first."
|
75 |
-
if file
|
76 |
return "⚠️ No file selected."
|
77 |
upload_file(
|
78 |
path_or_fileobj=file.name,
|
@@ -88,15 +88,15 @@ def get_space_logs(
|
|
88 |
profile: gr.OAuthProfile | None,
|
89 |
oauth_token: gr.OAuthToken | None
|
90 |
) -> str:
|
91 |
-
if profile
|
92 |
return "⚠️ Please log in and create a Space first."
|
93 |
-
|
94 |
-
|
95 |
-
|
|
|
96 |
if resp.status_code != 200:
|
97 |
return f"❌ Failed to fetch logs ({resp.status_code})"
|
98 |
-
|
99 |
-
return "\n".join(e.get("text","") for e in entries)
|
100 |
|
101 |
# — BUILD THE UI —
|
102 |
|
@@ -114,15 +114,16 @@ with gr.Blocks(title="HF OAuth + Space Manager") as demo:
|
|
114 |
login_btn = gr.LoginButton(variant="huggingface", size="lg")
|
115 |
status_md = gr.Markdown("*Not logged in.*")
|
116 |
models_md = gr.Markdown()
|
117 |
-
demo.load(show_profile,
|
118 |
-
login_btn.click(show_profile,
|
119 |
-
demo.load(list_private_models,
|
120 |
-
login_btn.click(list_private_models,
|
|
|
121 |
|
122 |
# — CREATE SPACE —
|
123 |
repo_name = gr.Textbox(label="New Space name", placeholder="my-space")
|
124 |
sdk_selector = gr.Radio(
|
125 |
-
choices=["gradio",
|
126 |
value="gradio",
|
127 |
label="Space template (SDK)"
|
128 |
)
|
@@ -131,13 +132,13 @@ with gr.Blocks(title="HF OAuth + Space Manager") as demo:
|
|
131 |
create_logs = gr.Textbox(label="Create Logs", interactive=False, lines=3)
|
132 |
preview = gr.HTML("<p>No Space created yet.</p>")
|
133 |
|
134 |
-
# enable create_btn
|
135 |
-
demo.load(enable_create,
|
136 |
-
login_btn.click(enable_create, inputs=
|
137 |
|
138 |
create_btn.click(
|
139 |
fn=create_space,
|
140 |
-
inputs=[repo_name, sdk_selector,
|
141 |
outputs=[session_id, create_logs, preview]
|
142 |
)
|
143 |
|
@@ -147,20 +148,20 @@ with gr.Blocks(title="HF OAuth + Space Manager") as demo:
|
|
147 |
upload_btn = gr.Button("Upload File", interactive=False)
|
148 |
upload_logs = gr.Textbox(label="Upload Logs", interactive=False, lines=2)
|
149 |
|
150 |
-
# enable upload_btn
|
151 |
-
demo.load(enable_repo_actions,
|
152 |
-
inputs=[session_id
|
153 |
outputs=[upload_btn])
|
154 |
-
login_btn.click(enable_repo_actions,
|
155 |
-
inputs=[session_id, login_btn],
|
156 |
-
outputs=[upload_btn])
|
157 |
session_id.change(enable_repo_actions,
|
158 |
-
inputs=[session_id
|
159 |
outputs=[upload_btn])
|
|
|
|
|
|
|
160 |
|
161 |
upload_btn.click(
|
162 |
fn=upload_file_to_space,
|
163 |
-
inputs=[file_uploader, path_in_repo, session_id
|
164 |
outputs=[upload_logs]
|
165 |
)
|
166 |
|
@@ -168,19 +169,19 @@ with gr.Blocks(title="HF OAuth + Space Manager") as demo:
|
|
168 |
logs_btn = gr.Button("Get Space Logs", interactive=False)
|
169 |
space_logs_md = gr.Textbox(label="Space Logs", interactive=False, lines=10)
|
170 |
|
171 |
-
demo.load(enable_repo_actions,
|
172 |
-
inputs=[session_id
|
173 |
outputs=[logs_btn])
|
174 |
-
login_btn.click(enable_repo_actions,
|
175 |
-
inputs=[session_id, login_btn],
|
176 |
-
outputs=[logs_btn])
|
177 |
session_id.change(enable_repo_actions,
|
178 |
-
inputs=[session_id
|
179 |
outputs=[logs_btn])
|
|
|
|
|
|
|
180 |
|
181 |
logs_btn.click(
|
182 |
fn=get_space_logs,
|
183 |
-
inputs=[session_id
|
184 |
outputs=[space_logs_md]
|
185 |
)
|
186 |
|
|
|
27 |
profile: gr.OAuthProfile | None,
|
28 |
oauth_token: gr.OAuthToken | None
|
29 |
):
|
30 |
+
# Called with no inputs→Gradio auto‑injects profile & token
|
31 |
return gr.update(interactive=profile is not None)
|
32 |
|
33 |
def enable_repo_actions(
|
|
|
35 |
profile: gr.OAuthProfile | None,
|
36 |
oauth_token: gr.OAuthToken | None
|
37 |
):
|
38 |
+
# Called with inputs=[session_id]→Gradio injects profile & token
|
39 |
return gr.update(interactive=bool(repo_id and profile and oauth_token))
|
40 |
|
41 |
# — CORE ACTIONS —
|
|
|
46 |
profile: gr.OAuthProfile | None,
|
47 |
oauth_token: gr.OAuthToken | None
|
48 |
) -> tuple[str, str, str]:
|
49 |
+
if not profile or not oauth_token:
|
50 |
return "", "⚠️ Please log in first.", "<p>No Space created yet.</p>"
|
51 |
repo_id = f"{profile.username}/{repo_name}"
|
52 |
create_repo(
|
|
|
62 |
return repo_id, logmsg, iframe
|
63 |
|
64 |
def upload_file_to_space(
|
65 |
+
file,
|
66 |
path_in_repo: str,
|
67 |
repo_id: str,
|
68 |
profile: gr.OAuthProfile | None,
|
69 |
oauth_token: gr.OAuthToken | None
|
70 |
) -> str:
|
71 |
+
if not profile or not oauth_token:
|
72 |
return "⚠️ Please log in first."
|
73 |
if not repo_id:
|
74 |
return "⚠️ Please create a Space first."
|
75 |
+
if not file:
|
76 |
return "⚠️ No file selected."
|
77 |
upload_file(
|
78 |
path_or_fileobj=file.name,
|
|
|
88 |
profile: gr.OAuthProfile | None,
|
89 |
oauth_token: gr.OAuthToken | None
|
90 |
) -> str:
|
91 |
+
if not profile or not oauth_token or not repo_id:
|
92 |
return "⚠️ Please log in and create a Space first."
|
93 |
+
resp = requests.get(
|
94 |
+
f"https://huggingface.co/api/spaces/{repo_id}/logs",
|
95 |
+
headers={"Authorization": f"Bearer {oauth_token.token}"}
|
96 |
+
)
|
97 |
if resp.status_code != 200:
|
98 |
return f"❌ Failed to fetch logs ({resp.status_code})"
|
99 |
+
return "\n".join(entry.get("text","") for entry in resp.json())
|
|
|
100 |
|
101 |
# — BUILD THE UI —
|
102 |
|
|
|
114 |
login_btn = gr.LoginButton(variant="huggingface", size="lg")
|
115 |
status_md = gr.Markdown("*Not logged in.*")
|
116 |
models_md = gr.Markdown()
|
117 |
+
demo.load(show_profile, inputs=None, outputs=status_md)
|
118 |
+
login_btn.click(show_profile, inputs=None, outputs=status_md)
|
119 |
+
demo.load(list_private_models, inputs=None, outputs=models_md)
|
120 |
+
login_btn.click(list_private_models,
|
121 |
+
inputs=None, outputs=models_md)
|
122 |
|
123 |
# — CREATE SPACE —
|
124 |
repo_name = gr.Textbox(label="New Space name", placeholder="my-space")
|
125 |
sdk_selector = gr.Radio(
|
126 |
+
choices=["gradio","streamlit"],
|
127 |
value="gradio",
|
128 |
label="Space template (SDK)"
|
129 |
)
|
|
|
132 |
create_logs = gr.Textbox(label="Create Logs", interactive=False, lines=3)
|
133 |
preview = gr.HTML("<p>No Space created yet.</p>")
|
134 |
|
135 |
+
# enable create_btn once logged in
|
136 |
+
demo.load(enable_create, inputs=None, outputs=[create_btn])
|
137 |
+
login_btn.click(enable_create, inputs=None, outputs=[create_btn])
|
138 |
|
139 |
create_btn.click(
|
140 |
fn=create_space,
|
141 |
+
inputs=[repo_name, sdk_selector], # only non‑OAuth inputs
|
142 |
outputs=[session_id, create_logs, preview]
|
143 |
)
|
144 |
|
|
|
148 |
upload_btn = gr.Button("Upload File", interactive=False)
|
149 |
upload_logs = gr.Textbox(label="Upload Logs", interactive=False, lines=2)
|
150 |
|
151 |
+
# enable upload_btn once space exists & logged in
|
152 |
+
demo.load(enable_repo_actions,
|
153 |
+
inputs=[session_id], # only non‑OAuth inputs
|
154 |
outputs=[upload_btn])
|
|
|
|
|
|
|
155 |
session_id.change(enable_repo_actions,
|
156 |
+
inputs=[session_id],
|
157 |
outputs=[upload_btn])
|
158 |
+
login_btn.click(enable_repo_actions,
|
159 |
+
inputs=[session_id],
|
160 |
+
outputs=[upload_btn])
|
161 |
|
162 |
upload_btn.click(
|
163 |
fn=upload_file_to_space,
|
164 |
+
inputs=[file_uploader, path_in_repo, session_id],
|
165 |
outputs=[upload_logs]
|
166 |
)
|
167 |
|
|
|
169 |
logs_btn = gr.Button("Get Space Logs", interactive=False)
|
170 |
space_logs_md = gr.Textbox(label="Space Logs", interactive=False, lines=10)
|
171 |
|
172 |
+
demo.load(enable_repo_actions,
|
173 |
+
inputs=[session_id],
|
174 |
outputs=[logs_btn])
|
|
|
|
|
|
|
175 |
session_id.change(enable_repo_actions,
|
176 |
+
inputs=[session_id],
|
177 |
outputs=[logs_btn])
|
178 |
+
login_btn.click(enable_repo_actions,
|
179 |
+
inputs=[session_id],
|
180 |
+
outputs=[logs_btn])
|
181 |
|
182 |
logs_btn.click(
|
183 |
fn=get_space_logs,
|
184 |
+
inputs=[session_id],
|
185 |
outputs=[space_logs_md]
|
186 |
)
|
187 |
|