ginipick commited on
Commit
ebc7917
ยท
verified ยท
1 Parent(s): 3c83389

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -4
app.py CHANGED
@@ -177,18 +177,48 @@ def analyze_code(code: str) -> str:
177
  """์ฝ”๋“œ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ HTML ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜"""
178
  analysis = []
179
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  # 1. ์‚ฌ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถ„์„
181
  imports = []
 
182
  for line in code.split('\n'):
183
  if line.startswith('import ') or line.startswith('from '):
184
  imports.append(line.strip())
 
 
 
 
 
 
185
 
186
  if imports:
187
- analysis.append("<h2>๐Ÿ“š ์‚ฌ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ</h2>")
188
  analysis.append("<ul>")
189
  for imp in imports:
190
  analysis.append(f"<li><code>{imp}</code></li>")
191
  analysis.append("</ul>")
 
 
 
 
 
 
 
 
 
 
 
192
 
193
  # 2. ํ•จ์ˆ˜ ๋ถ„์„
194
  functions = []
@@ -210,11 +240,20 @@ def analyze_code(code: str) -> str:
210
  current_func = []
211
 
212
  if functions:
213
- analysis.append("<h2>๐Ÿ”ง ์ฃผ์š” ํ•จ์ˆ˜</h2>")
214
  for func in functions:
215
  func_name = func.split('def ')[1].split('(')[0]
216
  analysis.append(f"<h3><code>{func_name}</code></h3>")
217
  analysis.append(f"<p>{get_function_description(func)}</p>")
 
 
 
 
 
 
 
 
 
218
 
219
  # 3. UI ์ปดํฌ๋„ŒํŠธ ๋ถ„์„
220
  ui_components = []
@@ -225,17 +264,32 @@ def analyze_code(code: str) -> str:
225
  ui_components.append(component)
226
 
227
  if ui_components:
228
- analysis.append("<h2>๐ŸŽจ UI ์ปดํฌ๋„ŒํŠธ</h2>")
 
229
  analysis.append("<ul>")
230
  for component in ui_components:
231
  analysis.append(f"<li><strong>{component}</strong>: {get_component_description(component)}</li>")
232
  analysis.append("</ul>")
233
 
234
- # 4. ์‹คํ–‰ ๋ฐฉ๋ฒ•
 
 
 
 
 
 
 
 
 
 
 
 
 
235
  analysis.append("<h2>โ–ถ๏ธ ์‹คํ–‰ ๋ฐฉ๋ฒ•</h2>")
236
  analysis.append("<ol>")
237
  analysis.append("<li>'์‹คํ–‰ํ•˜๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ Hugging Face Space์— ๋ฐฐํฌ</li>")
238
  analysis.append("<li>์ƒ์„ฑ๋œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰</li>")
 
239
  analysis.append("</ol>")
240
 
241
  return "\n".join(analysis)
 
177
  """์ฝ”๋“œ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ HTML ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜"""
178
  analysis = []
179
 
180
+ # 0. ์ฝ”๋“œ ๊ฐœ์š”
181
+ analysis.append("<h2>๐Ÿ’ก ์ฝ”๋“œ ๊ฐœ์š”</h2>")
182
+ analysis.append("<p>์ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:</p>")
183
+ analysis.append("<ul>")
184
+ if 'gr.Blocks' in code:
185
+ analysis.append("<li>Gradio Blocks๋ฅผ ์‚ฌ์šฉํ•œ ๋ชจ๋˜ํ•œ UI ๊ตฌ์„ฑ</li>")
186
+ if 'theme=' in code:
187
+ analysis.append("<li>์ปค์Šคํ…€ ํ…Œ๋งˆ ์ ์šฉ์œผ๋กœ ์‹œ๊ฐ์  ์ผ๊ด€์„ฑ ์œ ์ง€</li>")
188
+ if 'with gr.Row' in code or 'with gr.Column' in code:
189
+ analysis.append("<li>Row/Column ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ๊ตฌํ˜„</li>")
190
+ analysis.append("</ul>")
191
+
192
  # 1. ์‚ฌ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถ„์„
193
  imports = []
194
+ required_packages = set()
195
  for line in code.split('\n'):
196
  if line.startswith('import ') or line.startswith('from '):
197
  imports.append(line.strip())
198
+ # ํŒจํ‚ค์ง€ ์ด๋ฆ„ ์ถ”์ถœ
199
+ if line.startswith('import '):
200
+ package = line.split('import ')[1].split()[0].split('.')[0]
201
+ else:
202
+ package = line.split('from ')[1].split()[0].split('.')[0]
203
+ required_packages.add(package)
204
 
