fix(ci): constrain build-time Cython to <3.3 - #640
Conversation
Cython 3.3.0 crashes cythonizing curated_tokenizers/_bbpe.pyx. curated-tokenizers 0.0.9 ships no cp313 wheels, so CI (Python 3.13) builds it from source with an unpinned `cython>=0.25` build requirement and fails during `uv sync`. The breakage was latent since Cython 3.3.0 was released: the uv cache key is derived from pyproject.toml/uv.lock, so it only surfaced once a PR touched those files and invalidated the cached wheel. Co-authored-by: Cursor <cursoragent@cursor.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
Included review availability: Your plan provides up to 8 included reviews per hour; 4 remain after this review. 📝 WalkthroughWalkthroughAdded a uv build constraint that limits Cython to versions below 3.3 for Merge Risk: ⚪ Minimal · up to This localized build-time Cython constraint does not introduce an actionable merge-blocking risk; the PR is merge-ready after normal checks and review. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Why
CI on
mainis red. Both theCI (unit)lint job and everyPython compatibility checkmatrix job fail duringuv syncwith a Cython compiler crash:curated-tokenizers0.0.9 only publishes cp312 wheels, so CI's Python 3.13.9 has to build it from source. Its build backend requires an unpinnedcython>=0.25, so it now picks up Cython 3.3.0 (released 2026-08-22), which crashes cythonizing_bbpe.pyx. I verified locally that the same source build succeeds on Python 3.13 with Cython 3.2.9 and reproduces the exact CI crash with 3.3.0.Worth noting for anyone bisecting: this is not a regression from #639, and nothing in that PR is at fault. The breakage has been latent since Cython 3.3.0 shipped.
astral-sh/setup-uvderives its cache key from**/pyproject.tomland**/uv.lock, so as long as those files were untouched CI kept restoring acurated-tokenizerswheel built before Cython 3.3 existed. #639 was simply the first PR after Aug 22 to touch the rootpyproject.tomlanduv.lock, which invalidated that cache and forced the rebuild. Any subsequent dependency change would have hit the same wall.Bumping
spacy-curated-transformersto 2.x would pullcurated-tokenizers2.0.1, which does ship cp313 wheels and would remove the source build entirely. That path is not viable here: 2.x requiresthinc>=9.0.0.dev4, which conflicts with thethinc<8.4pin coming fromspacy3.x.Changes
build-constraint-dependencies = ["cython<3.3"]to[tool.uv]in the workspace root. This is build-time only, applies to source builds within this workspace, and does not affect resolved runtime dependencies or published wheels.The only sdist-only packages in the lock are
docopt,forbiddenfruitandtls-sig-api-v2, none of which use Cython, so nothing in the workspace needs Cython 3.3+ to build.Made with Cursor