Skip to content

Commit 02192e4

Browse files
authored
Add support for Python 3.14 (#1845)
Contributes to rapidsai/build-planning#205 This PR adds support for Python 3.14. ## Notes for Reviewers This is part of ongoing work to add Python 3.14 support across RAPIDS. It temporarily introduces a build/test matrix including Python 3.14, from rapidsai/shared-workflows#508. A follow-up PR will revert back to pointing at the `main` branch of `shared-workflows` once all RAPIDS repos have added Python 3.14 support. ### This will fail until all dependencies have been updated to Python 3.14 CI here is expected to fail until all of this project's upstream dependencies support Python 3.14. This can be merged whenever all CI jobs are passing. Authors: - Gil Forsyth (https://github.com/gforsyth) Approvers: - Corey J. Nolet (https://github.com/cjnolet) - James Lamb (https://github.com/jameslamb) URL: #1845
1 parent ca4d5f0 commit 02192e4

File tree

11 files changed

+47
-41
lines changed

11 files changed

+47
-41
lines changed

.github/workflows/build.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ concurrency:
3535
jobs:
3636
cpp-build:
3737
secrets: inherit
38-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@main
38+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@python-3.14
3939
with:
4040
build_type: ${{ inputs.build_type || 'branch' }}
4141
branch: ${{ inputs.branch }}
@@ -46,7 +46,7 @@ jobs:
4646

4747
rocky8-clib-standalone-build:
4848
secrets: inherit
49-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
49+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
5050
strategy:
5151
fail-fast: false
5252
matrix:
@@ -71,7 +71,7 @@ jobs:
7171
rust-build:
7272
needs: cpp-build
7373
secrets: inherit
74-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
74+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
7575
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
7676
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
7777
strategy:
@@ -92,7 +92,7 @@ jobs:
9292
go-build:
9393
needs: cpp-build
9494
secrets: inherit
95-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
95+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
9696
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
9797
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
9898
strategy:
@@ -113,7 +113,7 @@ jobs:
113113
java-build:
114114
needs: cpp-build
115115
secrets: inherit
116-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
116+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
117117
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
118118
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
119119
strategy:
@@ -135,7 +135,7 @@ jobs:
135135
python-build:
136136
needs: [cpp-build]
137137
secrets: inherit
138-
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@main
138+
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@python-3.14
139139
with:
140140
build_type: ${{ inputs.build_type || 'branch' }}
141141
branch: ${{ inputs.branch }}
@@ -147,7 +147,7 @@ jobs:
147147
upload-conda:
148148
needs: [cpp-build, python-build]
149149
secrets: inherit
150-
uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@main
150+
uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@python-3.14
151151
with:
152152
build_type: ${{ inputs.build_type || 'branch' }}
153153
branch: ${{ inputs.branch }}
@@ -162,7 +162,7 @@ jobs:
162162
if: github.ref_type == 'branch'
163163
needs: python-build
164164
secrets: inherit
165-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
165+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
166166
with:
167167
arch: "amd64"
168168
branch: ${{ inputs.branch }}
@@ -174,7 +174,7 @@ jobs:
174174
sha: ${{ inputs.sha }}
175175
wheel-build-libcuvs:
176176
secrets: inherit
177-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
177+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@python-3.14
178178
with:
179179
build_type: ${{ inputs.build_type || 'branch' }}
180180
branch: ${{ inputs.branch }}
@@ -189,7 +189,7 @@ jobs:
189189
wheel-publish-libcuvs:
190190
needs: wheel-build-libcuvs
191191
secrets: inherit
192-
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@main
192+
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@python-3.14
193193
with:
194194
build_type: ${{ inputs.build_type || 'branch' }}
195195
branch: ${{ inputs.branch }}
@@ -200,7 +200,7 @@ jobs:
200200
wheel-build-cuvs:
201201
needs: wheel-build-libcuvs
202202
secrets: inherit
203-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
203+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@python-3.14
204204
with:
205205
build_type: ${{ inputs.build_type || 'branch' }}
206206
branch: ${{ inputs.branch }}
@@ -215,7 +215,7 @@ jobs:
215215
wheel-publish-cuvs:
216216
needs: wheel-build-cuvs
217217
secrets: inherit
218-
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@main
218+
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@python-3.14
219219
with:
220220
build_type: ${{ inputs.build_type || 'branch' }}
221221
branch: ${{ inputs.branch }}

.github/workflows/pr.yaml

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
- devcontainer
3030
- telemetry-setup
3131
secrets: inherit
32-
uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@main
32+
uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@python-3.14
3333
if: always()
3434
with:
3535
needs: ${{ toJSON(needs) }}
@@ -62,7 +62,7 @@ jobs:
6262
changed-files:
6363
needs: telemetry-setup
6464
secrets: inherit
65-
uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@main
65+
uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@python-3.14
6666
with:
6767
files_yaml: |
6868
build_docs:
@@ -311,37 +311,37 @@ jobs:
311311
checks:
312312
needs: telemetry-setup
313313
secrets: inherit
314-
uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@main
314+
uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@python-3.14
315315
with:
316316
enable_check_generated_files: false
317317
ignored_pr_jobs: "telemetry-summarize"
318318
conda-cpp-build:
319319
needs: checks
320320
secrets: inherit
321-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@main
321+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@python-3.14
322322
with:
323323
build_type: pull-request
324324
node_type: cpu16
325325
script: ci/build_cpp.sh
326326
conda-cpp-tests:
327327
needs: [conda-cpp-build, changed-files]
328328
secrets: inherit
329-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@main
329+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@python-3.14
330330
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
331331
with:
332332
build_type: pull-request
333333
script: ci/test_cpp.sh
334334
conda-cpp-checks:
335335
needs: conda-cpp-build
336336
secrets: inherit
337-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-post-build-checks.yaml@main
337+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-post-build-checks.yaml@python-3.14
338338
with:
339339
build_type: pull-request
340340
symbol_exclusions: (void (thrust::|cub::))
341341
conda-python-build:
342342
needs: conda-cpp-build
343343
secrets: inherit
344-
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@main
344+
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@python-3.14
345345
with:
346346
build_type: pull-request
347347
script: ci/build_python.sh
@@ -350,15 +350,15 @@ jobs:
350350
conda-python-tests:
351351
needs: [conda-python-build, changed-files]
352352
secrets: inherit
353-
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@main
353+
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@python-3.14
354354
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda
355355
with:
356356
build_type: pull-request
357357
script: ci/test_python.sh
358358
rocky8-clib-standalone-build:
359359
needs: [checks]
360360
secrets: inherit
361-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
361+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
362362
strategy:
363363
fail-fast: false
364364
matrix:
@@ -382,7 +382,7 @@ jobs:
382382
rocky8-clib-tests:
383383
needs: [rocky8-clib-standalone-build, changed-files]
384384
secrets: inherit
385-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
385+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
386386
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
387387
strategy:
388388
fail-fast: false
@@ -404,7 +404,7 @@ jobs:
404404
conda-java-build-and-tests:
405405
needs: [conda-cpp-build, changed-files]
406406
secrets: inherit
407-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
407+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
408408
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java || fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
409409
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
410410
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
@@ -425,7 +425,7 @@ jobs:
425425
rust-build:
426426
needs: [conda-cpp-build, changed-files]
427427
secrets: inherit
428-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
428+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
429429
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_rust || fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
430430
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
431431
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
@@ -444,7 +444,7 @@ jobs:
444444
go-build:
445445
needs: [conda-cpp-build, changed-files]
446446
secrets: inherit
447-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
447+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
448448
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_go || fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
449449
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
450450
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
@@ -463,7 +463,7 @@ jobs:
463463
docs-build:
464464
needs: conda-python-build
465465
secrets: inherit
466-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
466+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
467467
with:
468468
build_type: pull-request
469469
node_type: "gpu-l4-latest-1"
@@ -473,7 +473,7 @@ jobs:
473473
wheel-build-libcuvs:
474474
needs: checks
475475
secrets: inherit
476-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
476+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@python-3.14
477477
with:
478478
build_type: pull-request
479479
node_type: cpu16
@@ -485,7 +485,7 @@ jobs:
485485
wheel-build-cuvs:
486486
needs: wheel-build-libcuvs
487487
secrets: inherit
488-
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@main
488+
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@python-3.14
489489
with:
490490
build_type: pull-request
491491
node_type: cpu8
@@ -497,15 +497,15 @@ jobs:
497497
wheel-tests-cuvs:
498498
needs: [wheel-build-cuvs, changed-files]
499499
secrets: inherit
500-
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
500+
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@python-3.14
501501
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels
502502
with:
503503
build_type: pull-request
504504
script: ci/test_wheel_cuvs.sh
505505
devcontainer:
506506
secrets: inherit
507507
needs: telemetry-setup
508-
uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@main
508+
uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@python-3.14
509509
with:
510510
arch: '["amd64", "arm64"]'
511511
cuda: '["13.1"]'

.github/workflows/test.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ on:
2525
jobs:
2626
conda-cpp-checks:
2727
secrets: inherit
28-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-post-build-checks.yaml@main
28+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-post-build-checks.yaml@python-3.14
2929
with:
3030
build_type: ${{ inputs.build_type }}
3131
branch: ${{ inputs.branch }}
@@ -34,7 +34,7 @@ jobs:
3434
symbol_exclusions: (void (thrust::|cub::))
3535
conda-cpp-tests:
3636
secrets: inherit
37-
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@main
37+
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@python-3.14
3838
with:
3939
build_type: ${{ inputs.build_type }}
4040
branch: ${{ inputs.branch }}
@@ -43,7 +43,7 @@ jobs:
4343
sha: ${{ inputs.sha }}
4444
conda-python-tests:
4545
secrets: inherit
46-
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@main
46+
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@python-3.14
4747
with:
4848
build_type: ${{ inputs.build_type }}
4949
branch: ${{ inputs.branch }}
@@ -52,7 +52,7 @@ jobs:
5252
sha: ${{ inputs.sha }}
5353
conda-java-tests:
5454
secrets: inherit
55-
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
55+
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@python-3.14
5656
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
5757
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
5858
strategy:
@@ -72,7 +72,7 @@ jobs:
7272
script: "ci/test_java.sh"
7373
wheel-tests-cuvs:
7474
secrets: inherit
75-
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@main
75+
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@python-3.14
7676
with:
7777
build_type: ${{ inputs.build_type }}
7878
branch: ${{ inputs.branch }}

.github/workflows/trigger-breaking-change-alert.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
trigger-notifier:
1313
if: contains(github.event.pull_request.labels.*.name, 'breaking')
1414
secrets: inherit
15-
uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@main
15+
uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@python-3.14
1616
with:
1717
sender_login: ${{ github.event.sender.login }}
1818
sender_avatar: ${{ github.event.sender.avatar_url }}

conda/recipes/cuvs-bench-cpu/recipe.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ context:
99
linux64: ${{ linux and x86_64 }}
1010
py_abi_min: ${{ env.get("RAPIDS_PY_VERSION") }}
1111
py_buildstring : ${{ py_abi_min | version_to_buildstring }}
12-
py_runtime_latest: "3.13"
12+
py_runtime_latest: "3.14"
1313

1414
package:
1515
name: cuvs-bench-cpu

conda/recipes/cuvs-bench/recipe.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ context:
1111
head_rev: '${{ git.head_rev(".")[:8] }}'
1212
py_abi_min: ${{ env.get("RAPIDS_PY_VERSION") }}
1313
py_buildstring : ${{ py_abi_min | version_to_buildstring }}
14-
py_runtime_latest: "3.13"
14+
py_runtime_latest: "3.14"
1515

1616
package:
1717
name: cuvs-bench

conda/recipes/cuvs/recipe.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ context:
1010
date_string: '${{ env.get("RAPIDS_DATE_STRING") }}'
1111
py_abi_min: ${{ env.get("RAPIDS_PY_VERSION") }}
1212
py_buildstring : ${{ py_abi_min | version_to_buildstring }}
13-
py_runtime_latest: "3.13"
13+
py_runtime_latest: "3.14"
1414

1515
package:
1616
name: cuvs

dependencies.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,8 +434,12 @@ dependencies:
434434
packages:
435435
- python=3.13
436436
- matrix:
437+
py: "3.14"
437438
packages:
438-
- python>=3.11,<3.14
439+
- python=3.14
440+
- matrix:
441+
packages:
442+
- python>=3.11
439443
run_py_cuvs:
440444
common:
441445
- output_types: [conda, requirements, pyproject]

docs/source/cuvs_bench/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ The following command pulls the nightly container for Python version 3.13, CUDA
9292
9393
The CUDA and python versions can be changed for the supported values:
9494
- Supported CUDA versions: 12, 13
95-
- Supported Python versions: 3.11, 3.12, and 3.13
95+
- Supported Python versions: 3.11, 3.11, 3.13, and 3.14
9696

9797
You can see the exact versions as well in the dockerhub site:
9898
- `cuVS bench images <https://hub.docker.com/r/rapidsai/cuvs-bench/tags>`_

python/cuvs/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ classifiers = [
3131
"Programming Language :: Python :: 3.11",
3232
"Programming Language :: Python :: 3.12",
3333
"Programming Language :: Python :: 3.13",
34+
"Programming Language :: Python :: 3.14",
3435
]
3536

3637
[project.optional-dependencies]

0 commit comments

Comments
 (0)