diff --git a/src/formats/import/pyodideLoader.ts b/src/formats/import/pyodideLoader.ts deleted file mode 100644 index 7bbd519..0000000 --- a/src/formats/import/pyodideLoader.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { loadPyodide, type PyodideInterface } from "pyodide"; - -export type PyodideState = "not_loaded" | "loading" | "ready" | "error"; - -class PyodideLoader { - private pyodide: PyodideInterface | null = null; - private state: PyodideState = "not_loaded"; - private error: string | null = null; - private loadPromise: Promise | null = null; - - /** - * Get the current Pyodide state - */ - getState(): PyodideState { - return this.state; - } - - /** - * Get the error message if state is 'error' - */ - getError(): string | null { - return this.error; - } - - /** - * Initialize Pyodide and install PyStitch - */ - async initialize(): Promise { - // If already ready, return immediately - if (this.state === "ready" && this.pyodide) { - return this.pyodide; - } - - // If currently loading, wait for the existing promise - if (this.loadPromise) { - return this.loadPromise; - } - - // Start loading - this.state = "loading"; - this.error = null; - - this.loadPromise = (async () => { - try { - console.log("[PyodideLoader] Loading Pyodide..."); - - // Load Pyodide with CDN indexURL for packages - // The core files will be loaded from our bundle, but packages will come from CDN - this.pyodide = await loadPyodide(); - - console.log("[PyodideLoader] Pyodide loaded, loading micropip..."); - - // Load micropip package - /*await this.pyodide.loadPackage('micropip'); - - console.log('[PyodideLoader] Installing PyStitch...'); - - // Install PyStitch using micropip - await this.pyodide.runPythonAsync(` - import micropip - await micropip.install('pystitch') - `);*/ - await this.pyodide.loadPackage("pystitch-1.0.0-py3-none-any.whl"); - - console.log("[PyodideLoader] PyStitch installed successfully"); - - this.state = "ready"; - return this.pyodide; - } catch (err) { - this.state = "error"; - this.error = - err instanceof Error ? err.message : "Unknown error loading Pyodide"; - console.error("[PyodideLoader] Error:", this.error); - throw err; - } - })(); - - return this.loadPromise; - } - - /** - * Get the Pyodide instance (must be initialized first) - */ - getInstance(): PyodideInterface | null { - return this.pyodide; - } -} - -// Export singleton instance -export const pyodideLoader = new PyodideLoader();