openfree commited on
Commit
95199fe
ยท
verified ยท
1 Parent(s): 424cea8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +116 -51
app.py CHANGED
@@ -7,16 +7,30 @@ from pathlib import Path
7
  sys.path.insert(0, str(Path(__file__).parent))
8
  from repo_to_space_auto import deploy
9
 
10
- def launch_deploy(repo_url, private, request: gr.Request):
11
- """HF OAuth ํ† ํฐ์œผ๋กœ Space ๋ฐฐํฌ"""
12
- # OAuth๋กœ ๋ฐ›์€ ํ† ํฐ ํ™•์ธ
13
- hf_token = request.headers.get("x-oauth-identity")
14
-
15
- if not hf_token:
16
  return """### โŒ ๋กœ๊ทธ์ธ ํ•„์š”
17
 
18
  ์ƒ๋‹จ์˜ 'Sign in with Hugging Face' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ๋กœ๊ทธ์ธํ•ด์ฃผ์„ธ์š”."""
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  # ๊ธฐ์กด ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐฑ์—… ๋ฐ ์ž„์‹œ ์„ค์ •
21
  old_token = os.environ.get("HF_TOKEN")
22
  os.environ["HF_TOKEN"] = hf_token
@@ -64,47 +78,108 @@ with gr.Blocks(
64
  ๊ณต๊ฐœ Git ์ €์žฅ์†Œ๋ฅผ Hugging Face Gradio Space๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜๊ณ  ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
65
 
66
  ## ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
67
- 1. **Hugging Face ๋กœ๊ทธ์ธ** (์ƒ๋‹จ ์šฐ์ธก ๋ฒ„ํŠผ)
68
- 2. Repository URL ์ž…๋ ฅ
69
- 3. Deploy ๋ฒ„ํŠผ ํด๋ฆญ
70
 
71
  ---
72
  """)
73
 
74
  with gr.Column(elem_classes="main-container"):
75
- # ๋กœ๊ทธ์ธ ์ƒํƒœ ํ‘œ์‹œ
76
- gr.LoginButton(
77
- value="Sign in with Hugging Face ๐Ÿค—",
78
- variant="primary",
79
- size="lg"
80
- )
81
-
82
- gr.Markdown("### ๐Ÿ“ ๋ฐฐํฌ ์„ค์ •")
83
-
84
- repo_input = gr.Textbox(
85
- label="Git Repository URL",
86
- placeholder="https://github.com/username/repository",
87
- info="๊ณต๊ฐœ ์ €์žฅ์†Œ URL์„ ์ž…๋ ฅํ•˜์„ธ์š”"
88
- )
89
-
90
- private_checkbox = gr.Checkbox(
91
- label="๐Ÿ”’ Private Space๋กœ ์ƒ์„ฑ",
92
- value=False,
93
- info="์ฒดํฌํ•˜๋ฉด ๋น„๊ณต๊ฐœ Space๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค"
94
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
 
96
- deploy_btn = gr.Button(
97
- "๐Ÿš€ Deploy to Space",
98
- variant="primary",
99
- size="lg"
100
- )
101
-
102
- output_status = gr.Markdown(
103
- elem_classes="status-box",
104
- visible=False
105
- )
106
-
107
- # ์˜ˆ์‹œ ๋ฐ ๋„์›€๋ง
108
  gr.Markdown("""
109
  ### ๐Ÿ’ก ์˜ˆ์‹œ
110
  - `https://github.com/gradio-app/gradio`
@@ -115,16 +190,6 @@ with gr.Blocks(
115
  - Space ์ด๋ฆ„์€ repository ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค
116
  - GPU๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ Space ์ƒ์„ฑ ํ›„ ์ˆ˜๋™ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
117
  """)
118
-
119
- # ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
120
- deploy_btn.click(
121
- fn=launch_deploy,
122
- inputs=[repo_input, private_checkbox],
123
- outputs=output_status
124
- ).then(
125
- fn=lambda: gr.update(visible=True),
126
- outputs=output_status
127
- )
128
 
129
  if __name__ == "__main__":
130
  demo.launch(
 
7
  sys.path.insert(0, str(Path(__file__).parent))
8
  from repo_to_space_auto import deploy
9
 
10
+ # OAuth ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ
11
+ OAUTH_ENABLED = os.getenv("OAUTH_CLIENT_ID") is not None
12
+
13
+ def launch_deploy_oauth(repo_url, private, profile: gr.OAuthProfile | None):
14
+ """OAuth ์ธ์ฆ ๋ฒ„์ „"""
15
+ if not profile:
16
  return """### โŒ ๋กœ๊ทธ์ธ ํ•„์š”
17
 
18
  ์ƒ๋‹จ์˜ 'Sign in with Hugging Face' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ๋กœ๊ทธ์ธํ•ด์ฃผ์„ธ์š”."""
19
 
20
+ hf_token = profile.token
21
+ return _deploy_space(repo_url, hf_token, private)
22
+
23
+ def launch_deploy_manual(repo_url, hf_token, private):
24
+ """์ˆ˜๋™ ํ† ํฐ ์ž…๋ ฅ ๋ฒ„์ „"""
25
+ if not hf_token:
26
+ return """### โŒ ํ† ํฐ ํ•„์š”
27
+
28
+ Hugging Face Write ํ† ํฐ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."""
29
+
30
+ return _deploy_space(repo_url, hf_token, private)
31
+
32
+ def _deploy_space(repo_url, hf_token, private):
33
+ """๊ณตํ†ต ๋ฐฐํฌ ๋กœ์ง"""
34
  # ๊ธฐ์กด ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐฑ์—… ๋ฐ ์ž„์‹œ ์„ค์ •
35
  old_token = os.environ.get("HF_TOKEN")
36
  os.environ["HF_TOKEN"] = hf_token
 
78
  ๊ณต๊ฐœ Git ์ €์žฅ์†Œ๋ฅผ Hugging Face Gradio Space๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜๊ณ  ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
79
 
80
  ## ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
81
+ 1. **์ธ์ฆ**: OAuth ๋กœ๊ทธ์ธ ๋˜๋Š” ํ† ํฐ ์ž…๋ ฅ
82
+ 2. **Repository URL ์ž…๋ ฅ**
83
+ 3. **Deploy ๋ฒ„ํŠผ ํด๋ฆญ**
84
 
85
  ---
86
  """)
87
 
88
  with gr.Column(elem_classes="main-container"):
89
+ if OAUTH_ENABLED:
90
+ # OAuth ๋ฒ„์ „
91
+ gr.LoginButton(
92
+ value="Sign in with Hugging Face ๐Ÿค—",
93
+ variant="primary",
94
+ size="lg"
95
+ )
96
+
97
+ gr.Markdown("### ๐Ÿ“ ๋ฐฐํฌ ์„ค์ •")
98
+
99
+ repo_input = gr.Textbox(
100
+ label="Git Repository URL",
101
+ placeholder="https://github.com/username/repository",
102
+ info="๊ณต๊ฐœ ์ €์žฅ์†Œ URL์„ ์ž…๋ ฅํ•˜์„ธ์š”"
103
+ )
104
+
105
+ private_checkbox = gr.Checkbox(
106
+ label="๐Ÿ”’ Private Space๋กœ ์ƒ์„ฑ",
107
+ value=False,
108
+ info="์ฒดํฌํ•˜๋ฉด ๋น„๊ณต๊ฐœ Space๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค"
109
+ )
110
+
111
+ deploy_btn = gr.Button(
112
+ "๐Ÿš€ Deploy to Space",
113
+ variant="primary",
114
+ size="lg"
115
+ )
116
+
117
+ output_status = gr.Markdown(
118
+ elem_classes="status-box",
119
+ visible=False
120
+ )
121
+
122
+ # OAuth ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
123
+ deploy_btn.click(
124
+ fn=launch_deploy_oauth,
125
+ inputs=[repo_input, private_checkbox],
126
+ outputs=output_status
127
+ ).then(
128
+ fn=lambda: gr.update(visible=True),
129
+ outputs=output_status
130
+ )
131
+ else:
132
+ # ์ˆ˜๋™ ํ† ํฐ ์ž…๋ ฅ ๋ฒ„์ „
133
+ gr.Markdown("""
134
+ ### ๐Ÿ” ์ธ์ฆ ์ •๋ณด
135
+
136
+ > **์ฐธ๊ณ **: OAuth๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ Space์ž…๋‹ˆ๋‹ค.
137
+ > Space ์„ค์ •์—์„œ `hf_oauth: true`๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ž๋™ ๋กœ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
138
+ """)
139
+
140
+ token_input = gr.Textbox(
141
+ label="Hugging Face Write Token",
142
+ type="password",
143
+ placeholder="hf_xxxxxxxxxxxxxxxxxxxxx",
144
+ info="https://huggingface.co/settings/tokens ์—์„œ Write ๊ถŒํ•œ ํ† ํฐ ์ƒ์„ฑ"
145
+ )
146
+
147
+ gr.Markdown("### ๐Ÿ“ ๋ฐฐํฌ ์„ค์ •")
148
+
149
+ repo_input = gr.Textbox(
150
+ label="Git Repository URL",
151
+ placeholder="https://github.com/username/repository",
152
+ info="๊ณต๊ฐœ ์ €์žฅ์†Œ URL์„ ์ž…๋ ฅํ•˜์„ธ์š”"
153
+ )
154
+
155
+ private_checkbox = gr.Checkbox(
156
+ label="๐Ÿ”’ Private Space๋กœ ์ƒ์„ฑ",
157
+ value=False,
158
+ info="์ฒดํฌํ•˜๋ฉด ๋น„๊ณต๊ฐœ Space๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค"
159
+ )
160
+
161
+ deploy_btn = gr.Button(
162
+ "๐Ÿš€ Deploy to Space",
163
+ variant="primary",
164
+ size="lg"
165
+ )
166
+
167
+ output_status = gr.Markdown(
168
+ elem_classes="status-box",
169
+ visible=False
170
+ )
171
+
172
+ # ์ˆ˜๋™ ์ž…๋ ฅ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
173
+ deploy_btn.click(
174
+ fn=launch_deploy_manual,
175
+ inputs=[repo_input, token_input, private_checkbox],
176
+ outputs=output_status
177
+ ).then(
178
+ fn=lambda: gr.update(visible=True),
179
+ outputs=output_status
180
+ )
181
 
182
+ # ๊ณตํ†ต ์˜ˆ์‹œ ๋ฐ ๋„์›€๋ง
 
 
 
 
 
 
 
 
 
 
 
183
  gr.Markdown("""
184
  ### ๐Ÿ’ก ์˜ˆ์‹œ
185
  - `https://github.com/gradio-app/gradio`
 
190
  - Space ์ด๋ฆ„์€ repository ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค
191
  - GPU๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ Space ์ƒ์„ฑ ํ›„ ์ˆ˜๋™ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
192
  """)
 
 
 
 
 
 
 
 
 
 
193
 
194
  if __name__ == "__main__":
195
  demo.launch(