Overview
Python 3.13 was released in October 2024. This issue tracks the work to add support for Python 3.13 to RAPIDS.
Prior work:
We now have excellent automation for this process thanks to @jameslamb. We can use rapids-reviser with this example script, which we should update to "add 3.13" instead of 3.12: https://github.com/rapidsai/rapids-reviser/tree/main/examples/add-python-3.12
Note: We would like to complete our work on C++ wheels (#33) before adding Python 3.13 support, to keep CI build time down.
When should we drop Python 3.10?
Typically RAPIDS has kept the matrix of supported Python minor versions to ~3 versions at a time. However, I don't think we should drop Python 3.10 at the same time (explained below).
SPEC 0 recommended dropping support for Python 3.10 in 2024Q4. Meanwhile, NEP 29 recommended dropping support for Python 3.10 as of Apr 04, 2025. SPEC 0 is more aggressive, and we have not yet passed the deadline for NEP 29. Because of this, we probably want to leave Python 3.10 for now. Previously we have had concerns about build / test times for a larger Python matrix. However, there have been other advances that help us: through the introduction of C++ wheels (#33), we have moved most of our build time into the C++ wheels, and the Python wheels are comparatively very fast. Eventually we still hope to use the Limited API to reduce the number of Python wheels we must build.
Tasks
Each section should be fully completed before moving to the next section.
CI images
CI workflows
Branch Strategy:
The above tasks are handled by: rapidsai/shared-workflows#268
RAPIDS repositories
This list is intentionally in RAPIDS dependency order... they'll need to be completed in roughly that order.
Consult #40 for example PRs for any necessary work that isn't handled by rapids-reviser.
Updates for libraries
For each repo,
- Update
.github/workflows/*.yaml to point to the python-3.13 branch of shared-workflows
- Update
dependencies.yaml to add support for Python 3.13.
- Review any
pyproject.toml files for necessary changes (classifiers, etc.)
- Update docs (README, etc) that reference a single Python version to point to the latest (3.13).
- Once CI passes, merge the PR.
Once all repos are migrated to the python-3.13 branch, the migration is complete. We merge python-3.13 into the development branch on shared-workflows and then open follow-up PRs to each repo to reset the branches to that development branch. This "reset" is simple and should be automated with rapids-reviser.
Post-migration
Notes:
The :latest image from ci-imgs is frequently used by CI jobs for building docs and testing notebooks. Be aware that issues may arise in those jobs.
Overview
Python 3.13 was released in October 2024. This issue tracks the work to add support for Python 3.13 to RAPIDS.
Prior work:
We now have excellent automation for this process thanks to @jameslamb. We can use
rapids-reviserwith this example script, which we should update to "add 3.13" instead of 3.12: https://github.com/rapidsai/rapids-reviser/tree/main/examples/add-python-3.12Note: We would like to complete our work on C++ wheels (#33) before adding Python 3.13 support, to keep CI build time down.
When should we drop Python 3.10?
Typically RAPIDS has kept the matrix of supported Python minor versions to ~3 versions at a time. However, I don't think we should drop Python 3.10 at the same time (explained below).
SPEC 0 recommended dropping support for Python 3.10 in 2024Q4. Meanwhile, NEP 29 recommended dropping support for Python 3.10 as of Apr 04, 2025. SPEC 0 is more aggressive, and we have not yet passed the deadline for NEP 29. Because of this, we probably want to leave Python 3.10 for now. Previously we have had concerns about build / test times for a larger Python matrix. However, there have been other advances that help us: through the introduction of C++ wheels (#33), we have moved most of our build time into the C++ wheels, and the Python wheels are comparatively very fast. Eventually we still hope to use the Limited API to reduce the number of Python wheels we must build.
Tasks
Each section should be fully completed before moving to the next section.
CI images
ci-conda,ci-wheel,citestwheel) Add Python 3.13 ci-imgs#207CI workflows
Branch Strategy:
shared-workflowscalledpython-3.13python-3.13branchpython-3.13branchThe above tasks are handled by: rapidsai/shared-workflows#268
RAPIDS repositories
This list is intentionally in RAPIDS dependency order... they'll need to be completed in roughly that order.
Consult #40 for example PRs for any necessary work that isn't handled by
rapids-reviser.Updates for libraries
devcontainersuntil all repos are migratedpypi-wheel-scriptsand manually build/publishcubinlinkerandptxcompilerwheels (https://github.com/rapidsai/pypi-wheel-scripts/pull/28)cudfis mergeddask-cudatest workflows topython-3.13chore: set remaining workflows to python3.13 dask-cuda#1480ucxxtest workflows topython-3.13chore: set remaining workflows to python3.13 ucxx#409ucx-pytest workflows topython-3.13chore: set remaining workflows to python3.13 ucx-py#1131get a(dgl being dropped for 25.08)dglbuild for Python 3.13 (currently blocking)dgltests removed or separated so we can run the rest on Python 3.13cugraphworkflows topython-3.13cugraph-gnnworkflows topython-3.13cuspatialFor each repo,
.github/workflows/*.yamlto point to thepython-3.13branch ofshared-workflowsdependencies.yamlto add support for Python 3.13.pyproject.tomlfiles for necessary changes (classifiers, etc.)Once all repos are migrated to the
python-3.13branch, the migration is complete. We mergepython-3.13into the development branch onshared-workflowsand then open follow-up PRs to each repo to reset the branches to that development branch. This "reset" is simple and should be automated with rapids-reviser.Post-migration
ci-imgsrepo'slatestconfiguration to use Python 3.13. (refactor: set Python 3.13 as latest ci-imgs#270)dockerrepo's build and test matrices, and references in docs (refactor: add Python 3.13 support docker#755)pypi-wheel-scriptsso that Python 3.13 wheels are uploadedUpdatedefunctrapidsai/dask-build-environmentdocs(feat: add Python 3.13 to selector and make it the new default docs#603)branch-25.06onshared-workflowsagaindevcontainersPython version pin to Python 3.13 (refactor: make Python 3.13 the default devcontainers#512)python-3.13branch inshared-workflowsrapids-reviserchangesNotes:
The
:latestimage fromci-imgsis frequently used by CI jobs for building docs and testing notebooks. Be aware that issues may arise in those jobs.