anonderpling osanseviero commited on
Commit
5f86e17
·
0 Parent(s):

Duplicate from osanseviero/repo_duplicator

Browse files

Co-authored-by: Omar Sanseviero <[email protected]>

Files changed (7) hide show
  1. .gitattributes +27 -0
  2. .gitignore +1 -0
  3. .vscode/settings.json +4 -0
  4. README.md +14 -0
  5. app.py +62 -0
  6. requirements.txt +1 -0
  7. sp.jpg +0 -0
.gitattributes ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bin.* filter=lfs diff=lfs merge=lfs -text
5
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.model filter=lfs diff=lfs merge=lfs -text
12
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
13
+ *.onnx filter=lfs diff=lfs merge=lfs -text
14
+ *.ot filter=lfs diff=lfs merge=lfs -text
15
+ *.parquet filter=lfs diff=lfs merge=lfs -text
16
+ *.pb filter=lfs diff=lfs merge=lfs -text
17
+ *.pt filter=lfs diff=lfs merge=lfs -text
18
+ *.pth filter=lfs diff=lfs merge=lfs -text
19
+ *.rar filter=lfs diff=lfs merge=lfs -text
20
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
21
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
22
+ *.tflite filter=lfs diff=lfs merge=lfs -text
23
+ *.tgz filter=lfs diff=lfs merge=lfs -text
24
+ *.xz filter=lfs diff=lfs merge=lfs -text
25
+ *.zip filter=lfs diff=lfs merge=lfs -text
26
+ *.zstandard filter=lfs diff=lfs merge=lfs -text
27
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ .env/
.vscode/settings.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "python.formatting.provider": "black"
4
+ }
README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Repo_duplicator
3
+ emoji: 😻
4
+ colorFrom: gray
5
+ colorTo: blue
6
+ sdk: gradio
7
+ sdk_version: 3.12.0
8
+ app_file: app.py
9
+ pinned: false
10
+ license: mit
11
+ duplicated_from: osanseviero/repo_duplicator
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces#reference
app.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import requests
3
+ from huggingface_hub import whoami
4
+ from huggingface_hub.utils import build_hf_headers, hf_raise_for_status
5
+
6
+ ENDPOINT = "https://huggingface.co"
7
+ # ENDPOINT = "http://localhost:5564"
8
+
9
+ REPO_TYPES = ["model", "dataset", "space"]
10
+
11
+
12
+ def duplicate(source_repo, dst_repo, token, repo_type):
13
+ try:
14
+ if not repo_type in REPO_TYPES:
15
+ raise ValueError("need to select valid repo type")
16
+ _ = whoami(token)
17
+ # ^ this will throw if token is invalid
18
+
19
+ r = requests.post(
20
+ f"{ENDPOINT}/api/{repo_type}s/{source_repo}/duplicate",
21
+ headers=build_hf_headers(token=token),
22
+ json={"repository": dst_repo},
23
+ )
24
+ hf_raise_for_status(r)
25
+
26
+ repo_url = r.json().get("url")
27
+
28
+ return (
29
+ f'Find your repo <a href=\'{repo_url}\' target="_blank" style="text-decoration:underline">here</a>',
30
+ "sp.jpg",
31
+ )
32
+
33
+ except Exception as e:
34
+ return (
35
+ f"""
36
+ ### Error 😢😢😢
37
+
38
+ {e}
39
+ """,
40
+ None,
41
+ )
42
+
43
+
44
+ interface = gr.Interface(
45
+ fn=duplicate,
46
+ inputs=[
47
+ gr.Textbox(placeholder="Source repository (e.g. osanseviero/src)"),
48
+ gr.Textbox(placeholder="Destination repository (e.g. osanseviero/dst)"),
49
+ gr.Textbox(placeholder="Write access token", type="password"),
50
+ gr.Dropdown(choices=REPO_TYPES, value="model"),
51
+ ],
52
+ outputs=[
53
+ gr.Markdown(label="output"),
54
+ gr.Image(show_label=False),
55
+ ],
56
+ title="Duplicate your repo!",
57
+ 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.",
58
+ article="<p>Find your write token at <a href='https://huggingface.co/settings/tokens' target='_blank'>token settings</a></p>",
59
+ allow_flagging="never",
60
+ live=False,
61
+ )
62
+ interface.launch(enable_queue=True)
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ huggingface_hub==0.11.0
sp.jpg ADDED