Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,66 +1,51 @@
|
|
1 |
import gradio as gr
|
2 |
from huggingface_hub import create_repo
|
3 |
|
4 |
-
state_store = {}
|
5 |
-
|
6 |
with gr.Blocks(title="HF Space Creator") as demo:
|
7 |
-
# β Login UI β
|
8 |
login_btn = gr.LoginButton(variant="huggingface", size="lg")
|
9 |
status_md = gr.Markdown("*Not logged in.*")
|
10 |
|
11 |
-
def show_profile(
|
12 |
-
profile
|
13 |
-
|
14 |
-
) -> str:
|
15 |
-
if profile is None:
|
16 |
-
return "*Not logged in.*"
|
17 |
-
return f"β
Logged in as **{profile.username}**"
|
18 |
|
19 |
-
demo.load(
|
20 |
-
login_btn.click(
|
21 |
|
22 |
-
# β Repo creation UI β
|
23 |
repo_name = gr.Textbox(label="New Space name", placeholder="your-repo-name")
|
24 |
create_btn = gr.Button("Create Space", interactive=False)
|
25 |
session_id = gr.Textbox(value="", visible=False)
|
26 |
logs = gr.Textbox(label="Logs", interactive=False, lines=5)
|
27 |
preview_iframe = gr.HTML("<p>No Space created yet.</p>")
|
28 |
|
29 |
-
def enable_create(
|
30 |
-
profile: gr.OAuthProfile | None,
|
31 |
-
token: gr.OAuthToken | None
|
32 |
-
):
|
33 |
return gr.update(interactive=(profile is not None))
|
34 |
|
35 |
-
demo.load(
|
36 |
-
login_btn.click(
|
37 |
|
38 |
def create_space(
|
39 |
name: str,
|
40 |
-
|
41 |
-
token: gr.OAuthToken | None
|
42 |
) -> tuple[str,str,str]:
|
43 |
-
if
|
44 |
-
return
|
45 |
-
|
46 |
-
|
47 |
-
"<p>No Space created yet.</p>"
|
48 |
-
)
|
49 |
-
repo_id = f"{profile.username}/{name}"
|
50 |
create_repo(
|
51 |
repo_id=repo_id,
|
52 |
-
token=
|
53 |
exist_ok=True,
|
54 |
repo_type="space"
|
55 |
)
|
56 |
url = f"https://huggingface.co/spaces/{repo_id}"
|
57 |
logmsg = f"β
Created or found Space: {url}"
|
58 |
-
iframe= f'<iframe src="{url}" width="100%" height="500px"></iframe>'
|
59 |
return repo_id, logmsg, iframe
|
60 |
|
61 |
create_btn.click(
|
62 |
fn=create_space,
|
63 |
-
inputs=[repo_name
|
64 |
outputs=[session_id, logs, preview_iframe]
|
65 |
)
|
66 |
|
|
|
1 |
import gradio as gr
|
2 |
from huggingface_hub import create_repo
|
3 |
|
|
|
|
|
4 |
with gr.Blocks(title="HF Space Creator") as demo:
|
|
|
5 |
login_btn = gr.LoginButton(variant="huggingface", size="lg")
|
6 |
status_md = gr.Markdown("*Not logged in.*")
|
7 |
|
8 |
+
def show_profile(profile: gr.OAuthProfile | None) -> str:
|
9 |
+
return "*Not logged in.*" if profile is None \
|
10 |
+
else f"β
Logged in as **{profile.username}**"
|
|
|
|
|
|
|
|
|
11 |
|
12 |
+
demo.load(show_profile, inputs=None, outputs=status_md)
|
13 |
+
login_btn.click(show_profile, inputs=None, outputs=status_md)
|
14 |
|
|
|
15 |
repo_name = gr.Textbox(label="New Space name", placeholder="your-repo-name")
|
16 |
create_btn = gr.Button("Create Space", interactive=False)
|
17 |
session_id = gr.Textbox(value="", visible=False)
|
18 |
logs = gr.Textbox(label="Logs", interactive=False, lines=5)
|
19 |
preview_iframe = gr.HTML("<p>No Space created yet.</p>")
|
20 |
|
21 |
+
def enable_create(profile: gr.OAuthProfile | None):
|
|
|
|
|
|
|
22 |
return gr.update(interactive=(profile is not None))
|
23 |
|
24 |
+
demo.load(enable_create, inputs=None, outputs=create_btn)
|
25 |
+
login_btn.click(enable_create, inputs=None, outputs=create_btn)
|
26 |
|
27 |
def create_space(
|
28 |
name: str,
|
29 |
+
oauth_token: gr.OAuthToken | None
|
|
|
30 |
) -> tuple[str,str,str]:
|
31 |
+
if oauth_token is None:
|
32 |
+
return "", "β οΈ Please sign in first.", "<p>No Space created yet.</p>"
|
33 |
+
username = oauth_token.user_info["username"]
|
34 |
+
repo_id = f"{username}/{name}"
|
|
|
|
|
|
|
35 |
create_repo(
|
36 |
repo_id=repo_id,
|
37 |
+
token=oauth_token.token,
|
38 |
exist_ok=True,
|
39 |
repo_type="space"
|
40 |
)
|
41 |
url = f"https://huggingface.co/spaces/{repo_id}"
|
42 |
logmsg = f"β
Created or found Space: {url}"
|
43 |
+
iframe = f'<iframe src="{url}" width="100%" height="500px"></iframe>'
|
44 |
return repo_id, logmsg, iframe
|
45 |
|
46 |
create_btn.click(
|
47 |
fn=create_space,
|
48 |
+
inputs=[repo_name],
|
49 |
outputs=[session_id, logs, preview_iframe]
|
50 |
)
|
51 |
|