Skip to content

Commit

Permalink
[python-package] drop Python 3.6 support, add Python 3.12 (#6459)
Browse files Browse the repository at this point in the history
  • Loading branch information
jameslamb authored May 27, 2024
1 parent 7d15298 commit 69b5bd3
Show file tree
Hide file tree
Showing 10 changed files with 88 additions and 32 deletions.
51 changes: 51 additions & 0 deletions .ci/conda-envs/ci-core-py38.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# [description]
#
# Similar to ci-core.txt, but specific to Python 3.8.
#
# Unlike ci-core.txt, this includes a Python version and uses
# `=` and `<=` pins to make solves faster and prevent against
# issues like https://github.com/microsoft/LightGBM/pull/6370.
#
# [usage]
#
# conda create \
# --name test-env \
# --file ./.ci/conda-envs/ci-core-py38.txt
#

# python
python=3.8.*

# direct imports
cffi=1.15.*
dask=2023.5.*
distributed=2023.5.*
joblib=1.4.*
matplotlib-base=3.7.*
numpy=1.24.*
pandas=1.5.*
pyarrow-core=16.1.*
python-graphviz=0.20.*
scikit-learn=1.3.*
scipy=1.10.*

# testing-only dependencies
cloudpickle=3.0.*
pluggy=1.5.*
psutil=5.9.8
pytest=8.2.*

# other recursive dependencies, just
# pinned here to help speed up solves
bokeh=3.1.*
fsspec=2024.5.*
msgpack-python=1.0.*
pluggy=1.5.*
pytz=2024.1
setuptools=69.5.*
snappy=1.2.*
tomli=2.0.*
tornado=6.4.*
wheel=0.43.*
zict=3.0.*
zipp=3.17.*
13 changes: 7 additions & 6 deletions .ci/test-python-oldest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@
set -e -E -u -o pipefail

# oldest versions of dependencies published after
# minimum supported Python version's first release
# minimum supported Python version's first release,
# for which there are wheels compatible with the
# python:{version} image
#
# see https://devguide.python.org/versions/
#
echo "installing lightgbm's dependencies"
pip install \
'cffi==1.15.1' \
'dataclasses' \
'numpy==1.16.6' \
'pandas==0.24.0' \
'numpy==1.19.0' \
'pandas==1.1.3' \
'pyarrow==6.0.1' \
'scikit-learn==0.18.2' \
'scipy==0.19.0' \
'scikit-learn==0.24.0' \
'scipy==1.6.0' \
|| exit 1
echo "done installing lightgbm's dependencies"

Expand Down
2 changes: 2 additions & 0 deletions .ci/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ fi

if [[ $PYTHON_VERSION == "3.7" ]]; then
CONDA_REQUIREMENT_FILES="--file ${BUILD_DIRECTORY}/.ci/conda-envs/ci-core-py37.txt"
elif [[ $PYTHON_VERSION == "3.8" ]]; then
CONDA_REQUIREMENT_FILES="--file ${BUILD_DIRECTORY}/.ci/conda-envs/ci-core-py38.txt"
else
CONDA_REQUIREMENT_FILES="--file ${BUILD_DIRECTORY}/.ci/conda-envs/ci-core.txt"
fi
Expand Down
2 changes: 2 additions & 0 deletions .ci/test_windows.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ conda update -q -y conda

if ($env:PYTHON_VERSION -eq "3.7") {
$env:CONDA_REQUIREMENT_FILE = "$env:BUILD_SOURCESDIRECTORY/.ci/conda-envs/ci-core-py37.txt"
} elseif ($env:PYTHON_VERSION -eq "3.8") {
$env:CONDA_REQUIREMENT_FILE = "$env:BUILD_SOURCESDIRECTORY/.ci/conda-envs/ci-core-py38.txt"
} else {
$env:CONDA_REQUIREMENT_FILE = "$env:BUILD_SOURCESDIRECTORY/.ci/conda-envs/ci-core.txt"
}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,19 @@ jobs:
include:
- method: wheel
compiler: gcc
python_version: "3.11"
python_version: "3.10"
cuda_version: "11.8.0"
image: nvcr.io/nvidia/cuda:11.8.0-devel-ubuntu20.04
task: cuda
- method: source
compiler: gcc
python_version: "3.9"
python_version: "3.12"
cuda_version: "12.2.0"
image: nvcr.io/nvidia/cuda:12.2.0-devel-ubuntu22.04
task: cuda
- method: pip
compiler: clang
python_version: "3.10"
python_version: "3.11"
cuda_version: "11.8.0"
image: nvcr.io/nvidia/cuda:11.8.0-devel-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:
CONDA_ENV: test-env
OS_NAME: 'linux'
PYTHON_VERSION: '3.11'
PYTHON_VERSION: '3.12'
TASK: 'check-links'

jobs:
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/python_package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,30 +29,30 @@ jobs:
include:
- os: macos-13
task: regular
python_version: '3.9'
python_version: '3.10'
- os: macos-13
task: sdist
python_version: '3.10'
python_version: '3.11'
- os: macos-13
task: bdist
python_version: '3.7'
python_version: '3.8'
- os: macos-13
task: if-else
python_version: '3.9'
python_version: '3.10'
# We're currently skipping MPI jobs on macOS, see https://github.com/microsoft/LightGBM/pull/6425
# for further details.
# - os: macos-13
# task: mpi
# method: source
# python_version: '3.10'
# python_version: '3.11'
# - os: macos-13
# task: mpi
# method: pip
# python_version: '3.11'
# python_version: '3.12'
# - os: macos-13
# task: mpi
# method: wheel
# python_version: '3.8'
# python_version: '3.9'
steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down Expand Up @@ -101,7 +101,7 @@ jobs:
--rm \
-v $(pwd):/opt/lgb-build \
-w /opt/lgb-build \
python:3.6 \
python:3.7 \
/bin/bash ./.ci/test-python-oldest.sh
all-python-package-jobs-successful:
if: always()
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 @@ -20,7 +20,7 @@ env:
COMPILER: 'gcc'
CONDA_ENV: test-env
OS_NAME: 'linux'
PYTHON_VERSION: '3.11'
PYTHON_VERSION: '3.12'

jobs:
test:
Expand Down
22 changes: 11 additions & 11 deletions .vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ pr:
- release/*
variables:
AZURE: 'true'
PYTHON_VERSION: '3.11'
CMAKE_BUILD_PARALLEL_LEVEL: 4
PYTHON_VERSION: '3.12'
CONDA_ENV: test-env
runCodesignValidationInjection: false
skipComponentGovernanceDetection: true
Expand Down Expand Up @@ -62,19 +62,19 @@ jobs:
matrix:
regular:
TASK: regular
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
sdist:
TASK: sdist
PYTHON_VERSION: '3.7'
PYTHON_VERSION: '3.8'
bdist:
TASK: bdist
PYTHON_VERSION: '3.8'
PYTHON_VERSION: '3.9'
inference:
TASK: if-else
mpi_source:
TASK: mpi
METHOD: source
PYTHON_VERSION: '3.8'
PYTHON_VERSION: '3.9'
gpu_source:
TASK: gpu
METHOD: source
Expand Down Expand Up @@ -127,7 +127,7 @@ jobs:
TASK: sdist
bdist:
TASK: bdist
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
inference:
TASK: if-else
mpi_source:
Expand All @@ -136,23 +136,23 @@ jobs:
mpi_pip:
TASK: mpi
METHOD: pip
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
mpi_wheel:
TASK: mpi
METHOD: wheel
PYTHON_VERSION: '3.8'
PYTHON_VERSION: '3.9'
gpu_source:
TASK: gpu
METHOD: source
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
gpu_pip:
TASK: gpu
METHOD: pip
PYTHON_VERSION: '3.9'
PYTHON_VERSION: '3.10'
gpu_wheel:
TASK: gpu
METHOD: wheel
PYTHON_VERSION: '3.8'
PYTHON_VERSION: '3.9'
cpp_tests:
TASK: cpp-tests
METHOD: with-sanitizers
Expand Down
4 changes: 2 additions & 2 deletions python-package/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ classifiers = [
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Artificial Intelligence"
]
dependencies = [
"dataclasses ; python_version < '3.7'",
"numpy",
"scipy"
]
Expand All @@ -29,7 +29,7 @@ maintainers = [
]
name = "lightgbm"
readme = "README.rst"
requires-python = ">=3.6"
requires-python = ">=3.7"
version = "4.3.0.99"

[project.optional-dependencies]
Expand Down

0 comments on commit 69b5bd3

Please sign in to comment.