Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Python 3.13 #120

Open
31 tasks
bdice opened this issue Nov 19, 2024 · 1 comment
Open
31 tasks

Add support for Python 3.13 #120

bdice opened this issue Nov 19, 2024 · 1 comment

Comments

@bdice
Copy link
Contributor

bdice commented Nov 19, 2024

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:

  • Create a branch on shared-workflows called python-3.13
  • Add Python 3.13 to the build matrix on the python-3.13 branch
  • Add Python 3.13 to the test matrix on the python-3.13 branch
    • When adjusting the test matrix, be aware of total GPU resource consumption. Build jobs are CPU only but test jobs require GPUs. We want to keep our GPU consumption the same (don't increase the test matrix size), by making it a bit sparser in its coverage. We have some rough guidelines for how to decide on the matrix entries to include.

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

Preview Give feedback

For each repo,

  1. Update .github/workflows/*.yaml to point to the python-3.13 branch of shared-workflows
  2. Update dependencies.yaml to add support for Python 3.13.
  3. Review any pyproject.toml files for necessary changes (classifiers, etc.)
  4. Update docs (README, etc) that reference a single Python version to point to the latest (3.13).
  5. 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

Preview Give feedback

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.

@jameslamb
Copy link
Member

Thanks for opening this! Adding one more useful link... the status of the Python 3.13 migration on conda-forge: https://conda-forge.org/status/migration/?name=python313

It'll be difficult to get too far down the RAPIDS dependency graph until that's further along. numba doesn't yet have Python 3.13 conda-forge packages (conda-forge/numba-feedstock#149), for example.

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

No branches or pull requests

2 participants