wuhp commited on
Commit
b30fcaa
Β·
verified Β·
1 Parent(s): feb3672

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -31
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: gr.OAuthProfile | None,
13
- token: gr.OAuthToken | None
14
- ) -> str:
15
- if profile is None:
16
- return "*Not logged in.*"
17
- return f"βœ… Logged in as **{profile.username}**"
18
 
19
- demo.load(fn=show_profile, inputs=[login_btn], outputs=[status_md])
20
- login_btn.click(fn=show_profile, inputs=[login_btn], outputs=[status_md])
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(fn=enable_create, inputs=[login_btn], outputs=[create_btn])
36
- login_btn.click(fn=enable_create, inputs=[login_btn], outputs=[create_btn])
37
 
38
  def create_space(
39
  name: str,
40
- profile: gr.OAuthProfile | None,
41
- token: gr.OAuthToken | None
42
  ) -> tuple[str,str,str]:
43
- if profile is None or token is None:
44
- return (
45
- "",
46
- "⚠️ Please sign in first.",
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=token.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, login_btn],
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