@datalayer/jupyter-react 1.1.9 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -1
- package/lib/app/tabs/components/CellComponent.js +4 -2
- package/lib/app/tabs/components/CellComponent.js.map +1 -1
- package/lib/app/tabs/components/NotebookComponent.js +2 -2
- package/lib/app/tabs/components/NotebookComponent.js.map +1 -1
- package/lib/app/tabs/components/ViewerComponent.js +1 -1
- package/lib/app/tabs/components/ViewerComponent.js.map +1 -1
- package/lib/components/cell/Cell.d.ts +3 -3
- package/lib/components/cell/Cell.js +5 -12
- package/lib/components/cell/Cell.js.map +1 -1
- package/lib/components/cell/CellAdapter.d.ts +0 -2
- package/lib/components/cell/CellAdapter.js +5 -17
- package/lib/components/cell/CellAdapter.js.map +1 -1
- package/lib/components/jupyterlab/JupyterLabApp.js +6 -0
- package/lib/components/jupyterlab/JupyterLabApp.js.map +1 -1
- package/lib/components/kernel/{Kernelndicator.d.ts → KernelIndicator.d.ts} +1 -0
- package/lib/components/kernel/{Kernelndicator.js → KernelIndicator.js} +13 -5
- package/lib/components/kernel/KernelIndicator.js.map +1 -0
- package/lib/components/kernel/index.d.ts +1 -1
- package/lib/components/kernel/index.js +1 -1
- package/lib/components/kernel/index.js.map +1 -1
- package/lib/components/notebook/Notebook2.d.ts +6 -2
- package/lib/components/notebook/Notebook2.js +3 -2
- package/lib/components/notebook/Notebook2.js.map +1 -1
- package/lib/components/notebook/Notebook2Adapter.d.ts +10 -0
- package/lib/components/notebook/Notebook2Adapter.js +12 -0
- package/lib/components/notebook/Notebook2Adapter.js.map +1 -1
- package/lib/components/notebook/Notebook2Base.d.ts +7 -3
- package/lib/components/notebook/Notebook2Base.js +78 -48
- package/lib/components/notebook/Notebook2Base.js.map +1 -1
- package/lib/components/notebook/Notebook2State.d.ts +1 -0
- package/lib/components/notebook/Notebook2State.js +3 -0
- package/lib/components/notebook/Notebook2State.js.map +1 -1
- package/lib/components/notebook/NotebookAdapter.d.ts +1 -0
- package/lib/components/notebook/NotebookAdapter.js +7 -3
- package/lib/components/notebook/NotebookAdapter.js.map +1 -1
- package/lib/components/notebook/NotebookCommands.d.ts +25 -2
- package/lib/components/notebook/NotebookCommands.js +89 -10
- package/lib/components/notebook/NotebookCommands.js.map +1 -1
- package/lib/components/terminal/Terminal.js +1 -1
- package/lib/components/terminal/Terminal.js.map +1 -1
- package/lib/examples/Bokeh.js +2 -2
- package/lib/examples/Bokeh.js.map +1 -1
- package/lib/examples/Bqplot.js +2 -2
- package/lib/examples/Bqplot.js.map +1 -1
- package/lib/examples/Cell.js +4 -4
- package/lib/examples/Cell.js.map +1 -1
- package/lib/examples/CellLite.js +16 -4
- package/lib/examples/CellLite.js.map +1 -1
- package/lib/examples/Cells.js +9 -6
- package/lib/examples/Cells.js.map +1 -1
- package/lib/examples/CellsExecute.js +13 -9
- package/lib/examples/CellsExecute.js.map +1 -1
- package/lib/examples/Console.js +2 -2
- package/lib/examples/Console.js.map +1 -1
- package/lib/examples/ConsoleLite.js +3 -3
- package/lib/examples/ConsoleLite.js.map +1 -1
- package/lib/examples/Dashboard.js +2 -2
- package/lib/examples/Dashboard.js.map +1 -1
- package/lib/examples/Deno.js +2 -2
- package/lib/examples/Deno.js.map +1 -1
- package/lib/examples/Examples.d.ts +23 -0
- package/lib/examples/Examples.js +342 -0
- package/lib/examples/Examples.js.map +1 -0
- package/lib/examples/FileBrowser.js +2 -2
- package/lib/examples/FileBrowser.js.map +1 -1
- package/lib/examples/GeoJson.js +2 -2
- package/lib/examples/GeoJson.js.map +1 -1
- package/lib/examples/IPyLeaflet.js +3 -3
- package/lib/examples/IPyLeaflet.js.map +1 -1
- package/lib/examples/IPyReact.js +3 -3
- package/lib/examples/IPyReact.js.map +1 -1
- package/lib/examples/IPyWidgets.js +3 -3
- package/lib/examples/IPyWidgets.js.map +1 -1
- package/lib/examples/IPyWidgetsState.js +3 -3
- package/lib/examples/IPyWidgetsState.js.map +1 -1
- package/lib/examples/JupyterContext.js +2 -2
- package/lib/examples/JupyterContext.js.map +1 -1
- package/lib/examples/JupyterLabAppHeadless.js +2 -2
- package/lib/examples/JupyterLabAppHeadless.js.map +1 -1
- package/lib/examples/JupyterLabAppHeadlessServerless.js +2 -2
- package/lib/examples/JupyterLabAppHeadlessServerless.js.map +1 -1
- package/lib/examples/JupyterLabAppServerless.js +2 -2
- package/lib/examples/JupyterLabAppServerless.js.map +1 -1
- package/lib/examples/JupyterLabAppServiceManager.js +2 -2
- package/lib/examples/JupyterLabAppServiceManager.js.map +1 -1
- package/lib/examples/JupyterLabTheme.js +2 -2
- package/lib/examples/JupyterLabTheme.js.map +1 -1
- package/lib/examples/KernelExecute.d.ts +1 -1
- package/lib/examples/KernelExecute.js +9 -11
- package/lib/examples/KernelExecute.js.map +1 -1
- package/lib/examples/KernelExecuteLite.d.ts +1 -0
- package/lib/examples/KernelExecuteLite.js +51 -0
- package/lib/examples/KernelExecuteLite.js.map +1 -0
- package/lib/examples/KernelExecutor.js +10 -9
- package/lib/examples/KernelExecutor.js.map +1 -1
- package/lib/examples/KernelExecutorLite.js +63 -0
- package/lib/examples/KernelExecutorLite.js.map +1 -0
- package/lib/examples/Kernels.js +6 -5
- package/lib/examples/Kernels.js.map +1 -1
- package/lib/examples/Lumino.js +2 -2
- package/lib/examples/Lumino.js.map +1 -1
- package/lib/examples/Matplotlib.js +10 -6
- package/lib/examples/Matplotlib.js.map +1 -1
- package/lib/examples/Notebook.js +3 -2
- package/lib/examples/Notebook.js.map +1 -1
- package/lib/examples/Notebook2.js +9 -6
- package/lib/examples/Notebook2.js.map +1 -1
- package/lib/examples/Notebook2Actions.js +8 -6
- package/lib/examples/Notebook2Actions.js.map +1 -1
- package/lib/examples/Notebook2Collaborative.js +2 -2
- package/lib/examples/Notebook2Collaborative.js.map +1 -1
- package/lib/examples/Notebook2Lite.js +19 -14
- package/lib/examples/Notebook2Lite.js.map +1 -1
- package/lib/examples/NotebookCellSidebar.js +3 -3
- package/lib/examples/NotebookCellSidebar.js.map +1 -1
- package/lib/examples/NotebookCellToolbar.js +4 -4
- package/lib/examples/NotebookCellToolbar.js.map +1 -1
- package/lib/examples/NotebookCollaborative.js +2 -2
- package/lib/examples/NotebookCollaborative.js.map +1 -1
- package/lib/examples/NotebookColormode.js +15 -10
- package/lib/examples/NotebookColormode.js.map +1 -1
- package/lib/examples/NotebookExtension.js +4 -4
- package/lib/examples/NotebookExtension.js.map +1 -1
- package/lib/examples/NotebookExternalContent.js +18 -13
- package/lib/examples/NotebookExternalContent.js.map +1 -1
- package/lib/examples/NotebookInit.js +10 -9
- package/lib/examples/NotebookInit.js.map +1 -1
- package/lib/examples/NotebookKernel.js +4 -4
- package/lib/examples/NotebookKernel.js.map +1 -1
- package/lib/examples/NotebookKernelChange.js +2 -2
- package/lib/examples/NotebookKernelChange.js.map +1 -1
- package/lib/examples/NotebookLess.js +4 -4
- package/lib/examples/NotebookLess.js.map +1 -1
- package/lib/examples/NotebookLite.js +10 -6
- package/lib/examples/NotebookLite.js.map +1 -1
- package/lib/examples/NotebookLiteContext.js +10 -5
- package/lib/examples/NotebookLiteContext.js.map +1 -1
- package/lib/examples/NotebookLocalServer.js +3 -3
- package/lib/examples/NotebookLocalServer.js.map +1 -1
- package/lib/examples/NotebookNbformat.js +7 -5
- package/lib/examples/NotebookNbformat.js.map +1 -1
- package/lib/examples/NotebookNbformatChange.js +12 -6
- package/lib/examples/NotebookNbformatChange.js.map +1 -1
- package/lib/examples/NotebookNoContext.js +4 -3
- package/lib/examples/NotebookNoContext.js.map +1 -1
- package/lib/examples/NotebookNoPrimer.js +3 -2
- package/lib/examples/NotebookNoPrimer.js.map +1 -1
- package/lib/examples/NotebookOnSessionConnection.js +5 -5
- package/lib/examples/NotebookOnSessionConnection.js.map +1 -1
- package/lib/examples/NotebookPath.js +2 -2
- package/lib/examples/NotebookPath.js.map +1 -1
- package/lib/examples/NotebookPathChange.js +5 -4
- package/lib/examples/NotebookPathChange.js.map +1 -1
- package/lib/examples/NotebookReadonly.js +4 -4
- package/lib/examples/NotebookReadonly.js.map +1 -1
- package/lib/examples/NotebookServiceManager.js +4 -4
- package/lib/examples/NotebookServiceManager.js.map +1 -1
- package/lib/examples/NotebookSkeleton.js +3 -2
- package/lib/examples/NotebookSkeleton.js.map +1 -1
- package/lib/examples/NotebookTOC.d.ts +1 -0
- package/lib/examples/{NotebookToc.js → NotebookTOC.js} +12 -6
- package/lib/examples/NotebookTOC.js.map +1 -0
- package/lib/examples/NotebookTheme.js +10 -5
- package/lib/examples/NotebookTheme.js.map +1 -1
- package/lib/examples/NotebookThemeColormode.js +4 -4
- package/lib/examples/NotebookThemeColormode.js.map +1 -1
- package/lib/examples/NotebookURL.js +3 -2
- package/lib/examples/NotebookURL.js.map +1 -1
- package/lib/examples/NotebookUnmount.js +13 -7
- package/lib/examples/NotebookUnmount.js.map +1 -1
- package/lib/examples/ObservableHQ.js +2 -2
- package/lib/examples/ObservableHQ.js.map +1 -1
- package/lib/examples/OutputIPyWidgets.js +3 -3
- package/lib/examples/OutputIPyWidgets.js.map +1 -1
- package/lib/examples/OutputWithMonitoring.js +3 -2
- package/lib/examples/OutputWithMonitoring.js.map +1 -1
- package/lib/examples/Outputs.js +8 -8
- package/lib/examples/Outputs.js.map +1 -1
- package/lib/examples/OutputsIpynb.js +4 -4
- package/lib/examples/OutputsIpynb.js.map +1 -1
- package/lib/examples/Panel.js +2 -2
- package/lib/examples/Panel.js.map +1 -1
- package/lib/examples/Plotly.js +2 -2
- package/lib/examples/Plotly.js.map +1 -1
- package/lib/examples/PyGWalker.js +4 -4
- package/lib/examples/PyGWalker.js.map +1 -1
- package/lib/examples/Terminal.js +4 -3
- package/lib/examples/Terminal.js.map +1 -1
- package/lib/examples/Vega.js +2 -2
- package/lib/examples/Vega.js.map +1 -1
- package/lib/examples/Viewer.js +5 -4
- package/lib/examples/Viewer.js.map +1 -1
- package/lib/jupyter/JupyterConfig.js +6 -4
- package/lib/jupyter/JupyterConfig.js.map +1 -1
- package/lib/jupyter/collaboration/ICollaborationProvider.js.map +1 -1
- package/lib/jupyter/kernel/Kernel.js +21 -15
- package/lib/jupyter/kernel/Kernel.js.map +1 -1
- package/lib/jupyter/kernel/KernelState.d.ts +1 -1
- package/lib/jupyter/lite/Lite.d.ts +1 -1
- package/lib/jupyter/lite/LiteServer.d.ts +1 -1
- package/lib/jupyter/lite/LiteServer.js +20 -5
- package/lib/jupyter/lite/LiteServer.js.map +1 -1
- package/lib/jupyter/lite/contents/broadcast.d.ts +27 -0
- package/lib/jupyter/lite/contents/broadcast.js +60 -0
- package/lib/jupyter/lite/contents/broadcast.js.map +1 -0
- package/lib/jupyter/lite/contents/contents.d.ts +228 -0
- package/lib/jupyter/lite/contents/contents.js +774 -0
- package/lib/jupyter/lite/contents/contents.js.map +1 -0
- package/lib/jupyter/lite/contents/drivecontents.d.ts +92 -0
- package/lib/jupyter/lite/contents/drivecontents.js +133 -0
- package/lib/jupyter/lite/contents/drivecontents.js.map +1 -0
- package/lib/jupyter/lite/contents/drivefs.d.ts +193 -0
- package/lib/jupyter/lite/contents/drivefs.js +432 -0
- package/lib/jupyter/lite/contents/drivefs.js.map +1 -0
- package/lib/jupyter/lite/contents/emscripten.d.ts +89 -0
- package/lib/jupyter/lite/contents/emscripten.js +11 -0
- package/lib/jupyter/lite/contents/emscripten.js.map +1 -0
- package/lib/jupyter/lite/contents/index.d.ts +6 -0
- package/lib/jupyter/lite/contents/index.js +9 -0
- package/lib/jupyter/lite/contents/index.js.map +1 -0
- package/lib/jupyter/lite/contents/tokens.d.ts +136 -0
- package/lib/jupyter/lite/contents/tokens.js +66 -0
- package/lib/jupyter/lite/contents/tokens.js.map +1 -0
- package/lib/jupyter/lite/kernel/index.d.ts +4 -0
- package/lib/jupyter/lite/kernel/index.js +7 -0
- package/lib/jupyter/lite/kernel/index.js.map +1 -0
- package/lib/jupyter/lite/kernel/kernel.d.ts +245 -0
- package/lib/jupyter/lite/kernel/kernel.js +453 -0
- package/lib/jupyter/lite/kernel/kernel.js.map +1 -0
- package/lib/jupyter/lite/kernel/kernels.d.ts +85 -0
- package/lib/jupyter/lite/kernel/kernels.js +218 -0
- package/lib/jupyter/lite/kernel/kernels.js.map +1 -0
- package/lib/jupyter/lite/kernel/kernelspecs.d.ts +53 -0
- package/lib/jupyter/lite/kernel/kernelspecs.js +50 -0
- package/lib/jupyter/lite/kernel/kernelspecs.js.map +1 -0
- package/lib/jupyter/lite/kernel/tokens.d.ts +171 -0
- package/lib/jupyter/lite/kernel/tokens.js +16 -0
- package/lib/jupyter/lite/kernel/tokens.js.map +1 -0
- package/lib/jupyter/lite/licenses/index.d.ts +2 -0
- package/lib/jupyter/lite/licenses/index.js +5 -0
- package/lib/jupyter/lite/licenses/index.js.map +1 -0
- package/lib/jupyter/lite/licenses/licenses.d.ts +35 -0
- package/lib/jupyter/lite/licenses/licenses.js +95 -0
- package/lib/jupyter/lite/licenses/licenses.js.map +1 -0
- package/lib/jupyter/lite/licenses/tokens.d.ts +74 -0
- package/lib/jupyter/lite/licenses/tokens.js +13 -0
- package/lib/jupyter/lite/licenses/tokens.js.map +1 -0
- package/lib/jupyter/lite/localforage/index.d.ts +2 -0
- package/lib/jupyter/lite/localforage/index.js +5 -0
- package/lib/jupyter/lite/localforage/index.js.map +1 -0
- package/lib/jupyter/lite/localforage/memory.d.ts +5 -0
- package/lib/jupyter/lite/localforage/memory.js +10 -0
- package/lib/jupyter/lite/localforage/memory.js.map +1 -0
- package/lib/jupyter/lite/localforage/tokens.d.ts +12 -0
- package/lib/jupyter/lite/localforage/tokens.js +8 -0
- package/lib/jupyter/lite/localforage/tokens.js.map +1 -0
- package/lib/jupyter/lite/pyodide-kernel/_pypi.d.ts +18 -0
- package/lib/jupyter/lite/pyodide-kernel/_pypi.js +45 -0
- package/lib/jupyter/lite/pyodide-kernel/_pypi.js.map +1 -0
- package/lib/jupyter/lite/pyodide-kernel/coincident.worker.d.ts +15 -0
- package/lib/jupyter/lite/pyodide-kernel/coincident.worker.js +63 -0
- package/lib/jupyter/lite/pyodide-kernel/coincident.worker.js.map +1 -0
- package/lib/jupyter/lite/pyodide-kernel/comlink.worker.d.ts +9 -0
- package/lib/jupyter/lite/pyodide-kernel/comlink.worker.js +50 -0
- package/lib/jupyter/lite/pyodide-kernel/comlink.worker.js.map +1 -0
- package/lib/jupyter/lite/pyodide-kernel/index.d.ts +6 -0
- package/lib/jupyter/lite/pyodide-kernel/index.js +9 -0
- package/lib/jupyter/lite/pyodide-kernel/index.js.map +1 -0
- package/lib/jupyter/lite/pyodide-kernel/kernel.d.ts +157 -0
- package/lib/jupyter/lite/pyodide-kernel/kernel.js +294 -0
- package/lib/jupyter/lite/pyodide-kernel/kernel.js.map +1 -0
- package/lib/jupyter/lite/pyodide-kernel/pypi/all-local.json +128 -0
- package/lib/jupyter/lite/pyodide-kernel/pypi/all.json +128 -0
- package/lib/jupyter/lite/pyodide-kernel/schema/piplite.v0.schema.json +113 -0
- package/lib/jupyter/lite/pyodide-kernel/tokens.d.ts +82 -0
- package/lib/jupyter/lite/pyodide-kernel/tokens.js +8 -0
- package/lib/jupyter/lite/pyodide-kernel/tokens.js.map +1 -0
- package/lib/jupyter/lite/pyodide-kernel/worker.d.ts +138 -0
- package/lib/jupyter/lite/pyodide-kernel/worker.js +426 -0
- package/lib/jupyter/lite/pyodide-kernel/worker.js.map +1 -0
- package/lib/jupyter/lite/pyodide-kernel-extension/index.d.ts +4 -0
- package/lib/jupyter/lite/pyodide-kernel-extension/index.js +88 -0
- package/lib/jupyter/lite/pyodide-kernel-extension/index.js.map +1 -0
- package/lib/jupyter/lite/server/app.d.ts +87 -0
- package/lib/jupyter/lite/server/app.js +157 -0
- package/lib/jupyter/lite/server/app.js.map +1 -0
- package/lib/jupyter/lite/server/index.d.ts +4 -0
- package/lib/jupyter/lite/server/index.js +7 -0
- package/lib/jupyter/lite/server/index.js.map +1 -0
- package/lib/jupyter/lite/server/router.d.ts +99 -0
- package/lib/jupyter/lite/server/router.js +109 -0
- package/lib/jupyter/lite/server/router.js.map +1 -0
- package/lib/jupyter/lite/server/service-manager.d.ts +21 -0
- package/lib/jupyter/lite/server/service-manager.js +102 -0
- package/lib/jupyter/lite/server/service-manager.js.map +1 -0
- package/lib/jupyter/lite/server/service-worker.d.ts +58 -0
- package/lib/jupyter/lite/server/service-worker.js +145 -0
- package/lib/jupyter/lite/server/service-worker.js.map +1 -0
- package/lib/jupyter/lite/server/status.d.ts +18 -0
- package/lib/jupyter/lite/server/status.js +21 -0
- package/lib/jupyter/lite/server/status.js.map +1 -0
- package/lib/jupyter/lite/server/tokens.d.ts +38 -0
- package/lib/jupyter/lite/server/tokens.js +8 -0
- package/lib/jupyter/lite/server/tokens.js.map +1 -0
- package/lib/jupyter/lite/server-extension/index.d.ts +3 -0
- package/lib/jupyter/lite/server-extension/index.js +500 -0
- package/lib/jupyter/lite/server-extension/index.js.map +1 -0
- package/lib/jupyter/lite/session/index.d.ts +2 -0
- package/lib/jupyter/lite/session/index.js +5 -0
- package/lib/jupyter/lite/session/index.js.map +1 -0
- package/lib/jupyter/lite/session/sessions.d.ts +68 -0
- package/lib/jupyter/lite/session/sessions.js +185 -0
- package/lib/jupyter/lite/session/sessions.js.map +1 -0
- package/lib/jupyter/lite/session/tokens.d.ts +40 -0
- package/lib/jupyter/lite/session/tokens.js +6 -0
- package/lib/jupyter/lite/session/tokens.js.map +1 -0
- package/lib/jupyter/lite/settings/index.d.ts +2 -0
- package/lib/jupyter/lite/settings/index.js +5 -0
- package/lib/jupyter/lite/settings/index.js.map +1 -0
- package/lib/jupyter/lite/settings/settings.d.ts +75 -0
- package/lib/jupyter/lite/settings/settings.js +155 -0
- package/lib/jupyter/lite/settings/settings.js.map +1 -0
- package/lib/jupyter/lite/settings/tokens.d.ts +65 -0
- package/lib/jupyter/lite/settings/tokens.js +6 -0
- package/lib/jupyter/lite/settings/tokens.js.map +1 -0
- package/lib/jupyter/lite/translation/index.d.ts +2 -0
- package/lib/jupyter/lite/translation/index.js +5 -0
- package/lib/jupyter/lite/translation/index.js.map +1 -0
- package/lib/jupyter/lite/translation/tokens.d.ts +17 -0
- package/lib/jupyter/lite/translation/tokens.js +6 -0
- package/lib/jupyter/lite/translation/tokens.js.map +1 -0
- package/lib/jupyter/lite/translation/translation.d.ts +13 -0
- package/lib/jupyter/lite/translation/translation.js +52 -0
- package/lib/jupyter/lite/translation/translation.js.map +1 -0
- package/lib/jupyter/lite/types/index.d.ts +1 -0
- package/lib/jupyter/lite/types/index.js +4 -0
- package/lib/jupyter/lite/types/index.js.map +1 -0
- package/lib/jupyter/lite/types/tokens.d.ts +27 -0
- package/lib/jupyter/lite/types/tokens.js +4 -0
- package/lib/jupyter/lite/types/tokens.js.map +1 -0
- package/lib/jupyter/services/ServiceManagerLite.js +15 -6
- package/lib/jupyter/services/ServiceManagerLite.js.map +1 -1
- package/lib/state/JupyterReactState.js +7 -8
- package/lib/state/JupyterReactState.js.map +1 -1
- package/lib/theme/JupyterLabCss.js +4 -2
- package/lib/theme/JupyterLabCss.js.map +1 -1
- package/package.json +23 -16
- package/schema/kernel.v0.schema.json +42 -0
- package/style/icons/pyodide.svg +17 -0
- package/lib/components/kernel/Kernelndicator.js.map +0 -1
- package/lib/examples/NotebookToc.js.map +0 -1
- /package/lib/examples/{NotebookToc.d.ts → KernelExecutorLite.d.ts} +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Definitions for the Pyodide kernel.
|
|
3
|
+
*/
|
|
4
|
+
import { TDriveMethod, TDriveRequest, TDriveResponse } from '@jupyterlite/contents';
|
|
5
|
+
import { IWorkerKernel } from '@jupyterlite/kernel';
|
|
6
|
+
/**
|
|
7
|
+
* The schema for a Warehouse-like index, as used by piplite.
|
|
8
|
+
*/
|
|
9
|
+
export * as PIPLITE_INDEX_SCHEMA from './schema/piplite.v0.schema.json';
|
|
10
|
+
/**
|
|
11
|
+
* An interface for Pyodide workers.
|
|
12
|
+
*/
|
|
13
|
+
export interface IPyodideWorkerKernel extends IWorkerKernel {
|
|
14
|
+
/**
|
|
15
|
+
* Handle any lazy initialization activities.
|
|
16
|
+
*/
|
|
17
|
+
initialize(options: IPyodideWorkerKernel.IOptions): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Process drive request
|
|
20
|
+
* @param data
|
|
21
|
+
*/
|
|
22
|
+
processDriveRequest<T extends TDriveMethod>(data: TDriveRequest<T>): TDriveResponse<T>;
|
|
23
|
+
/**
|
|
24
|
+
* Process worker message
|
|
25
|
+
* @param msg
|
|
26
|
+
*/
|
|
27
|
+
processWorkerMessage(msg: any): void;
|
|
28
|
+
/**
|
|
29
|
+
* Register a callback for handling messages from the worker.
|
|
30
|
+
*/
|
|
31
|
+
registerCallback(callback: (msg: any) => void): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Deprecated.
|
|
35
|
+
*/
|
|
36
|
+
export type IRemotePyodideWorkerKernel = IPyodideWorkerKernel;
|
|
37
|
+
/**
|
|
38
|
+
* An namespace for Pyodide workers.
|
|
39
|
+
*/
|
|
40
|
+
export declare namespace IPyodideWorkerKernel {
|
|
41
|
+
/**
|
|
42
|
+
* Initialization options for a worker.
|
|
43
|
+
*/
|
|
44
|
+
interface IOptions extends IWorkerKernel.IOptions {
|
|
45
|
+
/**
|
|
46
|
+
* The URL of the main `pyodide.js` file in the standard pyodide layout.
|
|
47
|
+
*/
|
|
48
|
+
pyodideUrl: string;
|
|
49
|
+
/**
|
|
50
|
+
* The URL of a pyodide index file in the standard pyodide layout.
|
|
51
|
+
*/
|
|
52
|
+
indexUrl: string;
|
|
53
|
+
/**
|
|
54
|
+
* The URL of the `piplite` wheel for bootstrapping.
|
|
55
|
+
*/
|
|
56
|
+
pipliteWheelUrl: string;
|
|
57
|
+
/**
|
|
58
|
+
* The URLs of additional warehouse-like wheel listings.
|
|
59
|
+
*/
|
|
60
|
+
pipliteUrls: string[];
|
|
61
|
+
/**
|
|
62
|
+
* Whether `piplite` should fall back to the hard-coded `pypi.org` for resolving packages.
|
|
63
|
+
*/
|
|
64
|
+
disablePyPIFallback: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* The current working directory in which to start the kernel.
|
|
67
|
+
*/
|
|
68
|
+
location: string;
|
|
69
|
+
/**
|
|
70
|
+
* Whether or not to mount the Emscripten drive
|
|
71
|
+
*/
|
|
72
|
+
mountDrive: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* additional options to provide to `loadPyodide`
|
|
75
|
+
* @see https://pyodide.org/en/stable/usage/api/js-api.html#globalThis.loadPyodide
|
|
76
|
+
*/
|
|
77
|
+
loadPyodideOptions: Record<string, any> & {
|
|
78
|
+
lockFileURL: string;
|
|
79
|
+
packages: string[];
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright (c) Jupyter Development Team.
|
|
2
|
+
// Distributed under the terms of the Modified BSD License.
|
|
3
|
+
/**
|
|
4
|
+
* The schema for a Warehouse-like index, as used by piplite.
|
|
5
|
+
*/
|
|
6
|
+
// @ts-expect-error - JSON import is not typed
|
|
7
|
+
export * as PIPLITE_INDEX_SCHEMA from './schema/piplite.v0.schema.json';
|
|
8
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../../src/jupyter/lite/pyodide-kernel/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAa3D;;GAEG;AACH,8CAA8C;AAC9C,OAAO,KAAK,oBAAoB,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import type Pyodide from 'pyodide';
|
|
2
|
+
import type { DriveFS } from '@jupyterlite/contents';
|
|
3
|
+
import { KernelMessage } from '@jupyterlab/services';
|
|
4
|
+
import type { IPyodideWorkerKernel } from './tokens';
|
|
5
|
+
export declare class PyodideRemoteKernel {
|
|
6
|
+
constructor();
|
|
7
|
+
/**
|
|
8
|
+
* Accept the URLs from the host
|
|
9
|
+
**/
|
|
10
|
+
initialize(options: IPyodideWorkerKernel.IOptions): Promise<void>;
|
|
11
|
+
protected initRuntime(options: IPyodideWorkerKernel.IOptions): Promise<void>;
|
|
12
|
+
protected initPackageManager(options: IPyodideWorkerKernel.IOptions): Promise<void>;
|
|
13
|
+
protected initKernel(options: IPyodideWorkerKernel.IOptions): Promise<void>;
|
|
14
|
+
protected initGlobals(options: IPyodideWorkerKernel.IOptions): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Setup custom Emscripten FileSystem
|
|
17
|
+
*/
|
|
18
|
+
protected initFilesystem(options: IPyodideWorkerKernel.IOptions): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Recursively convert a Map to a JavaScript object
|
|
21
|
+
* @param obj A Map, Array, or other object to convert
|
|
22
|
+
*/
|
|
23
|
+
mapToObject(obj: any): any;
|
|
24
|
+
/**
|
|
25
|
+
* Format the response from the Pyodide evaluation.
|
|
26
|
+
*
|
|
27
|
+
* @param res The result object from the Pyodide evaluation
|
|
28
|
+
*/
|
|
29
|
+
formatResult(res: any): any;
|
|
30
|
+
/**
|
|
31
|
+
* Register the callback function to send messages from the worker back to the main thread.
|
|
32
|
+
* @param callback the callback to register
|
|
33
|
+
*/
|
|
34
|
+
registerCallback(callback: (msg: any) => void): void;
|
|
35
|
+
/**
|
|
36
|
+
* Makes sure pyodide is ready before continuing, and cache the parent message.
|
|
37
|
+
*/
|
|
38
|
+
setup(parent: any): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Execute code with the interpreter.
|
|
41
|
+
*
|
|
42
|
+
* @param content The incoming message with the code to execute.
|
|
43
|
+
*/
|
|
44
|
+
execute(content: any, parent: any): Promise<any>;
|
|
45
|
+
/**
|
|
46
|
+
* Complete the code submitted by a user.
|
|
47
|
+
*
|
|
48
|
+
* @param content The incoming message with the code to complete.
|
|
49
|
+
*/
|
|
50
|
+
complete(content: any, parent: any): Promise<any>;
|
|
51
|
+
/**
|
|
52
|
+
* Inspect the code submitted by a user.
|
|
53
|
+
*
|
|
54
|
+
* @param content The incoming message with the code to inspect.
|
|
55
|
+
*/
|
|
56
|
+
inspect(content: {
|
|
57
|
+
code: string;
|
|
58
|
+
cursor_pos: number;
|
|
59
|
+
detail_level: 0 | 1;
|
|
60
|
+
}, parent: any): Promise<any>;
|
|
61
|
+
/**
|
|
62
|
+
* Check code for completeness submitted by a user.
|
|
63
|
+
*
|
|
64
|
+
* @param content The incoming message with the code to check.
|
|
65
|
+
*/
|
|
66
|
+
isComplete(content: {
|
|
67
|
+
code: string;
|
|
68
|
+
}, parent: any): Promise<any>;
|
|
69
|
+
/**
|
|
70
|
+
* Respond to the commInfoRequest.
|
|
71
|
+
*
|
|
72
|
+
* @param content The incoming message with the comm target name.
|
|
73
|
+
*/
|
|
74
|
+
commInfo(content: any, parent: any): Promise<KernelMessage.ICommInfoReplyMsg['content']>;
|
|
75
|
+
/**
|
|
76
|
+
* Respond to the commOpen.
|
|
77
|
+
*
|
|
78
|
+
* @param content The incoming message with the comm open.
|
|
79
|
+
*/
|
|
80
|
+
commOpen(content: any, parent: any): Promise<any>;
|
|
81
|
+
/**
|
|
82
|
+
* Respond to the commMsg.
|
|
83
|
+
*
|
|
84
|
+
* @param content The incoming message with the comm msg.
|
|
85
|
+
*/
|
|
86
|
+
commMsg(content: any, parent: any): Promise<any>;
|
|
87
|
+
/**
|
|
88
|
+
* Respond to the commClose.
|
|
89
|
+
*
|
|
90
|
+
* @param content The incoming message with the comm close.
|
|
91
|
+
*/
|
|
92
|
+
commClose(content: any, parent: any): Promise<any>;
|
|
93
|
+
/**
|
|
94
|
+
* Resolve the input request by getting back the reply from the main thread
|
|
95
|
+
*
|
|
96
|
+
* @param content The incoming message with the reply
|
|
97
|
+
*/
|
|
98
|
+
inputReply(content: any, parent: any): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Send a input request to the front-end.
|
|
101
|
+
*
|
|
102
|
+
* @param prompt the text to show at the prompt
|
|
103
|
+
* @param password Is the request for a password?
|
|
104
|
+
*/
|
|
105
|
+
sendInputRequest(prompt: string, password: boolean): Promise<void>;
|
|
106
|
+
getpass(prompt: string): Promise<any>;
|
|
107
|
+
input(prompt: string): Promise<any>;
|
|
108
|
+
/**
|
|
109
|
+
* Send a comm message to the front-end.
|
|
110
|
+
*
|
|
111
|
+
* @param type The type of the comm message.
|
|
112
|
+
* @param content The content.
|
|
113
|
+
* @param metadata The metadata.
|
|
114
|
+
* @param ident The ident.
|
|
115
|
+
* @param buffers The binary buffers.
|
|
116
|
+
*/
|
|
117
|
+
sendComm(type: string, content: any, metadata: any, ident: any, buffers: any): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Initialization options.
|
|
120
|
+
*/
|
|
121
|
+
protected _options: IPyodideWorkerKernel.IOptions | null;
|
|
122
|
+
/**
|
|
123
|
+
* A promise that resolves when all initiaization is complete.
|
|
124
|
+
*/
|
|
125
|
+
protected _initialized: Promise<void>;
|
|
126
|
+
private _initializer;
|
|
127
|
+
protected _pyodide: Pyodide.PyodideInterface;
|
|
128
|
+
/** TODO: real typing */
|
|
129
|
+
protected _localPath: string;
|
|
130
|
+
protected _driveName: string;
|
|
131
|
+
protected _kernel: any;
|
|
132
|
+
protected _interpreter: any;
|
|
133
|
+
protected _stdout_stream: any;
|
|
134
|
+
protected _stderr_stream: any;
|
|
135
|
+
protected _resolveInputReply: any;
|
|
136
|
+
protected _driveFS: DriveFS | null;
|
|
137
|
+
protected _sendWorkerMessage: (msg: any) => void;
|
|
138
|
+
}
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
// Copyright (c) Jupyter Development Team.
|
|
2
|
+
// Distributed under the terms of the Modified BSD License.
|
|
3
|
+
export class PyodideRemoteKernel {
|
|
4
|
+
constructor() {
|
|
5
|
+
this._initialized = new Promise((resolve, reject) => {
|
|
6
|
+
this._initializer = { resolve, reject };
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Accept the URLs from the host
|
|
11
|
+
**/
|
|
12
|
+
async initialize(options) {
|
|
13
|
+
this._options = options;
|
|
14
|
+
if (options.location.includes(':')) {
|
|
15
|
+
const parts = options.location.split(':');
|
|
16
|
+
this._driveName = parts[0];
|
|
17
|
+
this._localPath = parts[1];
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this._driveName = '';
|
|
21
|
+
this._localPath = options.location;
|
|
22
|
+
}
|
|
23
|
+
await this.initRuntime(options);
|
|
24
|
+
await this.initFilesystem(options);
|
|
25
|
+
await this.initPackageManager(options);
|
|
26
|
+
await this.initKernel(options);
|
|
27
|
+
await this.initGlobals(options);
|
|
28
|
+
this._initializer?.resolve();
|
|
29
|
+
}
|
|
30
|
+
async initRuntime(options) {
|
|
31
|
+
const { pyodideUrl, indexUrl } = options;
|
|
32
|
+
let loadPyodide;
|
|
33
|
+
// Always use dynamic import for module workers
|
|
34
|
+
// In module workers, importScripts exists but throws when called
|
|
35
|
+
// Dynamic import works for both .mjs and .js files in module workers
|
|
36
|
+
const pyodideModule = await import(
|
|
37
|
+
/* webpackIgnore: true */ /* @vite-ignore */ pyodideUrl);
|
|
38
|
+
// Pyodide may export loadPyodide directly, or set it on self (for non-ESM builds)
|
|
39
|
+
loadPyodide = pyodideModule.loadPyodide || self.loadPyodide;
|
|
40
|
+
if (typeof loadPyodide !== 'function') {
|
|
41
|
+
throw new Error(`Failed to load pyodide from ${pyodideUrl}. loadPyodide is not a function.`);
|
|
42
|
+
}
|
|
43
|
+
this._pyodide = await loadPyodide({
|
|
44
|
+
indexURL: indexUrl,
|
|
45
|
+
...options.loadPyodideOptions,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async initPackageManager(options) {
|
|
49
|
+
if (!this._options) {
|
|
50
|
+
throw new Error('Uninitialized');
|
|
51
|
+
}
|
|
52
|
+
const { pipliteWheelUrl, disablePyPIFallback, pipliteUrls, loadPyodideOptions, } = this._options;
|
|
53
|
+
const preloaded = (loadPyodideOptions || {}).packages || [];
|
|
54
|
+
if (!preloaded.includes('micropip')) {
|
|
55
|
+
await this._pyodide.loadPackage(['micropip']);
|
|
56
|
+
}
|
|
57
|
+
if (!preloaded.includes('piplite')) {
|
|
58
|
+
await this._pyodide.runPythonAsync(`
|
|
59
|
+
import micropip
|
|
60
|
+
await micropip.install('${pipliteWheelUrl}', keep_going=True)
|
|
61
|
+
`);
|
|
62
|
+
}
|
|
63
|
+
// get piplite early enough to impact pyodide-kernel dependencies
|
|
64
|
+
await this._pyodide.runPythonAsync(`
|
|
65
|
+
import piplite.piplite
|
|
66
|
+
piplite.piplite._PIPLITE_DISABLE_PYPI = ${disablePyPIFallback ? 'True' : 'False'}
|
|
67
|
+
piplite.piplite._PIPLITE_URLS = ${JSON.stringify(pipliteUrls)}
|
|
68
|
+
`);
|
|
69
|
+
}
|
|
70
|
+
async initKernel(options) {
|
|
71
|
+
const preloaded = (options.loadPyodideOptions || {}).packages || [];
|
|
72
|
+
const toLoad = [
|
|
73
|
+
'ssl',
|
|
74
|
+
'sqlite3',
|
|
75
|
+
'ipykernel',
|
|
76
|
+
'comm',
|
|
77
|
+
'pyodide_kernel',
|
|
78
|
+
'ipython',
|
|
79
|
+
];
|
|
80
|
+
const scriptLines = [];
|
|
81
|
+
// use piplite for packages that weren't pre-loaded
|
|
82
|
+
for (const pkgName of toLoad) {
|
|
83
|
+
if (!preloaded.includes(pkgName)) {
|
|
84
|
+
scriptLines.push(`await piplite.install('${pkgName}', keep_going=True)`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// import the kernel
|
|
88
|
+
scriptLines.push('import pyodide_kernel');
|
|
89
|
+
// cd to the kernel location
|
|
90
|
+
if (options.mountDrive && this._localPath) {
|
|
91
|
+
scriptLines.push('import os', `os.chdir("${this._localPath}")`);
|
|
92
|
+
}
|
|
93
|
+
// from this point forward, only use piplite (but not %pip)
|
|
94
|
+
await this._pyodide.runPythonAsync(scriptLines.join('\n'));
|
|
95
|
+
}
|
|
96
|
+
async initGlobals(options) {
|
|
97
|
+
const { globals } = this._pyodide;
|
|
98
|
+
this._kernel = globals.get('pyodide_kernel').kernel_instance.copy();
|
|
99
|
+
this._stdout_stream = globals.get('pyodide_kernel').stdout_stream.copy();
|
|
100
|
+
this._stderr_stream = globals.get('pyodide_kernel').stderr_stream.copy();
|
|
101
|
+
this._interpreter = this._kernel.interpreter.copy();
|
|
102
|
+
this._interpreter.send_comm = this.sendComm.bind(this);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Setup custom Emscripten FileSystem
|
|
106
|
+
*/
|
|
107
|
+
async initFilesystem(options) {
|
|
108
|
+
if (options.mountDrive) {
|
|
109
|
+
const mountpoint = '/drive';
|
|
110
|
+
const { FS, PATH, ERRNO_CODES } = this._pyodide;
|
|
111
|
+
const { baseUrl } = options;
|
|
112
|
+
const { DriveFS } = await import('@jupyterlite/contents');
|
|
113
|
+
const driveFS = new DriveFS({
|
|
114
|
+
FS: FS,
|
|
115
|
+
PATH,
|
|
116
|
+
ERRNO_CODES,
|
|
117
|
+
baseUrl,
|
|
118
|
+
driveName: this._driveName,
|
|
119
|
+
mountpoint,
|
|
120
|
+
});
|
|
121
|
+
FS.mkdirTree(mountpoint);
|
|
122
|
+
FS.mount(driveFS, {}, mountpoint);
|
|
123
|
+
FS.chdir(mountpoint);
|
|
124
|
+
this._driveFS = driveFS;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Recursively convert a Map to a JavaScript object
|
|
129
|
+
* @param obj A Map, Array, or other object to convert
|
|
130
|
+
*/
|
|
131
|
+
mapToObject(obj) {
|
|
132
|
+
const out = obj instanceof Array ? [] : {};
|
|
133
|
+
obj.forEach((value, key) => {
|
|
134
|
+
out[key] =
|
|
135
|
+
value instanceof Map || value instanceof Array
|
|
136
|
+
? this.mapToObject(value)
|
|
137
|
+
: value;
|
|
138
|
+
});
|
|
139
|
+
return out;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Format the response from the Pyodide evaluation.
|
|
143
|
+
*
|
|
144
|
+
* @param res The result object from the Pyodide evaluation
|
|
145
|
+
*/
|
|
146
|
+
formatResult(res) {
|
|
147
|
+
if (!(res instanceof this._pyodide.ffi.PyProxy)) {
|
|
148
|
+
return res;
|
|
149
|
+
}
|
|
150
|
+
// TODO: this is a bit brittle
|
|
151
|
+
const m = res.toJs();
|
|
152
|
+
const results = this.mapToObject(m);
|
|
153
|
+
return results;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Register the callback function to send messages from the worker back to the main thread.
|
|
157
|
+
* @param callback the callback to register
|
|
158
|
+
*/
|
|
159
|
+
registerCallback(callback) {
|
|
160
|
+
this._sendWorkerMessage = callback;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Makes sure pyodide is ready before continuing, and cache the parent message.
|
|
164
|
+
*/
|
|
165
|
+
async setup(parent) {
|
|
166
|
+
await this._initialized;
|
|
167
|
+
this._kernel._parent_header = this._pyodide.toPy(parent);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Execute code with the interpreter.
|
|
171
|
+
*
|
|
172
|
+
* @param content The incoming message with the code to execute.
|
|
173
|
+
*/
|
|
174
|
+
async execute(content, parent) {
|
|
175
|
+
await this.setup(parent);
|
|
176
|
+
const publishExecutionResult = (prompt_count, data, metadata) => {
|
|
177
|
+
const bundle = {
|
|
178
|
+
execution_count: prompt_count,
|
|
179
|
+
data: this.formatResult(data),
|
|
180
|
+
metadata: this.formatResult(metadata),
|
|
181
|
+
};
|
|
182
|
+
this._sendWorkerMessage({
|
|
183
|
+
parentHeader: this.formatResult(this._kernel._parent_header)['header'],
|
|
184
|
+
bundle,
|
|
185
|
+
type: 'execute_result',
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
const publishExecutionError = (ename, evalue, traceback) => {
|
|
189
|
+
const bundle = {
|
|
190
|
+
ename: ename,
|
|
191
|
+
evalue: evalue,
|
|
192
|
+
traceback: traceback,
|
|
193
|
+
};
|
|
194
|
+
this._sendWorkerMessage({
|
|
195
|
+
parentHeader: this.formatResult(this._kernel._parent_header)['header'],
|
|
196
|
+
bundle,
|
|
197
|
+
type: 'execute_error',
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
const clearOutputCallback = (wait) => {
|
|
201
|
+
const bundle = {
|
|
202
|
+
wait: this.formatResult(wait),
|
|
203
|
+
};
|
|
204
|
+
this._sendWorkerMessage({
|
|
205
|
+
parentHeader: this.formatResult(this._kernel._parent_header)['header'],
|
|
206
|
+
bundle,
|
|
207
|
+
type: 'clear_output',
|
|
208
|
+
});
|
|
209
|
+
};
|
|
210
|
+
const displayDataCallback = (data, metadata, transient) => {
|
|
211
|
+
const bundle = {
|
|
212
|
+
data: this.formatResult(data),
|
|
213
|
+
metadata: this.formatResult(metadata),
|
|
214
|
+
transient: this.formatResult(transient),
|
|
215
|
+
};
|
|
216
|
+
this._sendWorkerMessage({
|
|
217
|
+
parentHeader: this.formatResult(this._kernel._parent_header)['header'],
|
|
218
|
+
bundle,
|
|
219
|
+
type: 'display_data',
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
const updateDisplayDataCallback = (data, metadata, transient) => {
|
|
223
|
+
const bundle = {
|
|
224
|
+
data: this.formatResult(data),
|
|
225
|
+
metadata: this.formatResult(metadata),
|
|
226
|
+
transient: this.formatResult(transient),
|
|
227
|
+
};
|
|
228
|
+
this._sendWorkerMessage({
|
|
229
|
+
parentHeader: this.formatResult(this._kernel._parent_header)['header'],
|
|
230
|
+
bundle,
|
|
231
|
+
type: 'update_display_data',
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
const publishStreamCallback = (name, text) => {
|
|
235
|
+
const bundle = {
|
|
236
|
+
name: this.formatResult(name),
|
|
237
|
+
text: this.formatResult(text),
|
|
238
|
+
};
|
|
239
|
+
this._sendWorkerMessage({
|
|
240
|
+
parentHeader: this.formatResult(this._kernel._parent_header)['header'],
|
|
241
|
+
bundle,
|
|
242
|
+
type: 'stream',
|
|
243
|
+
});
|
|
244
|
+
};
|
|
245
|
+
this._stdout_stream.publish_stream_callback = publishStreamCallback;
|
|
246
|
+
this._stderr_stream.publish_stream_callback = publishStreamCallback;
|
|
247
|
+
this._interpreter.display_pub.clear_output_callback = clearOutputCallback;
|
|
248
|
+
this._interpreter.display_pub.display_data_callback = displayDataCallback;
|
|
249
|
+
this._interpreter.display_pub.update_display_data_callback =
|
|
250
|
+
updateDisplayDataCallback;
|
|
251
|
+
this._interpreter.displayhook.publish_execution_result =
|
|
252
|
+
publishExecutionResult;
|
|
253
|
+
this._interpreter.input = this.input.bind(this);
|
|
254
|
+
this._interpreter.getpass = this.getpass.bind(this);
|
|
255
|
+
const res = await this._kernel.run(content.code);
|
|
256
|
+
const results = this.formatResult(res);
|
|
257
|
+
if (results['status'] === 'error') {
|
|
258
|
+
publishExecutionError(results['ename'], results['evalue'], results['traceback']);
|
|
259
|
+
}
|
|
260
|
+
return results;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Complete the code submitted by a user.
|
|
264
|
+
*
|
|
265
|
+
* @param content The incoming message with the code to complete.
|
|
266
|
+
*/
|
|
267
|
+
async complete(content, parent) {
|
|
268
|
+
await this.setup(parent);
|
|
269
|
+
const res = this._kernel.complete(content.code, content.cursor_pos);
|
|
270
|
+
const results = this.formatResult(res);
|
|
271
|
+
return results;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Inspect the code submitted by a user.
|
|
275
|
+
*
|
|
276
|
+
* @param content The incoming message with the code to inspect.
|
|
277
|
+
*/
|
|
278
|
+
async inspect(content, parent) {
|
|
279
|
+
await this.setup(parent);
|
|
280
|
+
const res = this._kernel.inspect(content.code, content.cursor_pos, content.detail_level);
|
|
281
|
+
const results = this.formatResult(res);
|
|
282
|
+
return results;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Check code for completeness submitted by a user.
|
|
286
|
+
*
|
|
287
|
+
* @param content The incoming message with the code to check.
|
|
288
|
+
*/
|
|
289
|
+
async isComplete(content, parent) {
|
|
290
|
+
await this.setup(parent);
|
|
291
|
+
const res = this._kernel.is_complete(content.code);
|
|
292
|
+
const results = this.formatResult(res);
|
|
293
|
+
return results;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Respond to the commInfoRequest.
|
|
297
|
+
*
|
|
298
|
+
* @param content The incoming message with the comm target name.
|
|
299
|
+
*/
|
|
300
|
+
async commInfo(content, parent) {
|
|
301
|
+
await this.setup(parent);
|
|
302
|
+
const res = this._kernel.comm_info(content.target_name);
|
|
303
|
+
const results = this.formatResult(res);
|
|
304
|
+
return {
|
|
305
|
+
comms: results,
|
|
306
|
+
status: 'ok',
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Respond to the commOpen.
|
|
311
|
+
*
|
|
312
|
+
* @param content The incoming message with the comm open.
|
|
313
|
+
*/
|
|
314
|
+
async commOpen(content, parent) {
|
|
315
|
+
await this.setup(parent);
|
|
316
|
+
const res = this._kernel.comm_manager.comm_open(this._pyodide.toPy(null), this._pyodide.toPy(null), this._pyodide.toPy(content));
|
|
317
|
+
const results = this.formatResult(res);
|
|
318
|
+
return results;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Respond to the commMsg.
|
|
322
|
+
*
|
|
323
|
+
* @param content The incoming message with the comm msg.
|
|
324
|
+
*/
|
|
325
|
+
async commMsg(content, parent) {
|
|
326
|
+
await this.setup(parent);
|
|
327
|
+
const res = this._kernel.comm_manager.comm_msg(this._pyodide.toPy(null), this._pyodide.toPy(null), this._pyodide.toPy(content));
|
|
328
|
+
const results = this.formatResult(res);
|
|
329
|
+
return results;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Respond to the commClose.
|
|
333
|
+
*
|
|
334
|
+
* @param content The incoming message with the comm close.
|
|
335
|
+
*/
|
|
336
|
+
async commClose(content, parent) {
|
|
337
|
+
await this.setup(parent);
|
|
338
|
+
const res = this._kernel.comm_manager.comm_close(this._pyodide.toPy(null), this._pyodide.toPy(null), this._pyodide.toPy(content));
|
|
339
|
+
const results = this.formatResult(res);
|
|
340
|
+
return results;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Resolve the input request by getting back the reply from the main thread
|
|
344
|
+
*
|
|
345
|
+
* @param content The incoming message with the reply
|
|
346
|
+
*/
|
|
347
|
+
async inputReply(content, parent) {
|
|
348
|
+
await this.setup(parent);
|
|
349
|
+
this._resolveInputReply(content);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Send a input request to the front-end.
|
|
353
|
+
*
|
|
354
|
+
* @param prompt the text to show at the prompt
|
|
355
|
+
* @param password Is the request for a password?
|
|
356
|
+
*/
|
|
357
|
+
async sendInputRequest(prompt, password) {
|
|
358
|
+
const content = {
|
|
359
|
+
prompt,
|
|
360
|
+
password,
|
|
361
|
+
};
|
|
362
|
+
this._sendWorkerMessage({
|
|
363
|
+
type: 'input_request',
|
|
364
|
+
parentHeader: this.formatResult(this._kernel._parent_header)['header'],
|
|
365
|
+
content,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
async getpass(prompt) {
|
|
369
|
+
prompt = typeof prompt === 'undefined' ? '' : prompt;
|
|
370
|
+
await this.sendInputRequest(prompt, true);
|
|
371
|
+
const replyPromise = new Promise(resolve => {
|
|
372
|
+
this._resolveInputReply = resolve;
|
|
373
|
+
});
|
|
374
|
+
const result = await replyPromise;
|
|
375
|
+
return result['value'];
|
|
376
|
+
}
|
|
377
|
+
async input(prompt) {
|
|
378
|
+
prompt = typeof prompt === 'undefined' ? '' : prompt;
|
|
379
|
+
await this.sendInputRequest(prompt, false);
|
|
380
|
+
const replyPromise = new Promise(resolve => {
|
|
381
|
+
this._resolveInputReply = resolve;
|
|
382
|
+
});
|
|
383
|
+
const result = await replyPromise;
|
|
384
|
+
return result['value'];
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Send a comm message to the front-end.
|
|
388
|
+
*
|
|
389
|
+
* @param type The type of the comm message.
|
|
390
|
+
* @param content The content.
|
|
391
|
+
* @param metadata The metadata.
|
|
392
|
+
* @param ident The ident.
|
|
393
|
+
* @param buffers The binary buffers.
|
|
394
|
+
*/
|
|
395
|
+
async sendComm(type, content, metadata, ident, buffers) {
|
|
396
|
+
this._sendWorkerMessage({
|
|
397
|
+
type: type,
|
|
398
|
+
content: this.formatResult(content),
|
|
399
|
+
metadata: this.formatResult(metadata),
|
|
400
|
+
ident: this.formatResult(ident),
|
|
401
|
+
buffers: this.formatResult(buffers),
|
|
402
|
+
parentHeader: this.formatResult(this._kernel._parent_header)['header'],
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Initialization options.
|
|
407
|
+
*/
|
|
408
|
+
_options = null;
|
|
409
|
+
/**
|
|
410
|
+
* A promise that resolves when all initiaization is complete.
|
|
411
|
+
*/
|
|
412
|
+
_initialized;
|
|
413
|
+
_initializer = null;
|
|
414
|
+
_pyodide = null;
|
|
415
|
+
/** TODO: real typing */
|
|
416
|
+
_localPath = '';
|
|
417
|
+
_driveName = '';
|
|
418
|
+
_kernel;
|
|
419
|
+
_interpreter;
|
|
420
|
+
_stdout_stream;
|
|
421
|
+
_stderr_stream;
|
|
422
|
+
_resolveInputReply;
|
|
423
|
+
_driveFS = null;
|
|
424
|
+
_sendWorkerMessage = () => { };
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/jupyter/lite/pyodide-kernel/worker.ts"],"names":[],"mappings":"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"}
|