From cef0639bc3d774cf9460b64db117dcb11863aea2 Mon Sep 17 00:00:00 2001 From: webreflection Date: Tue, 22 Jul 2025 15:31:56 +0200 Subject: [PATCH] Preparing better lockFileContents for Pyodide 0.28.1 --- esm/interpreter/pyodide.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/esm/interpreter/pyodide.js b/esm/interpreter/pyodide.js index 81311fc..d7faaf8 100644 --- a/esm/interpreter/pyodide.js +++ b/esm/interpreter/pyodide.js @@ -99,17 +99,19 @@ export default { // packages are uniquely stored as JSON key const key = stringify(packages); if (storage.has(key)) { - const blob = new Blob( - [storage.get(key)], - { type: 'application/json' }, - ); - // this should be used to bootstrap loadPyodide - options.lockFileURL = URL.createObjectURL(blob); - // versions are not currently understood by pyodide when - // a lockFileURL is used instead of micropip.install(packages) - // https://github.com/pyodide/pyodide/issues/5135#issuecomment-2441038644 - // https://github.com/pyscript/pyscript/issues/2245 - options.packages = packages.map(name => name.split(/[>=<]=/)[0]); + const value = storage.get(key); + if (save && !version.startsWith('0.27')) + options.lockFileContents = Promise.resolve(value); + else { + const blob = new Blob([value], { type: 'application/json' }); + // this should be used to bootstrap loadPyodide + options.lockFileURL = URL.createObjectURL(blob); + // versions are not currently understood by pyodide when + // a lockFileURL is used instead of micropip.install(packages) + // https://github.com/pyodide/pyodide/issues/5135#issuecomment-2441038644 + // https://github.com/pyscript/pyscript/issues/2245 + options.packages = packages.map(name => name.split(/[>=<]=/)[0]); + } packages = null; } }