Pyodide runs in a Blob Web Worker via importScripts + loadPyodide({ indexURL }). :contentReference[oaicite:2]{index=2}
Results are converted to plain objects using toJs({ dict_converter: Object.fromEntries }) to avoid DataCloneError with Maps in postMessage. :contentReference[oaicite:3]{index=3}