ginipick commited on
Commit
0ad9e3f
ยท
verified ยท
1 Parent(s): afa2ca4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -6
app.py CHANGED
@@ -172,6 +172,34 @@ async def try_openai_api(openai_messages):
172
  print(f"OpenAI API error: {str(e)}")
173
  raise e
174
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
 
176
  # Import to Package Name Mapping Dictionary
177
  IMPORT_TO_PACKAGE = {
@@ -291,11 +319,23 @@ IMPORT_TO_PACKAGE = {
291
  'resampy': 'resampy'
292
  }
293
 
 
294
  def get_package_name(import_name):
295
  """์ž„ํฌํŠธ๋ช…์œผ๋กœ๋ถ€ํ„ฐ ์‹ค์ œ ํŒจํ‚ค์ง€๋ช…์„ ๋ฐ˜ํ™˜"""
 
 
 
 
296
  # ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ฒซ ๋ถ€๋ถ„๋งŒ ์‚ฌ์šฉ (์˜ˆ: matplotlib.pyplot -> matplotlib)
297
  base_import = import_name.split('.')[0]
 
 
 
 
 
298
  return IMPORT_TO_PACKAGE.get(base_import, base_import)
 
 
299
 
300
  def analyze_code(code: str) -> str:
301
  """์ฝ”๋“œ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ HTML ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜"""
@@ -324,8 +364,11 @@ def analyze_code(code: str) -> str:
324
  package = line.split('import ')[1].split()[0].split('.')[0]
325
  else:
326
  package = line.split('from ')[1].split()[0].split('.')[0]
327
- required_packages.add(get_package_name(package))
328
-
 
 
 
329
 
330
  if imports:
331
  analysis.append("<h2>๐Ÿ“š ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ</h2>")
@@ -339,10 +382,11 @@ def analyze_code(code: str) -> str:
339
  analysis.append("<p>์ด ์•ฑ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์ž…๋‹ˆ๋‹ค:</p>")
340
  analysis.append("<pre>")
341
  for pkg in sorted(required_packages):
342
- if pkg == 'gradio':
343
- analysis.append("gradio==5.5.0")
344
- else:
345
- analysis.append(pkg)
 
346
  analysis.append("</pre>")
347
 
348
  # 2. ํ•จ์ˆ˜ ๋ถ„์„
 
172
  print(f"OpenAI API error: {str(e)}")
173
  raise e
174
 
175
+ # Built-in modules that don't need to be in requirements.txt
176
+ BUILTIN_MODULES = {
177
+ 'os', 'sys', 're', 'time', 'json', 'csv', 'math', 'random', 'datetime', 'calendar',
178
+ 'collections', 'copy', 'functools', 'itertools', 'operator', 'string', 'textwrap',
179
+ 'threading', 'queue', 'multiprocessing', 'subprocess', 'socket', 'email', 'mime',
180
+ 'http', 'urllib', 'xmlrpc', 'base64', 'binhex', 'binascii', 'quopri', 'uu',
181
+ 'html', 'xml', 'webbrowser', 'cgi', 'cgitb', 'wsgiref', 'uuid', 'argparse',
182
+ 'getopt', 'logging', 'platform', 'ctypes', 'typing', 'array', 'asyncio', 'concurrent',
183
+ 'contextlib', 'dataclasses', 'enum', 'graphlib', 'hashlib', 'hmac', 'io', 'pathlib',
184
+ 'pickle', 'shelve', 'shutil', 'signal', 'stat', 'struct', 'tempfile', 'warnings',
185
+ 'weakref', 'zipfile', 'zlib', 'mmap', 'msvcrt', 'winreg', 'winsound', 'crypt',
186
+ 'dbm', 'gzip', 'bz2', 'lzma', 'pwd', 'grp', 'termios', 'tty', 'pty', 'fcntl',
187
+ 'pipes', 'resource', 'nis', 'syslog', 'optparse', 'imp', 'posix', '_thread',
188
+ 'builtins', 'traceback', 'gc', 'inspect', 'site', 'user', 'distutils', 'test',
189
+ 'unittest', 'venv', 'code', 'codeop', 'pdb', 'profile', 'pstats', 'timeit',
190
+ 'trace', 'tracemalloc', 'sched', 'secrets', 'mimetypes', 'base64', 'binhex',
191
+ 'binascii', 'quopri', 'uu', 'xdrlib', 'zipapp', 'importlib', 'pkgutil', 'modulefinder',
192
+ 'runpy', 'parser', 'ast', 'symtable', 'symbol', 'token', 'keyword', 'tokenize',
193
+ 'tabnanny', 'pyclbr', 'py_compile', 'compileall', 'dis', 'pickletools', 'formatter',
194
+ 'types', 'abc', 'numbers', 'decimal', 'fractions', 'statistics', 'bisect', 'heapq',
195
+ 'reprlib', 'pprint', 'cmd', 'shlex', 'glob', 'fnmatch', 'linecache', 'rlcompleter',
196
+ 'configparser', 'netrc', 'xdrlib', 'plistlib', 'aifc', 'asynchat', 'asyncore',
197
+ 'audioop', 'crypt', 'imghdr', 'sndhdr', 'sunau', 'fileinput', 'stat', 'filecmp',
198
+ 'formatterclass', 'getpass', 'gettext', 'locale', 'macpath', 'mailcap', 'mailbox',
199
+ 'msilib', 'nis', 'nntplib', 'ntpath', 'ossaudiodev', 'pipes', 'poplib', 'posixpath',
200
+ 'pty', 'pwd', 'pyclbr', 'py_compile', 'sched', 'site', 'smtpd', 'spwd', 'sunau',
201
+ 'telnetlib', 'this', 'wave', 'webbrowser', 'winreg', 'winsound', 'wsgiref', 'xdrlib'
202
+ }
203
 
204
  # Import to Package Name Mapping Dictionary
205
  IMPORT_TO_PACKAGE = {
 
319
  'resampy': 'resampy'
320
  }
321
 
322
+
323
  def get_package_name(import_name):
324
  """์ž„ํฌํŠธ๋ช…์œผ๋กœ๋ถ€ํ„ฐ ์‹ค์ œ ํŒจํ‚ค์ง€๋ช…์„ ๋ฐ˜ํ™˜"""
325
+ # ๋‚ด์žฅ ๋ชจ๋“ˆ์ด๋ฉด None ๋ฐ˜ํ™˜
326
+ if import_name in BUILTIN_MODULES:
327
+ return None
328
+
329
  # ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ฒซ ๋ถ€๋ถ„๋งŒ ์‚ฌ์šฉ (์˜ˆ: matplotlib.pyplot -> matplotlib)
330
  base_import = import_name.split('.')[0]
331
+
332
+ # ๋‚ด์žฅ ๋ชจ๋“ˆ์ด๋ฉด None ๋ฐ˜ํ™˜
333
+ if base_import in BUILTIN_MODULES:
334
+ return None
335
+
336
  return IMPORT_TO_PACKAGE.get(base_import, base_import)
337
+
338
+
339
 
340
  def analyze_code(code: str) -> str:
341
  """์ฝ”๋“œ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ HTML ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜"""
 
364
  package = line.split('import ')[1].split()[0].split('.')[0]
365
  else:
366
  package = line.split('from ')[1].split()[0].split('.')[0]
367
+
368
+ # ๋‚ด์žฅ ๋ชจ๋“ˆ์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋งŒ ํŒจํ‚ค์ง€ ์ถ”๊ฐ€
369
+ package_name = get_package_name(package)
370
+ if package_name: # None์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋งŒ ์ถ”๊ฐ€
371
+ required_packages.add(package_name)
372
 
373
  if imports:
374
  analysis.append("<h2>๐Ÿ“š ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ</h2>")
 
382
  analysis.append("<p>์ด ์•ฑ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์ž…๋‹ˆ๋‹ค:</p>")
383
  analysis.append("<pre>")
384
  for pkg in sorted(required_packages):
385
+ if pkg and pkg not in BUILTIN_MODULES: # None์ด ์•„๋‹ˆ๊ณ  ๋‚ด์žฅ ๋ชจ๋“ˆ์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋งŒ ์ถ”๊ฐ€
386
+ if pkg == 'gradio':
387
+ analysis.append("gradio==5.5.0")
388
+ else:
389
+ analysis.append(pkg)
390
  analysis.append("</pre>")
391
 
392
  # 2. ํ•จ์ˆ˜ ๋ถ„์„