1/* eslint-disable */ 2// webworker.js 3 4// Setup your project to serve `py-worker.js`. You should also serve 5// `pyodide.js`, and all its associated `.asm.js`, `.data`, `.json`, 6// and `.wasm` files as well: 7importScripts('https://cdn.jsdelivr.net/pyodide/v0.22.1/full/pyodide.js') 8 9async function loadPyodideAndPackages() { 10 console.log('LOAD Pyodide') 11 const start = Date.now() 12 if (!self.pyodide) { 13 self.pyodide = await loadPyodide({ 14 indexURL: 'https://cdn.jsdelivr.net/pyodide/v0.22.1/full/' 15 }) 16 } 17 console.log(`LOAD Mircopip after ${Date.now() - start}ms`) 18 const UNVENDORED_STDLIBS = [ 19 "ssl", 20 "lzma", 21 "hashlib" 22 ] 23 await self.pyodide.loadPackage('micropip') 24 await self.pyodide.loadPackage(UNVENDORED_STDLIBS) 25 console.log(`DONE after ${Date.now() - start}ms`) 26 self.pyodide.globals.set('init_globals', Array.from(self.pyodide.globals.toJs().keys())) 27} 28const pyodideReadyPromise = loadPyodideAndPackages() 29 30self.onmessage = async (event) => { 31 await pyodideReadyPromise 32 self.pyodide.runPython(` 33import js 34for key in list(globals().keys()): 35 if key not in init_globals and key not in ['init_globals', 'js', 'sys']: 36 del globals()[key] 37`) 38 const { python, ...context } = event.data 39 for (const key of Object.keys(context)) { 40 self.pyodide.globals.set(key, context[key]) 41 } 42 try { 43 await self.pyodide.loadPackagesFromImports(python) 44 const results = await self.pyodide.runPythonAsync(python) 45 self.postMessage({ results }) 46 } catch (error) { 47 self.postMessage({ error: error.message }) 48 } 49}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.