|
import gradio as gr |
|
import io |
|
import sys |
|
import os |
|
|
|
class PersistentRunner: |
|
def __init__(self): |
|
self.globals = {} |
|
|
|
def run(self, code): |
|
old_stdout = sys.stdout |
|
sys.stdout = buffer = io.StringIO() |
|
|
|
try: |
|
exec(code, self.globals) |
|
except Exception as e: |
|
print(f"Error: {e}") |
|
finally: |
|
sys.stdout = old_stdout |
|
|
|
return buffer.getvalue() |
|
|
|
runner = PersistentRunner() |
|
|
|
def run(code): |
|
if code.startswith("!"): |
|
os.system(code[1:]) |
|
else: |
|
return runner.run(code.replace("\\n", "\n")) |
|
|
|
demo = gr.Interface(fn=run, inputs="text", outputs="text") |
|
demo.launch() |
|
|