Skip to content

Publish and verify Pyodide wheels from GitHub Releases#71

Draft
Alek99 wants to merge 2 commits into
mainfrom
agent/exclude-pyodide-from-pypi
Draft

Publish and verify Pyodide wheels from GitHub Releases#71
Alek99 wants to merge 2 commits into
mainfrom
agent/exclude-pyodide-from-pypi

Conversation

@Alek99

@Alek99 Alek99 commented Jul 17, 2026

Copy link
Copy Markdown
Member

What changed

  • build and runtime-test the Pyodide wheel as before
  • publish the verified wheel as a versioned GitHub Release asset instead of sending its unsupported platform tag to PyPI
  • install that exact public HTTPS asset in Pyodide 0.29.4 and run the native min_max kernel before the release job passes
  • keep the Pyodide build release-blocking for both PyPI and GitHub Release publication
  • enable PyPI skip-existing so a manual non-dry run can complete the partially published 0.0.1 release
  • add workflow invariants and URL-mode smoke coverage

Why

PyPI rejected xy-0.0.1-py3-none-pyodide_2025_0_wasm32.whl because Warehouse does not accept the pyodide_2025_0_wasm32 platform tag. Pyodide supports installing binary WASM wheels directly from HTTPS URLs, so GitHub Releases is the supported distribution channel for this artifact.

Installation

import micropip

await micropip.install(
    "https://github.com/reflex-dev/xy/releases/download/v0.0.1/"
    "xy-0.0.1-py3-none-pyodide_2025_0_wasm32.whl"
)

Recovery for v0.0.1

After this merges, run the release workflow manually with dry_run=false. It will:

  1. skip the 0.0.1 files PyPI already accepted
  2. upload the remaining PyPI-compatible artifacts
  3. attach the Pyodide wheel to the existing v0.0.1 GitHub Release
  4. reinstall the public release asset and execute the native backend smoke

Validation

  • release workflow invariant verifier passes
  • workflow invariant/unit tests: 40 passed
  • Ruff passes
  • release workflow parses as YAML
  • actionlint passes
  • downloaded the exact dist-pyodide artifact from release run 29553527377, served it over HTTP, installed it with Pyodide 0.29.4, and executed the native kernel: backend=native abi=35 min_max=(1,3)

Pyodide documents binary WASM wheel installation from custom HTTPS URLs: https://pyodide.org/en/latest/usage/loading-packages.html#installing-wheels-from-arbitrary-urls

@codspeed-hq

codspeed-hq Bot commented Jul 17, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 94 untouched benchmarks
⏩ 1 skipped benchmark1


Comparing agent/exclude-pyodide-from-pypi (27b38ef) with main (824d037)

Open in CodSpeed

Footnotes

  1. 1 benchmark was skipped, so the baseline result was used instead. If it was deleted from the codebase, click here and archive it to remove it from the performance reports.

@Alek99 Alek99 changed the title Exclude Pyodide wheel from PyPI uploads Publish and verify Pyodide wheels from GitHub Releases Jul 17, 2026
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.

1 participant