Repository navigation
Conversation
cibuildwheel v2.16.5 predates Python 3.15 and can't build or test on
it. Upgrade to v4.3.3 and add cp315 to CIBW_BUILD. The wheel is abi3,
so it is still built only once, on cp39; cibuildwheel reuses it for
cp315 and only runs the tests there.
Side effects of going from v2 to v4, from cibuildwheel's changelog:
- Linux wheels are built on manylinux_2_28 instead of manylinux2014,
so they need glibc 2.28 or newer. CentOS 7 and Amazon Linux 2 users
would fall back to the sdist or the pure-Python wheel. Setting
CIBW_MANYLINUX_{X86_64,AARCH64}_IMAGE to manylinux2014 keeps the old
baseline.
- Each abi3 wheel is checked with abi3audit after repair, and a
failure fails the build.
- Windows wheels are repaired with delvewheel, which bundles any DLLs
the extension links against.
- Wheels are built with `build` instead of `pip wheel`, in environments
without setuptools and wheel preinstalled. Both come from
pyproject.toml's build-system.requires instead.
Python 3.15 removed zipimport.zipimporter.load_module(), which the external function server used to load a zipped environment file. Load it with find_spec()/exec_module() instead. Those methods only exist from Python 3.10, so 3.9 keeps using load_module(); that branch can be removed when 3.9 support is dropped. Use asyncio.get_running_loop() in AwaitableUvicornServer rather than get_event_loop(). Both callers already create it inside a running event loop, so behaviour is unchanged. Add 3.15 to the smoke-test and pre-commit matrices. The cibuildwheel upgrade needed to build and test wheels on 3.15 is in singlestore-labs#147. Tested locally on 3.15.0 against SingleStore 9.1.1 (management tests excluded): 967 passed, 19 skipped, 1 failed, the same results as 3.14. The failure, TestServerProcessMode::test_process_mode_worker_handles_request, also fails on 3.14 on macOS and is unrelated to this change.
|
I ran this branch locally with cibuildwheel v4.3.3 (Linux x86_64, 1.
|
abi3audit, which cibuildwheel v4 runs on abi3 wheels, rejected the extension because the non-static helper exported a _Py* symbol. cibuildwheel v3+ defaults to manylinux_2_28; pin manylinux2014 to keep the glibc 2.17 baseline so older distros still get the C extension.
|
@kesmit13 good catch, thank you!
|
cibuildwheel v2.16.5 predates Python 3.15 and can't build or test on it. Upgrade to v4.3.3 and add cp315 to CIBW_BUILD. The wheel is abi3, so it is still built only once, on cp39; cibuildwheel reuses it for cp315 and only runs the tests there.
Side effects of going from v2 to v4, from cibuildwheel's changelog:
buildinstead ofpip wheel, in environments without setuptools and wheel preinstalled. Both come from pyproject.toml's build-system.requires instead.Note
Medium Risk
Changes affect how all release wheels are built and which Linux glibc versions they support; a misconfigured manylinux pin or failed cp315 tests would block publishes.
Overview
Publish workflow bumps
pypa/cibuildwheelfrom v2.16.5 to v4.3.3 so release builds can exercise Python 3.15.CIBW_BUILDis nowcp39-* cp315-*: the abi3 wheel is still compiled once on 3.9, while 3.15 reuses that wheel and reruns the live-cluster pytest suite on the newest supported interpreter.Because cibuildwheel v3+ defaults to manylinux_2_28, the workflow pins
CIBW_MANYLINUX_X86_64_IMAGEandCIBW_MANYLINUX_AARCH64_IMAGEto manylinux2014 so Linux wheels keep the older glibc 2.17 baseline and older distros still install the C extension instead of silently falling back to pure Python.accel.cmarks the local UTF-8 helper_PyUnicode_AsUTF8asstatic, limiting its linkage scope (relevant under stricter abi3 wheel checks in newer cibuildwheel).Reviewed by Cursor Bugbot for commit 2876d2f. Bugbot is set up for automated code reviews on this repo. Configure here.