Skip to content

Add Python 3.15 and 3.15t CI and wheels - #1352

Draft
honglei wants to merge 1 commit into
MagicStack:masterfrom
honglei:python315-wheels
Draft

Add Python 3.15 and 3.15t CI and wheels#1352
honglei wants to merge 1 commit into
MagicStack:masterfrom
honglei:python315-wheels

Conversation

@honglei

@honglei honglei commented Aug 24, 2026

Copy link
Copy Markdown

Summary

  • add CPython 3.15 and 3.15 free-threaded asyncio jobs to the test matrix
  • upgrade cibuildwheel to 4.2.0 so release builds include cp315 and cp315t
  • advertise Python 3.15 in the package classifiers

The 3.15 jobs do not run uvloop. The existing test dependency marker excludes
uvloop on Python 3.15 and newer, and uvloop's own current CI does not cover
3.15/3.15t.

This PR will remain draft until uvloop publishes 3.15 support. Before marking
it ready, the temporary matrix exclusions and the <3.15.0 dependency marker
must be updated so both the asyncio and uvloop jobs pass on 3.15/3.15t.

Validation

  • parsed the changed workflow YAML and pyproject.toml
  • verified the pinned cibuildwheel v4.2.0 tag resolves to
    1828c10ab37f080699c7b81cea34097c684a7074
  • verified cibuildwheel 4.2.0 enumerates both cp315 and cp315t for the
    configured Linux x86_64/aarch64, macOS x86_64/arm64, and Windows x86/AMD64
    targets
  • built asyncpg 0.31.0 from the PyPI sdist on Linux x86_64 with both
    GIL-enabled CPython 3.15.0rc1 and free-threaded CPython 3.15.0rc1t
  • on each runtime, completed a 16,000-operation prepare/fetch stress test and
    ran the prepare, introspection, and pool test modules: 87 passed, 4 skipped

Runtime details are recorded in
#1330 (comment).

Dependencies and scope

This PR intentionally does not duplicate the pkg_resources cleanup already
proposed in #1314 and #1338. A source-checkout build with current setuptools
needs one of those fixes before the new CI jobs can pass; #1314 currently has
the complete green matrix.

#1308 changes the same release workflow for native runners. This PR remains
separate because Python 3.15 support is an independent feature. If #1308 lands
first, this branch will need a small rebase of release.yml.

@honglei

honglei commented Aug 24, 2026

Copy link
Copy Markdown
Author

uvloop status update: current master builds and the basic loop smoke test passes on CPython 3.15.0rc1 and 3.15.0rc1t, but 0.22.1 publishes only through cp314/cp314t.

I opened a narrowly scoped draft prerequisite, MagicStack/uvloop#758, for a Python 3.15 epoll-test cleanup and verified that test on 3.14t, 3.15, and 3.15t. It intentionally does not claim full 3.15/3.15t support or add wheel targets: the 3.15t complete suite is still externally blocked because uvloop's pyOpenSSL~=25.3.0 test dependency resolves to cryptography 46.0.7, whose PyO3 build rejects Python 3.15 free-threaded.

So #1352 should remain draft pending upstream full-suite CI and published uvloop cp315/cp315t wheels, consistent with the earlier guidance.

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