Skip to content

Build CPython 3.15 wheels - #1152

Merged
Siyet merged 1 commit into
msgspec:mainfrom
edgarrmondragon:cp315-wheels
Sep 12, 2026
Merged

Siyet merged 1 commit into
msgspec:mainfrom
edgarrmondragon:cp315-wheels

Conversation

@edgarrmondragon

@edgarrmondragon edgarrmondragon commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

#1146 bumped cibuildwheel to 4.2.0, which adds CPython 3.15 wheels by default, but this project uses a build list in .cibuildwheel.toml so they need to be selected explicitly.

Comment thread .cibuildwheel.toml
test-groups = ["test-unit"]

[tool.cibuildwheel.pyodide]
build = "cp314-*"

@edgarrmondragon edgarrmondragon Aug 11, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Building pyodide wheels for cp315 fails:

Details

  + pyodide venv /tmp/cibw-run-mqiwed6o/cp315-pyodide_wasm32/venv-test
  Creating Pyodide virtualenv at                                                  
  /tmp/cibw-run-mqiwed6o/cp315-pyodide_wasm32/venv-test                           
  ... Configuring virtualenv                                                      
  ... Installing standard library                                                 
  Successfully created Pyodide virtual environment!                               
  + which python
  /tmp/cibw-run-mqiwed6o/cp315-pyodide_wasm32/venv-test/bin/python
  + pip install /tmp/cibw-run-mqiwed6o/cp315-pyodide_wasm32/repaired_wheel/msgspec-0.21.2.dev78+g21499cc6f-cp315-cp315-pyemscripten_2026_5_wasm32.whl
  Looking in indexes: https://pypi.org/simple, file:///home/runner/.cache/cibuildwheel/pyodide-build-0.39.0/315.0.0a2/xbuildenv/pyodide-root/package_index
  Processing /tmp/cibw-run-mqiwed6o/cp315-pyodide_wasm32/repaired_wheel/msgspec-0.21.2.dev78+g21499cc6f-cp315-cp315-pyemscripten_2026_5_wasm32.whl
  Installing collected packages: msgspec
  Successfully installed msgspec-0.21.2.dev78+g21499cc6f
  + pip install 'pytest>=9' pytest-randomly attrs coverage msgpack pyyaml 'tomli; python_version < "3.11"' tomli-w
  Looking in indexes: https://pypi.org/simple, file:///home/runner/.cache/cibuildwheel/pyodide-build-0.39.0/315.0.0a2/xbuildenv/pyodide-root/package_index
  Ignoring tomli: markers 'python_version < "3.11"' don't match your environment
  Collecting pytest>=9
    Using cached pytest-9.1.1-py3-none-any.whl.metadata (7.6 kB)
  WARNING: Location 'file:///home/runner/.cache/cibuildwheel/pyodide-build-0.39.0/315.0.0a2/xbuildenv/pyodide-root/package_index/pytest-randomly/' is ignored: it is neither a file nor a directory.
  Collecting pytest-randomly
    Using cached pytest_randomly-4.1.0-py3-none-any.whl.metadata (8.6 kB)
  WARNING: Location 'file:///home/runner/.cache/cibuildwheel/pyodide-build-0.39.0/315.0.0a2/xbuildenv/pyodide-root/package_index/attrs/' is ignored: it is neither a file nor a directory.
  Collecting attrs
    Using cached attrs-26.1.0-py3-none-any.whl.metadata (8.8 kB)
  Collecting coverage
    Using cached coverage-7.15.4-py3-none-any.whl.metadata (8.6 kB)
  WARNING: Location 'file:///home/runner/.cache/cibuildwheel/pyodide-build-0.39.0/315.0.0a2/xbuildenv/pyodide-root/package_index/msgpack/' is ignored: it is neither a file nor a directory.
  ERROR: Could not find a version that satisfies the requirement msgpack (from versions: none)
  ERROR: No matching distribution found for msgpack
  Error: cibuildwheel: Command ['/tmp/cibw-run-mqiwed6o/cp315-pyodide_wasm32/venv-test/bin/pip', 'install', 'pytest>=9', 'pytest-randomly', 'attrs', 'coverage', 'msgpack', 'pyyaml', 'tomli; python_version < "3.11"', 'tomli-w'] failed with code 1. 

https://github.com/msgspec/msgspec/actions/runs/31529128437/job/93905120501?pr=1152

@jacopoabramo jacopoabramo Aug 13, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ERROR: Could not find a version that satisfies the requirement msgpack (from versions: none)

Seems like msgpack doesn't ship weels for pyodide yet, but that's a dev dependency in the bench group

@edgarrmondragon edgarrmondragon Aug 30, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yeah, it doesn't ship wasm wheels at all, but the pyodide folks build them from source for a few select packages and publish them to their own index.

In particular, https://index.pyodide.org/314.0.6 has msgpack (1.1.2) wheels, but https://index.pyodide.org/315.0.0a2 doesn't (it has significantly fewer packages in general).

UPDATE: pyodide/pyodide-recipes#652 (comment)

UPDATE 2: msgpack/msgpack-python#732

@codspeed

codspeed Bot commented Aug 27, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 139 untouched benchmarks
⏩ 135 skipped benchmarks1


Comparing edgarrmondragon:cp315-wheels (1dd36d1) with main (f51f378)

Open in CodSpeed

Footnotes

  1. 135 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

edgarrmondragon added a commit to Nazib65/sdk that referenced this pull request Sep 2, 2026
Blockers:

- msgspec/msgspec#1152
- apache/arrow#48172 (scheduled for
[26.0.0](https://github.com/apache/arrow/milestone/75))

## Summary by Sourcery

Add Python 3.15 support across package metadata, dependency resolution,
version handling, and continuous integration.

New Features:
- Add Python 3.15 to the package’s supported versions and compatibility
metadata.

Enhancements:
- Update version discovery tests and dependency resolution to support
Python 3.15, including the required PyArrow nightly dependency source.

CI:
- Run the main test, documentation, dependency, contributor, package,
and platform coverage against Python 3.15.
- Align CodSpeed’s Python version with the repository’s configured
version file and prevent pre-commit CI from running uv-lock.

Tests:
- Update supported-version tests to include Python 3.15.

Signed-off-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>
Signed-off-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>

@Siyet Siyet left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thx for adding the Python 3.15 wheels, including the free-threaded builds!

@Siyet
Siyet added this pull request to the merge queue Sep 12, 2026
Merged via the queue into msgspec:main with commit 2e2c863 Sep 12, 2026
24 checks passed
@edgarrmondragon
edgarrmondragon deleted the cp315-wheels branch September 12, 2026 19:07

This branch was successfully deployed

1 active deployment
docs-preview — 93d25f46 Deployed Sep 11, 2026 by edgarrmondragon via Deploy preview #452
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