From 12fcef4ad0a57d87a8a96f9f40ff27a09f1bbfba Mon Sep 17 00:00:00 2001 From: webreflection Date: Mon, 25 Nov 2024 13:59:41 +0100 Subject: [PATCH] Fix #2246 - Override builtins.input to avoid duplicating it --- core/package-lock.json | 4 ++-- core/package.json | 2 +- core/src/plugins/py-terminal/py.js | 12 ++++++++++++ core/tests/index.html | 2 +- core/tests/manual/issue-2246/index.html | 11 +++++++++++ core/tests/manual/issue-2246/main.py | 1 + 6 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 core/tests/manual/issue-2246/index.html create mode 100644 core/tests/manual/issue-2246/main.py diff --git a/core/package-lock.json b/core/package-lock.json index f46809003ba..0fe8f5898ad 100644 --- a/core/package-lock.json +++ b/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@pyscript/core", - "version": "0.6.19", + "version": "0.6.20", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@pyscript/core", - "version": "0.6.19", + "version": "0.6.20", "license": "APACHE-2.0", "dependencies": { "@ungap/with-resolvers": "^0.1.0", diff --git a/core/package.json b/core/package.json index c012688888a..613b15a156f 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@pyscript/core", - "version": "0.6.19", + "version": "0.6.20", "type": "module", "description": "PyScript", "module": "./index.js", diff --git a/core/src/plugins/py-terminal/py.js b/core/src/plugins/py-terminal/py.js index 3b08acab895..ca35abeebed 100644 --- a/core/src/plugins/py-terminal/py.js +++ b/core/src/plugins/py-terminal/py.js @@ -137,6 +137,18 @@ export default async (element) => { // setup remote thread JS/Python code for whenever the // worker is ready to become a terminal hooks.worker.onReady.add(workerReady); + + // @see https://github.com/pyscript/pyscript/issues/2246 + const patchInput = [ + "import builtins as _b", + "from pyscript import sync as _s", + "_b.input = _s.pyterminal_read", + "del _b", + "del _s", + ].join("\n"); + + hooks.worker.codeBeforeRun.add(patchInput); + hooks.worker.codeBeforeRunAsync.add(patchInput); } else { // in the main case, just bootstrap XTerm without // allowing any input as that's not possible / awkward diff --git a/core/tests/index.html b/core/tests/index.html index ca12533e691..128bce2aa3f 100644 --- a/core/tests/index.html +++ b/core/tests/index.html @@ -14,5 +14,5 @@ a:hover { opacity: 1; } - + diff --git a/core/tests/manual/issue-2246/index.html b/core/tests/manual/issue-2246/index.html new file mode 100644 index 00000000000..adb148331ca --- /dev/null +++ b/core/tests/manual/issue-2246/index.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/core/tests/manual/issue-2246/main.py b/core/tests/manual/issue-2246/main.py new file mode 100644 index 00000000000..3c7f04bcff8 --- /dev/null +++ b/core/tests/manual/issue-2246/main.py @@ -0,0 +1 @@ +print(input("What food would you like me to get from the shop? "))