Code_editor / utils.py
vsj0702's picture
Make requirment and support python file
5d21581 verified
raw
history blame
1.08 kB
import sys
from io import StringIO
import contextlib
import json
from datetime import datetime
@contextlib.contextmanager
def capture_output():
"""Capture stdout and stderr"""
stdout, stderr = StringIO(), StringIO()
old_out, old_err = sys.stdout, sys.stderr
try:
sys.stdout, sys.stderr = stdout, stderr
yield stdout, stderr
finally:
sys.stdout, sys.stderr = old_out, old_err
def execute_code(code: str) -> tuple:
"""
Execute the provided code and return stdout, stderr and any exceptions
"""
with capture_output() as (stdout, stderr):
try:
exec(code)
return stdout.getvalue().strip(), stderr.getvalue().strip(), None
except Exception as e:
return stdout.getvalue().strip(), stderr.getvalue().strip(), str(e)
def export_session(code: str, output: str, error: str) -> dict:
"""
Create an exportable session object
"""
return {
"timestamp": datetime.now().isoformat(),
"code": code,
"output": output,
"error": error
}