Upgrade Pyodide to v0.22.1 (#1144)

* upgrade to pyodide 0.22.1

* pin bokeh in panel examples

* fix typo

* fix tests by using custom bokeh wheel

* fix bokeh interactive test

* adhere to new loadPackage API
This commit is contained in:
Madhur Tandon
2023-02-08 22:01:51 +05:30
committed by GitHub
parent 4c30359b71
commit 9a908e5fd0
13 changed files with 673 additions and 2189 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -30,7 +30,7 @@
"jest": "29.1.2",
"jest-environment-jsdom": "29.1.2",
"prettier": "2.7.1",
"pyodide": "0.21.3",
"pyodide": "0.22.1",
"rollup": "2.79.1",
"rollup-plugin-copy": "3.4.0",
"rollup-plugin-css-only": "3.1.0",

View File

@@ -53,8 +53,8 @@ export const defaultConfig: AppConfig = {
type: 'app',
interpreters: [
{
src: 'https://cdn.jsdelivr.net/pyodide/v0.21.3/full/pyodide.js',
name: 'pyodide-0.21.3',
src: 'https://cdn.jsdelivr.net/pyodide/v0.22.1/full/pyodide.js',
name: 'pyodide-0.22.1',
lang: 'python',
},
],

View File

@@ -28,7 +28,7 @@ export class PyodideInterpreter extends Interpreter {
constructor(
config: AppConfig,
stdio: Stdio,
src = 'https://cdn.jsdelivr.net/pyodide/v0.21.3/full/pyodide.js',
src = 'https://cdn.jsdelivr.net/pyodide/v0.22.1/full/pyodide.js',
name = 'pyodide-default',
lang = 'python',
) {
@@ -78,6 +78,7 @@ export class PyodideInterpreter extends Interpreter {
await this.loadPackage('micropip');
}
logger.info('pyodide loaded and initialized');
this.run('print("Python initialization complete")')
}
run(code: string): unknown {
@@ -90,7 +91,17 @@ export class PyodideInterpreter extends Interpreter {
async loadPackage(names: string | string[]): Promise<void> {
logger.info(`pyodide.loadPackage: ${names.toString()}`);
await this.interface.loadPackage(names, logger.info.bind(logger), logger.info.bind(logger));
// the new way in v0.22.1 is to pass it as a dict of options i.e.
// { messageCallback: logger.info.bind(logger), errorCallback: logger.info.bind(logger) }
// but one of our tests tries to use a locally downloaded older version of pyodide
// for which the signature of `loadPackage` accepts the above params as args i.e.
// the call uses `logger.info.bind(logger), logger.info.bind(logger)`.
if (this.run("import sys; sys.modules['pyodide'].__version__").toString().startsWith("0.22")) {
await this.interface.loadPackage(names, { messageCallback: logger.info.bind(logger), errorCallback: logger.info.bind(logger) });
}
else {
await this.interface.loadPackage(names, logger.info.bind(logger), logger.info.bind(logger));
}
}
async installPackage(package_name: string | string[]): Promise<void> {

View File

@@ -66,7 +66,7 @@ class TestConfig(PyScriptTest):
)
assert self.console.log.lines[-1] == "config name: app with external config"
# The default pyodide version is 0.21.3 as of writing
# The default pyodide version is 0.22.1 as of writing
# this test which is newer than the one we are loading below
# (after downloading locally) -- which is 0.20.0
@@ -226,8 +226,8 @@ class TestConfig(PyScriptTest):
{
"interpreters": [
{
"src": "https://cdn.jsdelivr.net/pyodide/v0.21.3/full/pyodide.js",
"name": "pyodide-0.21.3",
"src": "https://cdn.jsdelivr.net/pyodide/v0.22.1/full/pyodide.js",
"name": "pyodide-0.22.1",
"lang": "python"
},
{

View File

@@ -104,7 +104,7 @@ class TestExamples(PyScriptTest):
self.goto("examples/bokeh.html")
self.wait_for_pyscript()
assert self.page.title() == "Bokeh Example"
wait_for_render(self.page, "*", '<div.*class=\\"bk\\".*>')
wait_for_render(self.page, "*", '<div.*?class="bk.*".*?>')
self.assert_no_banners()
self.check_tutor_generated_code()