Skip to content

Commit

Permalink
Bump pyodide version to 0.25.0 (#141)
Browse files Browse the repository at this point in the history
* Bump pyodide version

* Fix something that wasn't done yet

* Add and use stubs

* Update typings.ts

* Fix another deprecation

* Update packages/starboard-python/package.json

* Bump some more, see what it does in CI

* Bump artifactsURL too

* Update dependencies

* v0.15.8

* Update type hint

* Lock fix?

* Add step to CI

* Revert "v0.15.8"

This reverts commit 5a3311e.

* Revert "Update dependencies"

This reverts commit ea85f3f.
  • Loading branch information
bartbroere committed Mar 8, 2024
1 parent 327d7fa commit a932580
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 13 deletions.
14 changes: 14 additions & 0 deletions .github/workflows/js-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,19 @@ jobs:
run: |
yarn install
yarn run build:nominify
tar -czvf starboard-notebook.tar.gz dist/*
- name: Upload built starboard-notebook.tar.gz as Github artifact
uses: actions/upload-artifact@v4
with:
name: starboard-notebook.tar.gz
path: packages/starboard-notebook/starboard-notebook.tar.gz
retention-days: 10

- name: Remove artifact from working directory
working-directory: packages/starboard-notebook
run: |
rm starboard-notebook.tar.gz
- name: Test
working-directory: packages/starboard-notebook
Expand All @@ -59,3 +72,4 @@ jobs:
- name: Starlit NBTest
working-directory: packages/starboard-notebook
run: npm run nbtest -- --timeout 150

2 changes: 1 addition & 1 deletion packages/starboard-notebook/src/runtime/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ export function setupRuntime(notebook: StarboardNotebookElement): Runtime {
listeners.splice(idx, 1);
},

async registerPlugin<A, B>(plugin: StarboardPlugin<A, B>, opts: A) {
async registerPlugin<A, B extends Record<string, any> | undefined>(plugin: StarboardPlugin<A, B>, opts: A) {
await plugin.register(rt, opts);
rt.plugins.register(plugin.id, plugin);
},
Expand Down
4 changes: 2 additions & 2 deletions packages/starboard-python/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"typings": "dist/starboardPython.d.ts",
"scripts": {
"build": "rimraf dist && npm run build:pyodide && rollup -c rollup.config.ts",
"build:pyodide": "esbuild node_modules/pyodide/pyodide.ts --bundle --outfile=dist/pyodide.js --external:fs/* --external:vm --external:path --format=esm",
"build:pyodide": "mkdir dist && cp node_modules/pyodide/pyodide.js dist/pyodide.js",
"test": "starlit nbtest test --timeout=60",
"test:nocoi": "starlit nbtest test --timeout=60 --cross_origin_isolated=false"
},
Expand All @@ -31,7 +31,7 @@
"dependencies": {
"@types/katex": "^0.11.1",
"lit": "^2.0.2",
"pyodide": "^0.20.0"
"pyodide": "^0.25.0"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^19.0.2",
Expand Down
13 changes: 9 additions & 4 deletions packages/starboard-python/src/pyodide/typings.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
declare type ffi = {
PyProxy: any,
PythonError: any,
};

export declare type Pyodide = {
ffi: ffi,
runPython(code: string, messageCallback?: (msg: any) => void, errorCallback?: (err: any) => void): any;
runPythonAsync(code: string, messageCallback?: (msg: any) => void, errorCallback?: (err: any) => void): Promise<any>;
loadPackage(names: string, messageCallback?: (msg: any) => void, errorCallback?: (err: any) => void): Promise<any>;
loadedPackages(packages: string[]): any;
globals: PyProxy;
unregisterJsModule(name: string): void;
registerJsModule(name: string, obj: any): void;
loadPackagesFromImports(code: string, messageCallback?: (msg: any) => void, errorCallback?: (err: any) => void): Promise<any>;
loadPackagesFromImports(code: string, options: {messageCallback?: (msg: any) => void, errorCallback?: (err: any) => void}): Promise<any>;

version: () => string;
// checkABI: any;
_module: any;
isPyProxy(v: any): boolean;

PythonError: any;
isPyProxy(v: any): boolean; // deprecated
PythonError: any; // deprecated
};

// https://pyodide.org/en/stable/usage/api/js-api.html
Expand Down
12 changes: 6 additions & 6 deletions packages/starboard-python/src/worker/pyodide-worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class PyodideKernel implements WorkerKernel {
this.proxiedDrawCanvas.apply({}, [pixels, width, height]);
};

let artifactsURL = this.options.artifactsUrl || "https://cdn.jsdelivr.net/pyodide/v0.20.0/full/";
let artifactsURL = this.options.artifactsUrl || "https://cdn.jsdelivr.net/pyodide/v0.25.0/full/";
if (!artifactsURL.endsWith("/")) artifactsURL += "/";

if (!manager.proxy && !this.options.isMainThread) {
Expand Down Expand Up @@ -130,7 +130,7 @@ class PyodideKernel implements WorkerKernel {
let wasAlreadyLoaded: boolean | undefined = undefined;
let msgBuffer: string[] = [];

await this.pyodide.loadPackagesFromImports(code, (msg) => {
await this.pyodide.loadPackagesFromImports(code, {messageCallback: (msg) => {
if (wasAlreadyLoaded === true) return;

if (msg.match(/Loaded.*\smatplotlib/)) {
Expand All @@ -157,12 +157,12 @@ class PyodideKernel implements WorkerKernel {
console.debug(msg);
}
}
});
}});

let result = await this.pyodide.runPythonAsync(code).catch((error) => error);
let displayType: PyodideWorkerResult["display"];

if (this.pyodide.isPyProxy(result)) {
if (result instanceof this.pyodide.ffi.PyProxy) {
if (result._repr_html_ !== undefined) {
result = result._repr_html_();
displayType = "html";
Expand All @@ -173,7 +173,7 @@ class PyodideKernel implements WorkerKernel {
result = result.__str__();
displayType = "default"
}
} else if (result instanceof this.pyodide.PythonError) {
} else if (result instanceof this.pyodide.ffi.PythonError) {
result = result + "";
}

Expand Down Expand Up @@ -274,7 +274,7 @@ class PyodideKernel implements WorkerKernel {
if (!x) {
return;
}
if (this.pyodide.isPyProxy(x)) {
if (x instanceof this.pyodide.ffi.PyProxy) {
x.destroy();
return;
}
Expand Down

0 comments on commit a932580

Please sign in to comment.