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