From bf6218e4288f0ac7bbf86e4ee66fd60a4cfcab66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Val=C3=A9rian=20Rey?= Date: Sat, 31 Oct 2026 21:00:28 +0100 Subject: [PATCH 1/2] Add official Python 3.15 support Run the Python 3.15 CI job with stable torch instead of nightly, now that torch 2.15.0 ships cp315 wheels. Add the 3.15 classifier, mention 3.15 in the installation docs and add a changelog entry. cvxpy remains excluded on 3.15 since its sparsediffpy<0.7 dependency has no cp315 wheel. Related to #779 Co-Authored-By: Claude Opus 5.5 --- .github/workflows/checks.yml | 9 ++++----- CHANGELOG.md | 4 ++++ docs/source/installation.md | 6 +++++- pyproject.toml | 1 + 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 494cf3f98..2c84a0fe2 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -29,6 +29,10 @@ jobs: - python-version: '3.12' - python-version: '3.13' - python-version: '3.14' # To actually run the default config + # cvxpy is excluded on Python 3.15 because one of its dependencies (sparsediffpy<0.7) has no + # cp315 wheel and can't be built without BLAS. + - python-version: '3.15' + options: 'quadprog_projector fairgrad' # OS variations - os: macOS-latest - os: windows-latest @@ -46,11 +50,6 @@ jobs: extra_groups: 'lower_bounds' # Latest: torch nightly build. - torch_channel: 'nightly' - # Upcoming Python version, not yet supported by stable torch. cvxpy is excluded because one - # of its dependencies (sparsediffpy) has no wheel yet and can't be built without BLAS. - - python-version: '3.15' - torch_channel: 'nightly' - options: 'quadprog_projector fairgrad' steps: - name: Checkout repository diff --git a/CHANGELOG.md b/CHANGELOG.md index d04177a36..6dc43d566 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ changelog does not include internal changes that do not affect the user. ## [Unreleased] +### Added + +- Added Python 3.15 classifier in pyproject.toml (we now also run tests on Python 3.15 in the CI). + ### Fixed - Fixed `Krum` and `KrumWeighting` ranking rows by sums of Euclidean distances instead of diff --git a/docs/source/installation.md b/docs/source/installation.md index 5915e085d..29b7a2900 100644 --- a/docs/source/installation.md +++ b/docs/source/installation.md @@ -5,7 +5,7 @@ :end-before: ``` -Note that `torchjd` requires Python 3.10, 3.11, 3.12, 3.13 or 3.14 and `torch>=2.0`. +Note that `torchjd` requires Python 3.10, 3.11, 3.12, 3.13, 3.14 or 3.15 and `torch>=2.0`. Some aggregators have additional dependencies that are not included by default when installing `torchjd`. The following table lists the optional dependency groups and the aggregators they enable: @@ -20,3 +20,7 @@ To install `torchjd` with all of its optional dependencies, you can also use: ``` pip install "torchjd[full]" ``` + +Note that on Python 3.15, [cvxpy](https://github.com/cvxpy/cvxpy/) doesn't provide wheels yet, so +installing `cagrad`, `nash_mtl` or `full` requires building some of its dependencies from source +(which needs a BLAS library). diff --git a/pyproject.toml b/pyproject.toml index 49eb5a9ab..3cebde3eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] From 2e50a827eed711147491dbadea852d84642dc083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Val=C3=A9rian=20Rey?= Date: Mon, 2 Nov 2026 11:05:36 +0100 Subject: [PATCH 2/2] Remove note in installation.md --- docs/source/installation.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/source/installation.md b/docs/source/installation.md index 29b7a2900..b90e95e77 100644 --- a/docs/source/installation.md +++ b/docs/source/installation.md @@ -20,7 +20,3 @@ To install `torchjd` with all of its optional dependencies, you can also use: ``` pip install "torchjd[full]" ``` - -Note that on Python 3.15, [cvxpy](https://github.com/cvxpy/cvxpy/) doesn't provide wheels yet, so -installing `cagrad`, `nash_mtl` or `full` requires building some of its dependencies from source -(which needs a BLAS library).