Skip to content

Add pyodide 0.28 #2431

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 3, 2025
Merged

Add pyodide 0.28 #2431

merged 3 commits into from
Jun 3, 2025

Conversation

joerick
Copy link
Contributor

@joerick joerick commented May 29, 2025

Following on from #2002, this adds pyodide 0.28, which corresponds to cpython 3.13.

This can be held to after v3.0. If we were to ship this in a beta, would we put it behind the python-prerelease flag? On the one hand, it is prerelease, but on the other, these wheels are all sorta experimental from a PyPI perspective anyway, so maybe it doesn't need to hide.

@joerick joerick added the Hold for future release This PR might be complete, but is scheduled to be merged in a future release. Don't merge yet. label May 29, 2025
@yeicor
Copy link

yeicor commented Jun 2, 2025

I understand this can wait, but I’d like to kindly request making this available in the v3.0 release if possible—mainly out of convenience to avoid migrating from my fork in the future.

FWIW, my project builds successfully with this version and requires it as a minimum supported version.

@henryiii
Copy link
Contributor

henryiii commented Jun 2, 2025

The problem is that 0.28 isn't final, and if you build binaries for 0.28, they might not work in the actual 0.28; it's quite possible there will be one last Emscripten update, or adjustments to the flags until the platform is locked in.

Behind a flag would be fine, but we'd probably want a new one, so that enabling 3.14 doesn't suddenly add new Pyodide wheels you don't want to distribution. I'm hoping we get PyPI support soon, PEP 783 discussion seems to be stuck.

@henryiii henryiii removed the Hold for future release This PR might be complete, but is scheduled to be merged in a future release. Don't merge yet. label Jun 2, 2025
@henryiii henryiii marked this pull request as ready for review June 3, 2025 00:20
@henryiii henryiii requested a review from Copilot June 3, 2025 03:29
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds support for Pyodide 0.28 (CPython 3.13) behind a new pyodide-prerelease flag, updating selector logic, test coverage, schema, and documentation.

  • Introduce EnableGroup.PyodidePrerelease and filtering logic in BuildSelector for cp313-pyodide builds.
  • Add cp313-pyodide_wasm32 entry in build-platforms.toml, update JSON schema and docs, and create unit/end-to-end tests.
  • Enhance test/utils.py and test/test_pyodide.py to include cp313 wheels when the prerelease flag is enabled.

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
unit_test/build_selector_test.py Two new tests for pyodide builds with/without flag
test/utils.py Extend _expected_wheels to include cp313 tag when enabled
test/test_pyodide.py Enable prerelease in build env and check cp313 wheel
docs/platforms.md Document the new pyodide-prerelease enable flag
docs/options.md Add cp313-pyodide_wasm32 column and flag to options
cibuildwheel/selector.py Add enum member and filtering logic for prerelease
cibuildwheel/resources/*.toml/.schema.json Include new flag and platform entry for cp313-pyodide
Comments suppressed due to low confidence (2)

test/test_pyodide.py:61

  • Consider adding a complementary end-to-end test without the pyodide-prerelease flag (i.e. add_env = {}) to ensure that only the cp312 wheel is produced by default.
add_env = {"CIBW_ENABLE": "pyodide-prerelease"}

docs/platforms.md:175

  • Verify that the anchor options.md#enable correctly links to the --enable flag documentation; if it doesn't, update it to point to the section describing the enable option.
If there are pre-releases available for a newer Python version, the `pyodide-prerelease` [`enable`](options.md#enable) can be used to include pre-release versions.

@henryiii henryiii merged commit 4aaa823 into main Jun 3, 2025
35 of 43 checks passed
@henryiii henryiii deleted the pyodide-028 branch June 3, 2025 03:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants