Repository navigation
Conversation
Mirrors the cupy backport (cupy/cupy#10383). SSoT: - Add python.supported to ci/versions.yml as the canonical list the wheel matrix is built across (same shape used by cupy's CI). - Thread it through ci.yml -> build-wheel.yml via a new python-versions input; replace the yq read of build-wheel.yml's matrix with ci/versions.yml in the baseline-reuse check. 3.10 drops: - Remove 3.10 from python.supported. - Bump the 9 PY_VER='3.10' rows in ci/test-matrix.yml to '3.11' (each differs from existing 3.11 rows in LOCAL_CTK or GPU, so no row is lost). - Drop the 3.10 classifier + bump requires-python to >=3.11 across all five pyproject.toml files. - Drop "3.10.*" from cuda_bindings/pixi.toml and cuda_core/pixi.toml python feature matrices; bump cuda_pathfinder/pixi.toml python >=3.10 to >=3.11. - Bump ruff.toml target-version and the mypy python_version pins to 3.11. - Drop the pre-commit tomli marker gate. Cleanups unlocked by the 3.11 floor: - Collapse the StrEnum backport shim in cuda_core/cuda/core/typing.py (3.11+ has enum.StrEnum). - Drop the tomli build-dep and backports.strenum runtime-dep from cuda_core/pyproject.toml, and the tomli test dep from the test group. - Replace tomli try/except fallbacks with a plain import tomllib in build_hooks.py, toolshed/check_cuda_core_bindings_floor.py, and cuda_core/tests/test_bindings_floor.py. pixi.lock refresh: - Regenerated cuda_bindings/pixi.lock, cuda_core/pixi.lock, cuda_pathfinder/pixi.lock, benchmarks/cuda_bindings/pixi.lock, benchmarks/cuda_core/pixi.lock to track the pixi.toml / pyproject.toml changes.
…pre-commit config - ci/test-matrix.yml: delete the 9 PY_VER='3.10' rows instead of bumping them. - .pre-commit-config.yaml: the dangling empty 'additional_dependencies:' key under the check-cuda-core-bindings-floor hook was rejected by pre-commit's schema; remove the key. - cuda_bindings 13.5.0 and cuda_core 1.3.0: add a Highlights section with a bullet noting the Python 3.10 drop (follows the 12.9.5 / 13.1.0 / 0.5.0 precedent for the Python 3.9 drop). - Create cuda_pathfinder 1.8.4 and cuda_python 13.5.0 release-note placeholders with the same bullet (the newest existing files in those two projects already track shipped tags).
Ruff's py311 target rules now fire on pre-existing code: - UP017: datetime.timezone.utc -> datetime.UTC (toolshed/check_spdx.py) - UP036: drop dead sys.version_info >= (3, 11) blocks in cuda_core/cuda/core/_utils/pycompat.py, cuda_core/tests/test_enum_coverage.py, cuda_bindings/tests/test_basics.py, and cuda_python_test_helpers/cuda_python_test_helpers/sample_runner.py. - UP042: Classification(str, Enum) -> Classification(StrEnum) in ci/tools/classify_pixi_lockfile_freshness.py. - I001 and ruff-format cleanups to the files touched above and the tomli->tomllib drop in the previous commit.
# Conflicts: # ci/test-matrix.yml
ci/versions.yml
|
Since I have to touch |
📝 Summary
Priority: ➖ Normal Change: Other Merge Risk: 🔵 Low · up to The nightly-installation instructions still mention a Python 3.10 artifact that the updated build matrix no longer produces. Users can choose a supported version, but the examples should be corrected.
Comment |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to GitHub limitations.
🟡 Minor · Remove Python 3.10 from both nightly-artifact instructions. · install.rst:109
cuda_bindings/docs/source/install.rst:109
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winRemove Python 3.10 from both nightly-artifact instructions. Both pages now state that support starts at Python 3.11. Their
python310examples direct readers to artifacts that the new wheel matrix does not build.
cuda_bindings/docs/source/install.rst#L109-L109: replacepython310with a supported artifact version.cuda_core/docs/source/install.rst#L104-L104: replacepython310with a supported artifact version.
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Repository: NVIDIA/cuda-python/.coderabbit.yaml
- Review profile: CHILL
- Plan: Enterprise
- Run ID:
65ceeaa1-95e4-42da-b918-e582dd6d6a0a
⛔ Files ignored due to path filters (5)
benchmarks/cuda_bindings/pixi.lockis excluded by!**/*.lockbenchmarks/cuda_core/pixi.lockis excluded by!**/*.lockcuda_bindings/pixi.lockis excluded by!**/*.lockcuda_core/pixi.lockis excluded by!**/*.lockcuda_pathfinder/pixi.lockis excluded by!**/*.lock
📒 Files selected for processing (38)
.github/workflows/build-wheel.yml.github/workflows/ci.yml.pre-commit-config.yamlci/test-matrix.ymlci/tools/check_pixi_cuda_version.pyci/tools/classify_pixi_lockfile_freshness.pyci/versions.ymlcuda_bindings/docs/source/install.rstcuda_bindings/docs/source/release/13.5.0-notes.rstcuda_bindings/docs/source/support.rstcuda_bindings/pixi.tomlcuda_bindings/pyproject.tomlcuda_bindings/tests/test_basics.pycuda_core/build_hooks.pycuda_core/cuda/core/_memory/_copy_enums.pycuda_core/cuda/core/_utils/pycompat.pycuda_core/cuda/core/typing.pycuda_core/docs/source/conf.pycuda_core/docs/source/error_handling.rstcuda_core/docs/source/install.rstcuda_core/docs/source/release/1.3.0-notes.rstcuda_core/docs/source/support.rstcuda_core/pixi.tomlcuda_core/pyproject.tomlcuda_core/tests/test_bindings_floor.pycuda_core/tests/test_enum_coverage.pycuda_pathfinder/docs/source/install.rstcuda_pathfinder/docs/source/release/1.8.4-notes.rstcuda_pathfinder/pixi.tomlcuda_pathfinder/pyproject.tomlcuda_python/docs/source/release/13.5.0-notes.rstcuda_python/pyproject.tomlcuda_python_test_helpers/cuda_python_test_helpers/sample_runner.pycuda_python_test_helpers/pyproject.tomlruff.tomlsamples/cuda_core/Utilities/cuda_samples_utils.pytoolshed/check_cuda_core_bindings_floor.pytoolshed/check_spdx.py
💤 Files with no reviewable changes (3)
- .pre-commit-config.yaml
- cuda_core/docs/source/conf.py
- ci/test-matrix.yml
Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.
|
/ok to test f961340 |
|
Sibling to cupy/cupy#10383 (merged). Drops Python 3.10 across the repo and promotes a
python.supportedblock inci/versions.ymlto serve as the single source of truth the build-wheel matrix is drawn from.SSoT (backport of the cupy pattern)
ci/versions.yml— add apythonblock withsupported:list. Mirrors the shape used by cupy's CI; keeps cuda-python and cupy aligned on how the Python matrix is declared..github/workflows/ci.yml— in the existingci-varsjob, exposePYTHON_SUPPORTEDviayq -o json -I 0 '.python.supported' ci/versions.ymland pass it to everybuild-wheel.ymlcall site. The baseline-reuse yq read ofbuild-wheel.yml's matrix (near L225) is retargeted toci/versions.yml..github/workflows/build-wheel.yml— addpython-versionsinput (JSON array string); matrix now sources it viafromJSON(inputs.python-versions). The deadwin-arm64 && 3.10exclude is removed with the matrix.3.10 drops
python.supportedlands with 3.11 .. 3.15t only.ci/test-matrix.yml— the 9PY_VER: '3.10'rows bump to'3.11'. Each row differs from the existing 3.11 rows on eitherLOCAL_CTKorGPU, so no cell is deduped away and overall PR-time GPU coverage is preserved.pyproject.tomlfiles — drop the3.10classifier and bumprequires-pythonto>=3.11. Existing wheels on PyPI keep working for 3.10 users (pip resolves to the last pre-floor release).cuda_bindings/pixi.toml,cuda_core/pixi.toml— drop"3.10.*"from the python feature matrix.cuda_pathfinder/pixi.toml—python = ">=3.10"→">=3.11".ruff.toml—target-version = "py310"→"py311". mypypython_versionpins incuda_core/pyproject.tomlandcuda_pathfinder/pyproject.tomlbump to"3.11"..pre-commit-config.yaml— drop thetomli>=1.1.0; python_version < '3.11'marker.Cleanups unlocked by the 3.11 floor
cuda_core/cuda/core/typing.py— collapse the StrEnum backport shim (enum.StrEnumis stdlib on 3.11+).cuda_core/pyproject.toml— drop thetomli>=1.1.0; python_version < '3.11'build-system dep, thebackports.strenum; python_version < '3.11'runtime dep, and thetomli>=2; python_version < '3.11'test dep.cuda_core/pixi.toml— drop the twotomli = "*" # PEP 723 parsing fallback on Python 3.10.deps.cuda_core/build_hooks.py,cuda_core/tests/test_bindings_floor.py,toolshed/check_cuda_core_bindings_floor.py— replace thetomlitry/except fallbacks with plainimport tomllib.pixi.lock refresh
Regenerated
cuda_bindings/pixi.lock,cuda_core/pixi.lock,cuda_pathfinder/pixi.lock,benchmarks/cuda_bindings/pixi.lock,benchmarks/cuda_core/pixi.lockwith pixi 0.81.0 to track the pixi.toml / pyproject.toml changes. Pixi lockfile maintenance CI is paused per #3065; the regen is included manually here so thePIXI_FROZEN=truesource-test flow does not trip.Follow-ups (not in this PR)
A couple of test-side
sys.version_info >= (3, 11)branches incuda_core/tests/test_error_handling.pyandcuda_core/tests/graph/test_graph_builder.pybecome always-True once 3.10 is dropped. Collapsing them is pure test cleanup, kept out of this PR to limit review scope.-- Leo's bot