From 4cff525d7450401a0b4500e2158d4dfa79f7f5e5 Mon Sep 17 00:00:00 2001 From: Hatem Hosny Date: Tue, 17 Oct 2023 02:12:43 +0300 Subject: [PATCH] feat(compilers): patch pyodide input --- .../languages/python-wasm/lang-python-wasm-script.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/livecodes/languages/python-wasm/lang-python-wasm-script.ts b/src/livecodes/languages/python-wasm/lang-python-wasm-script.ts index 07f5d933f..61cf9f931 100644 --- a/src/livecodes/languages/python-wasm/lang-python-wasm-script.ts +++ b/src/livecodes/languages/python-wasm/lang-python-wasm-script.ts @@ -39,6 +39,16 @@ window.addEventListener('load', async () => { } } + async function prepareEnv() { + const patchInput = ` +from js import prompt +def input(p): + return prompt(p) +__builtins__.input = input +`.trim(); + await livecodes.pyodide.runPythonAsync(patchInput); + } + async function loadPackagesInCode(code: string) { const packages = [...livecodes.pyodide.pyodide_py.code.find_imports(code)]; const newPackages = packages.filter((p) => !(p in livecodes.pyodide.loadedPackages)); @@ -54,6 +64,7 @@ window.addEventListener('load', async () => { async function evaluatePython(code: string) { await pyodideReady; await cleanUp(); + await prepareEnv(); await loadPackagesInCode(code); try { livecodes.pyodideState = livecodes.pyodide.pyodide_py._state.save_state();