py = async (strings, ...expressions) => {
let globals = {};
const code = strings.reduce((result, string, index) => {
if (expressions[index]) {
const name = `x${index}`;
globals[name] = expressions[index];
return result + string + name;
}
return result + string;
}, "");
await pyodide.loadPackagesFromImports(code);
const result = await pyodide.pyodide_py.code.eval_code_async(
code,
pyodide.toPy(globals)
);
if (result?.toJs) return result.toJs();
return result;
}