Commit
•
64fdc3c
1
Parent(s):
644a2ce
Swap from token to login button (#12)
Browse files- Swap from token to login button (4e7297a17f9fbb277e6f881d813172ad56d1f21a)
- Update README.md (07763363d510073d7a80ef78580aa4cb5c718547)
Co-authored-by: Apolinário from multimodal AI art <multimodalart@users.noreply.huggingface.co>
README.md
CHANGED
@@ -4,10 +4,15 @@ emoji: 😻
|
|
4 |
colorFrom: gray
|
5 |
colorTo: blue
|
6 |
sdk: gradio
|
7 |
-
sdk_version: 4.
|
8 |
app_file: app.py
|
9 |
pinned: false
|
10 |
license: mit
|
|
|
|
|
|
|
|
|
|
|
11 |
---
|
12 |
|
13 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces#reference
|
|
|
4 |
colorFrom: gray
|
5 |
colorTo: blue
|
6 |
sdk: gradio
|
7 |
+
sdk_version: 4.42.0
|
8 |
app_file: app.py
|
9 |
pinned: false
|
10 |
license: mit
|
11 |
+
hf_oauth: true
|
12 |
+
hf_oauth_scopes:
|
13 |
+
- read-repos
|
14 |
+
- write-repos
|
15 |
+
- manage-repos
|
16 |
---
|
17 |
|
18 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces#reference
|
app.py
CHANGED
@@ -10,16 +10,17 @@ ENDPOINT = "https://huggingface.co"
|
|
10 |
REPO_TYPES = ["model", "dataset", "space"]
|
11 |
|
12 |
|
13 |
-
def duplicate(source_repo, dst_repo,
|
|
|
14 |
try:
|
15 |
if not repo_type in REPO_TYPES:
|
16 |
raise ValueError("need to select valid repo type")
|
17 |
-
_ = whoami(token)
|
18 |
# ^ this will throw if token is invalid
|
19 |
|
20 |
r = requests.post(
|
21 |
f"{ENDPOINT}/api/{repo_type}s/{source_repo}/duplicate",
|
22 |
-
headers=build_hf_headers(token=token),
|
23 |
json={"repository": dst_repo, "private": private},
|
24 |
)
|
25 |
hf_raise_for_status(r)
|
@@ -32,15 +33,7 @@ def duplicate(source_repo, dst_repo, token, repo_type, private):
|
|
32 |
)
|
33 |
|
34 |
except Exception as e:
|
35 |
-
|
36 |
-
f"""
|
37 |
-
### Error 😢😢😢
|
38 |
-
|
39 |
-
{e}
|
40 |
-
""",
|
41 |
-
None,
|
42 |
-
)
|
43 |
-
|
44 |
|
45 |
interface = gr.Interface(
|
46 |
fn=duplicate,
|
@@ -51,7 +44,6 @@ interface = gr.Interface(
|
|
51 |
sumbit_on_select=False,
|
52 |
),
|
53 |
gr.Textbox(placeholder="Destination repository (e.g. osanseviero/dst)"),
|
54 |
-
gr.Textbox(placeholder="Write access token", type="password"),
|
55 |
gr.Dropdown(choices=REPO_TYPES, value="model"),
|
56 |
gr.Checkbox(label="Make new repo private?"),
|
57 |
],
|
@@ -63,7 +55,20 @@ interface = gr.Interface(
|
|
63 |
description="Duplicate a Hugging Face repository! You need to specify a write token obtained in https://hf.co/settings/tokens. This Space is a an experimental demo.",
|
64 |
article="<p>Find your write token at <a href='https://huggingface.co/settings/tokens' target='_blank'>token settings</a></p>",
|
65 |
allow_flagging="never",
|
66 |
-
live=False
|
67 |
)
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
REPO_TYPES = ["model", "dataset", "space"]
|
11 |
|
12 |
|
13 |
+
def duplicate(source_repo, dst_repo, repo_type, private, oauth_token: gr.OAuthToken | None):
|
14 |
+
print(oauth_token.token)
|
15 |
try:
|
16 |
if not repo_type in REPO_TYPES:
|
17 |
raise ValueError("need to select valid repo type")
|
18 |
+
_ = whoami(oauth_token.token)
|
19 |
# ^ this will throw if token is invalid
|
20 |
|
21 |
r = requests.post(
|
22 |
f"{ENDPOINT}/api/{repo_type}s/{source_repo}/duplicate",
|
23 |
+
headers=build_hf_headers(token=oauth_token.token),
|
24 |
json={"repository": dst_repo, "private": private},
|
25 |
)
|
26 |
hf_raise_for_status(r)
|
|
|
33 |
)
|
34 |
|
35 |
except Exception as e:
|
36 |
+
raise gr.Error(f"""Oops, you forgot to login. Please use the loggin button on the top left to migrate your repo {e}""")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
interface = gr.Interface(
|
39 |
fn=duplicate,
|
|
|
44 |
sumbit_on_select=False,
|
45 |
),
|
46 |
gr.Textbox(placeholder="Destination repository (e.g. osanseviero/dst)"),
|
|
|
47 |
gr.Dropdown(choices=REPO_TYPES, value="model"),
|
48 |
gr.Checkbox(label="Make new repo private?"),
|
49 |
],
|
|
|
55 |
description="Duplicate a Hugging Face repository! You need to specify a write token obtained in https://hf.co/settings/tokens. This Space is a an experimental demo.",
|
56 |
article="<p>Find your write token at <a href='https://huggingface.co/settings/tokens' target='_blank'>token settings</a></p>",
|
57 |
allow_flagging="never",
|
58 |
+
live=False
|
59 |
)
|
60 |
+
|
61 |
+
def swap_visibilty(profile: gr.OAuthProfile | None):
|
62 |
+
return gr.update(elem_classes=["main_ui_logged_in"]) if profile else gr.update(elem_classes=["main_ui_logged_out"])
|
63 |
+
|
64 |
+
css = '''
|
65 |
+
.main_ui_logged_out{opacity: 0.3; pointer-events: none}
|
66 |
+
'''
|
67 |
+
with gr.Blocks(css=css) as demo:
|
68 |
+
gr.LoginButton()
|
69 |
+
with gr.Column(elem_classes="main_ui_logged_out") as main_ui:
|
70 |
+
interface.render()
|
71 |
+
demo.load(fn=swap_visibilty, outputs=main_ui)
|
72 |
+
|
73 |
+
demo.queue()
|
74 |
+
demo.launch()
|