Skip to content

Add Python 3.14 support - #35

Merged
dev-rinchin merged 2 commits into
masterfrom
feature/python-3.14
Oct 28, 2026
Merged

dev-rinchin merged 2 commits into
masterfrom
feature/python-3.14

Conversation

@dev-rinchin

@dev-rinchin dev-rinchin commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Allow Py-Boost to be installed on Python 3.14, which was rejected by the <3.14 package constraint. Extend the constraint to <3.15, add the Python 3.14 classifier, and update the installation example and build script to use current CUDA 12 CuPy packages. The build script accepts CUPY_PACKAGE for other CUDA/Python combinations.

Add CPU CI on Python 3.13 and 3.14 that builds both distributions, installs the wheel, and runs the entire tests directory outside the source checkout. GPU tests are automatically skipped on the CPU runners, and skip reasons are included in the log (pytest -q -rs). Cover all three quantizers with float32/float64 input and missing values against NumPy bin lookup.

Validation:

  • GitHub Actions: passed on Python 3.13 and 3.14, running the entire test directory on CPU (6 passed, 33 skip reports for GPU-only tests on each version; FilterSketch skips at module level).
  • Python 3.14.6 with CuPy 14.2.0, Numba 0.68.1 and NumPy 2.5.4 on an NVIDIA A100: 46 tests passed, including the GPU training and histogram regressions.
  • Installed-wheel CPU tests outside the checkout: 6 passed on Python 3.13.15 and 6 passed on Python 3.14.6.
  • Built sdist and wheel; verified Requires-Python: >=3.8,<3.15 and the Python 3.14 classifier in wheel metadata.
  • Two-output regression: Treelite CPU inference and GCC-compiled Treelite inference match GPU predictions on Python 3.14.
  • bash -n build_package.sh and git diff --check passed.

Additional checks exposed existing limitations, also reproduced on Python 3.13: Treelite 3.9.1 wheels contain internal CPython 3.8 tags that cause pip check to fail; single-output Treelite conversion rejects one-element leaf vectors; ONNX 1.23.2 rejects boolean values supplied for integer attributes by the existing exporter. These are unchanged by this PR; the GPU tests and the multioutput Treelite smoke checks pass.

@dev-rinchin
dev-rinchin merged commit 371f923 into master Oct 28, 2026
2 checks passed
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