205
  if imports:
206
+ analysis.append("<h2>๐Ÿ“š ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ</h2>")
207
  analysis.append("<ul>")
208
  for imp in imports:
209
  analysis.append(f"<li><code>{imp}</code></li>")
210
  analysis.append("</ul>")
211
+
212
+ # requirements.txt ์„ค๋ช… ์ถ”๊ฐ€
213
+ analysis.append("<h3>๐Ÿ“‹ Requirements.txt</h3>")
214
+ analysis.append("<p>์ด ์•ฑ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์ž…๋‹ˆ๋‹ค:</p>")
215
+ analysis.append("<pre>")
216
+ for pkg in sorted(required_packages):
217
+ if pkg == 'gradio':
218
+ analysis.append("gradio==5.5.0")
219
+ else:
220
+ analysis.append(pkg)
221
+ analysis.append("</pre>")
222
 
223
  # 2. ํ•จ์ˆ˜ ๋ถ„์„
224
  functions = []
 
240
  current_func = []
241
 
242
  if functions:
243
+ analysis.append("<h2>๐Ÿ”ง ์ฃผ์š” ํ•จ์ˆ˜ ์„ค๋ช…</h2>")
244
  for func in functions:
245
  func_name = func.split('def ')[1].split('(')[0]
246
  analysis.append(f"<h3><code>{func_name}</code></h3>")
247
  analysis.append(f"<p>{get_function_description(func)}</p>")
248
+ # ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ถ„์„
249
+ params = func.split('(')[1].split(')')[0]
250
+ if params.strip():
251
+ analysis.append("<p>ํŒŒ๋ผ๋ฏธํ„ฐ:</p><ul>")
252
+ for param in params.split(','):
253
+ param = param.strip()
254
+ if param and param != 'self':
255
+ analysis.append(f"<li><code>{param}</code></li>")
256
+ analysis.append("</ul>")
257
 
258
  # 3. UI ์ปดํฌ๋„ŒํŠธ ๋ถ„์„
259
  ui_components = []
 
264
  ui_components.append(component)
265
 
266
  if ui_components:
267
+ analysis.append("<h2>๐ŸŽจ UI ๊ตฌ์„ฑ์š”์†Œ</h2>")
268
+ analysis.append("<p>์ด ์•ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ Gradio ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:</p>")
269
  analysis.append("<ul>")
270
  for component in ui_components:
271
  analysis.append(f"<li><strong>{component}</strong>: {get_component_description(component)}</li>")
272
  analysis.append("</ul>")
273
 
274
+ # 4. ํŠน์ง• ๋ฐ ๊ธฐ๋Šฅ
275
+ analysis.append("<h2>โœจ ์ฃผ์š” ํŠน์ง•</h2>")
276
+ analysis.append("<ul>")
277
+ if 'theme=' in code:
278
+ analysis.append("<li>์ปค์Šคํ…€ ํ…Œ๋งˆ ์ ์šฉ์œผ๋กœ ์ผ๊ด€๋œ ๋””์ž์ธ</li>")
279
+ if 'with gr.Row' in code:
280
+ analysis.append("<li>๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ ์ง€์›</li>")
281
+ if 'gr.State' in code:
282
+ analysis.append("<li>์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์œ ์ง€</li>")
283
+ if '.click(' in code:
284
+ analysis.append("<li>์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง์„ ํ†ตํ•œ ๋™์  ์ƒํ˜ธ์ž‘์šฉ</li>")
285
+ analysis.append("</ul>")
286
+
287
+ # 5. ์‹คํ–‰ ๋ฐฉ๋ฒ•
288
  analysis.append("<h2>โ–ถ๏ธ ์‹คํ–‰ ๋ฐฉ๋ฒ•</h2>")
289
  analysis.append("<ol>")
290
  analysis.append("<li>'์‹คํ–‰ํ•˜๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ Hugging Face Space์— ๋ฐฐํฌ</li>")
291
  analysis.append("<li>์ƒ์„ฑ๋œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰</li>")
292
+ analysis.append("<li>ํ•„์š”ํ•œ ์ž…๋ ฅ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  ์ƒํ˜ธ์ž‘์šฉ ์‹œ์ž‘</li>")
293
  analysis.append("</ol>")
294
 
295
  return "\n".join(analysis)