Skip to content

Commit

Permalink
[python-package] support Python 3.13 (#6668)
Browse files Browse the repository at this point in the history
* [python-package] support Python 3.13

* update everything in the base conda environment, not just conda

* python packages now use 'cp' instead of 'cpython'

* fix python_package

* get more logs

* try to force a better solver error

* merge latest

* use build= explicitly

* restore all CI, revert debugging changes

* Update .ci/test.sh

* empty commit to re-trigger CI

* update docs conda env

* pin to specific OS and mambaforge

* Update .github/workflows/python_package.yml

Co-authored-by: Nikita Titov <[email protected]>

* update default Python version in .vsts-ci.yml

* remove upper-version pins

* update RTD image

---------

Co-authored-by: Nikita Titov <[email protected]>
  • Loading branch information
jameslamb and StrikerRUS authored Jan 27, 2025
1 parent 3aac25a commit 9f1af05
Show file tree
Hide file tree
Showing 11 changed files with 59 additions and 50 deletions.
4 changes: 2 additions & 2 deletions .ci/test-windows.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ if ($env:TASK -eq "swig") {
conda init powershell
conda activate
conda config --set always_yes yes --set changeps1 no
conda update -q -y conda "python=$env:PYTHON_VERSION[build=*cpython]"
conda update -q -y conda "python=$env:PYTHON_VERSION[build=*_cp*]"

if ($env:PYTHON_VERSION -eq "3.7") {
$env:CONDA_REQUIREMENT_FILE = "$env:BUILD_SOURCESDIRECTORY/.ci/conda-envs/ci-core-py37.txt"
Expand All @@ -80,7 +80,7 @@ $condaParams = @(
"-y",
"-n", "$env:CONDA_ENV",
"--file", "$env:CONDA_REQUIREMENT_FILE",
"python=$env:PYTHON_VERSION[build=*cpython]"
"python=$env:PYTHON_VERSION[build=*_cp*]"
)
conda create @condaParams ; Assert-Output $?

Expand Down
5 changes: 3 additions & 2 deletions .ci/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,9 @@ if [[ "$TASK" == "cpp-tests" ]]; then
exit 0
fi

# including python=version[build=*cpython] to ensure that conda doesn't fall back to pypy
CONDA_PYTHON_REQUIREMENT="python=${PYTHON_VERSION}[build=*cpython]"
# including python=version=[build=*_cp*] to ensure that conda prefers CPython and doesn't fall back to
# other implementations like pypy
CONDA_PYTHON_REQUIREMENT="python=${PYTHON_VERSION}[build=*_cp*]"

if [[ $TASK == "if-else" ]]; then
conda create -q -y -n "${CONDA_ENV}" "${CONDA_PYTHON_REQUIREMENT}" numpy
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,19 +81,19 @@ jobs:
include:
- method: wheel
compiler: gcc
python_version: "3.10"
python_version: "3.11"
cuda_version: "12.6.1"
linux_version: "ubuntu22.04"
task: cuda
- method: source
compiler: gcc
python_version: "3.12"
python_version: "3.13"
cuda_version: "12.2.2"
linux_version: "ubuntu22.04"
task: cuda
- method: pip
compiler: clang
python_version: "3.11"
python_version: "3.12"
cuda_version: "11.8.0"
linux_version: "ubuntu20.04"
task: cuda
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linkchecker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
env:
COMPILER: gcc
OS_NAME: 'linux'
PYTHON_VERSION: '3.12'
PYTHON_VERSION: '3.13'
TASK: 'check-links'

jobs:
Expand Down
31 changes: 19 additions & 12 deletions .github/workflows/python_package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,32 +28,32 @@ jobs:
include:
- os: macos-13
task: regular
python_version: '3.10'
python_version: '3.11'
- os: macos-13
task: sdist
python_version: '3.11'
python_version: '3.12'
- os: macos-13
task: bdist
python_version: '3.8'
python_version: '3.9'
- os: macos-13
task: if-else
python_version: '3.9'
python_version: '3.10'
- os: macos-14
task: bdist
method: wheel
python_version: '3.10'
python_version: '3.11'
- os: macos-13
task: mpi
method: source
python_version: '3.11'
python_version: '3.12'
- os: macos-13
task: mpi
method: pip
python_version: '3.12'
python_version: '3.13'
- os: macos-13
task: mpi
method: wheel
python_version: '3.9'
python_version: '3.10'
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down Expand Up @@ -113,12 +113,19 @@ jobs:
--rm \
-v $(pwd):/opt/lgb-build \
-w /opt/lgb-build \
python:3.12 \
python:3.13 \
/bin/bash ./.ci/test-python-latest.sh
test-oldest-versions:
test-old-versions:
name: Python - oldest supported versions (ubuntu-latest)
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
# end-of-life Python versions
python_version:
- '3.7'
- '3.8'
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand All @@ -140,12 +147,12 @@ jobs:
--rm \
-v $(pwd):/opt/lgb-build \
-w /opt/lgb-build \
python:3.7 \
python:${{ matrix.python_version }} \
/bin/bash ./.ci/test-python-oldest.sh
all-python-package-jobs-successful:
if: always()
runs-on: ubuntu-latest
needs: [test, test-latest-versions, test-oldest-versions]
needs: [test, test-latest-versions, test-old-versions]
steps:
- name: Note that all tests succeeded
uses: re-actors/[email protected]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/static_analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ env:
COMPILER: 'gcc'
MAKEFLAGS: '-j4'
OS_NAME: 'linux'
PYTHON_VERSION: '3.12'
PYTHON_VERSION: '3.13'

jobs:
test:
Expand Down
4 changes: 2 additions & 2 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
version: 2
build:
os: "ubuntu-20.04"
os: "ubuntu-24.04"
tools:
python: "miniconda3-4.7"
python: "mambaforge-23.11"
conda:
environment: docs/env.yml
formats:
Expand Down
30 changes: 15 additions & 15 deletions .vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ pr:
variables:
AZURE: 'true'
CMAKE_BUILD_PARALLEL_LEVEL: 4
PYTHON_VERSION: '3.12'
PYTHON_VERSION: '3.13'
runCodesignValidationInjection: false
skipComponentGovernanceDetection: true
Codeql.Enabled: false
Expand Down Expand Up @@ -96,19 +96,19 @@ jobs:
matrix:
regular:
TASK: regular
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
sdist:
TASK: sdist
PYTHON_VERSION: '3.8'
PYTHON_VERSION: '3.9'
bdist:
TASK: bdist
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
inference:
TASK: if-else
mpi_source:
TASK: mpi
METHOD: source
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
gpu_source:
TASK: gpu
METHOD: source
Expand Down Expand Up @@ -162,7 +162,7 @@ jobs:
TASK: sdist
bdist:
TASK: bdist
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
inference:
TASK: if-else
mpi_source:
Expand All @@ -171,23 +171,23 @@ jobs:
mpi_pip:
TASK: mpi
METHOD: pip
PYTHON_VERSION: '3.11'
PYTHON_VERSION: '3.12'
mpi_wheel:
TASK: mpi
METHOD: wheel
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
gpu_source:
TASK: gpu
METHOD: source
PYTHON_VERSION: '3.11'
PYTHON_VERSION: '3.12'
gpu_pip:
TASK: gpu
METHOD: pip
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
gpu_wheel:
TASK: gpu
METHOD: wheel
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
cpp_tests:
TASK: cpp-tests
METHOD: with-sanitizers
Expand Down Expand Up @@ -298,10 +298,10 @@ jobs:
matrix:
regular:
TASK: regular
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
sdist:
TASK: sdist
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
bdist:
TASK: bdist
swig:
Expand Down Expand Up @@ -347,10 +347,10 @@ jobs:
matrix:
regular:
TASK: regular
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
sdist:
TASK: sdist
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
bdist:
TASK: bdist
swig:
Expand Down
2 changes: 1 addition & 1 deletion docs/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Run the following from the root of this repository to pull the relevant image an
--env READTHEDOCS=true \
--workdir=/opt/LightGBM/docs \
--entrypoint="" \
readthedocs/build:ubuntu-20.04-2021.09.23 \
readthedocs/build:ubuntu-24.04-2024.06.17 \
/bin/bash build-docs.sh
When that code completes, open ``docs/_build/html/index.html`` in your browser.
Expand Down
22 changes: 11 additions & 11 deletions docs/env.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ channels:
- conda-forge
dependencies:
- breathe>=4.35
- python=3.10
- r-base=4.3.2
- r-data.table=1.14.10
- r-jsonlite=1.8.8
- r-knitr=1.45
- r-markdown=1.12
- r-matrix=1.6_4
- r-pkgdown=2.0.7
- python=3.12
- r-base>=4.3.3
- r-data.table=1.16.4
- r-jsonlite=1.8.9
- r-knitr=1.49
- r-markdown=1.13
- r-matrix=1.6_5
- r-pkgdown=2.1.1
- r-roxygen2=7.3.2
- scikit-learn>=1.4.0
- sphinx>=6.0
- sphinx_rtd_theme>=2.0
- scikit-learn>=1.6.1
- sphinx>=8.1.3
- sphinx_rtd_theme>=3.0.1
1 change: 1 addition & 0 deletions python-package/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Artificial Intelligence"
]
dependencies = [
Expand Down

0 comments on commit 9f1af05

Please sign in to comment.