| 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() |
|
|