Repository navigation
Conversation
Pyodide fetches every wheel an app needs at once. `python -m http.server` queues only 5 pending connections, and on macOS the rest are reset. Pyodide skips a package it could not fetch, so the app later fails to import it.
- Python 3.12 -> 3.13. The libsass wheel is rebuilt for the new pyemscripten_2025_0 platform, and the typeshed stubs target 3.13. - Pyodide 0.29 converts Python dicts to plain JS objects in toJs(), so the ASGI event handlers ask for that directly instead of building an object from a Map. - Pyodide 0.28 dropped info.version from pyodide-lock.json, which orig_pyodide_lock() used to notice a newly unpacked Pyodide. - joblib now warns on import that it will run in serial mode, so tell it not to try multiprocessing.
Pyodide 0.29.5 ships pydantic 2.12.5, which meets shinychat 0.7's pydantic>=2.11.
Contributor
Coverage report
Test suite run success342 tests passing in 20 suites. Report generated by 🧪jest coverage report action from 76626bb |
Collaborator
Author
|
Closing in favor of posit-dev/shinylive#263, which upgrades to Pyodide 314.0.7. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Upgrades the bundled Pyodide from 0.27.7 to 0.29.5 (Python 3.12 → 3.13), and bumps shinychat from 0.6.1 to 0.7.2, which needs the newer pydantic. Part of posit-dev/shinylive#254.
Important
Blocked on the libsass wheel. CI downloads
libsass-0.23.0-cp313-abi3-pyemscripten_2025_0_wasm32.whlfrom pkg.garrickadenbuie.com, which only has the oldpyodide_2024_0build, somake allfails until the new wheel is published there. I built it locally from gadenbuie/libsass-pythondevwith pyodide-build 0.39.3 and the 0.29.5 cross-build env, and all the tests here ran against that build. To publish it, gadenbuie/libsass-python'spyodide.ymlneeds the 0.29.5 / Python 3.13 / Emscripten 4.0.9 versions, andkeep_files: trueon the gh-pages deploy. Without that, the deploy removes the old wheel thatmainstill downloads.What changed for 0.29.5
toJs()returns plain objects. From Pyodide 0.29, a Python dict converts to a plain JS object, not aMap.Object.fromEntries(event.toJs())inmessageporthttp.tsandmessageportwebsocket-channel.tswould throw on every HTTP response and websocket message. Both now passdict_converter: Object.fromEntries, aspyodide-proxy.tsalready does.pyemscripten_2025_0platform tag. Pyodide's own wheels use the same tag.JOBLIB_MULTIPROCESSING=0, so joblib doesn't try to use multiprocessing.orig_pyodide_lock(). Pyodide 0.28 droppedinfo.versionfrompyodide-lock.json, so the check that noticed a newly unpacked Pyodide always sawNone == None. It now treats apyodide-lock.jsonwithoutshinyin it as fresh.create_typeshed.pytargets Python 3.13.src/pyodide/is recopied from the 0.29.5 dist bymake pyodide_js.shinychat 0.6.1 → 0.7.2
Pyodide 0.29.5 ships pydantic 2.12.5, which meets shinychat 0.7's
pydantic>=2.11. The lock entry was edited by hand with_get_pypi_package_info, because full lock regeneration is still broken (posit-dev/shinylive#233). orjson comes from Pyodide and moves from 3.10.1 to 3.10.16, which meets shiny'sorjson>=3.10.7.Test server
Pyodide fetches all of an app's wheels at once, about 40 for a Shiny app.
python -m http.serverqueues only 5 pending connections, and on macOS it resets the rest. Pyodide skips any package it couldn't fetch, so apps randomly failed withNo module named 'anyio'(orhtmltools). The tests now serve withtests/static_server.py, aThreadingHTTPServerwith a queue of 128. The export server uses it too.Not in this PR
shinylive_lock.jsonstill pins its own versions (starlette 0.38.1, for example), and those override Pyodide's, as they did for anyio and sniffio before. Moving to Pyodide's versions belongs with the lock regeneration in posit-dev/shinylive#233.