Skip to content

Commit 2e1e31c

Browse files
committed
build: pin build-time Cython to the locked version
Wheel builds run cibuildwheel in an isolated environment that resolves build-system.requires from PyPI and ignores poetry.lock. The previous unbounded 'Cython>=3.0.8' spec let each release pick up whichever Cython was newest at build time, so the compiled C output (and the shipped .pyd binaries) drifted between releases without any source change. Pin Cython to the version in poetry.lock so release wheels are built with the exact, tested compiler and the binaries are reproducible.
1 parent 29cc405 commit 2e1e31c

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

pyproject.toml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
[build-system]
2-
requires = ['setuptools>=77.0', 'Cython>=3.0.8', "poetry-core>=2.1.0"]
2+
# Cython is pinned to the version in poetry.lock so release wheels are built
3+
# with the exact, tested compiler. cibuildwheel resolves build-system.requires
4+
# from PyPI in an isolated env (it ignores poetry.lock), so an unbounded spec
5+
# lets each release silently pick up whichever Cython is newest at build time,
6+
# producing drifting C output. Bump this in lockstep with the dev dependency.
7+
requires = ['setuptools>=77.0', 'Cython==3.2.5', "poetry-core>=2.1.0"]
38
build-backend = "poetry.core.masonry.api"
49

510
[project]

0 commit comments

Comments
 (0)