From 651e0d2bc83ad746b51e7fe936a3f13c5b60353a Mon Sep 17 00:00:00 2001 From: Liang Jiaqing Date: Tue, 24 Mar 2026 09:52:55 +0800 Subject: [PATCH] refactor: extract code_run header to external file, add subprocess gbk fallback patch --- assets/code_run_header.py | 16 ++++++++++++++++ ga.py | 5 +++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 assets/code_run_header.py diff --git a/assets/code_run_header.py b/assets/code_run_header.py new file mode 100644 index 0000000..0c516c1 --- /dev/null +++ b/assets/code_run_header.py @@ -0,0 +1,16 @@ +import sys, os, json, re, time, subprocess +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'memory')) +_r = subprocess.run +def _d(b): + if not b: return '' + if isinstance(b, str): return b + try: return b.decode() + except: return b.decode('gbk', 'replace') +def _run(*a, **k): + t = k.pop('text', 0) | k.pop('universal_newlines', 0); r = _r(*a, **k) + if t: + if r.stdout is not None: r.stdout = _d(r.stdout) + if r.stderr is not None: r.stderr = _d(r.stderr) + return r +subprocess.run = _run + diff --git a/ga.py b/ga.py index 537a885..b3aab51 100644 --- a/ga.py +++ b/ga.py @@ -20,8 +20,9 @@ def code_run(code, code_type="python", timeout=60, cwd=None, code_cwd=None, stop cwd = cwd or os.path.join(script_dir, 'temp'); tmp_path = None if code_type == "python": tmp_file = tempfile.NamedTemporaryFile(suffix=".ai.py", delete=False, mode='w', encoding='utf-8', dir=code_cwd) - _mem = os.path.join(script_dir, 'memory') - tmp_file.write(f"import sys, os, json, re, time; sys.path.append(r'{_mem}')\n" + code) + cr_header = os.path.join(script_dir, 'assets', 'code_run_header.py') + if os.path.exists(cr_header): tmp_file.write(open(cr_header, encoding='utf-8').read()) + tmp_file.write(code) tmp_path = tmp_file.name tmp_file.close() cmd = [sys.executable, "-X", "utf8", "-u", tmp_path]