From 0ea4533ebd172af35d4674d5c39820027b9f3bde Mon Sep 17 00:00:00 2001 From: Swapnil Dwivedi Date: Thu, 12 Nov 2026 23:25:26 +0530 Subject: [PATCH] MNT Set Python 3.11 as the minimum supported version Keep the lowest-version CI jobs and move distro-provided SciPy and BLAS coverage to Ubuntu 24.04. Co-authored-by: Codex --- .github/workflows/test.yml | 31 +++++++++++++++---------------- CHANGES.md | 3 +++ continuous_integration/install.sh | 5 +---- pyproject.toml | 3 +-- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 29ea90f4..2d9a8d75 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -73,16 +73,16 @@ jobs: PACKAGER: "conda" INSTALL_OPENCV: "true" # Windows env with numpy, scipy installed through pip - - name: py310_pip + - name: py311_pip os: windows-latest - PYTHON_VERSION: "3.10" + PYTHON_VERSION: "3.11" PACKAGER: "pip" INSTALL_OPENCV: "true" # MacOS env with OpenMP installed through homebrew - - name: py310_conda_homebrew_libomp + - name: py311_conda_homebrew_libomp os: macos-latest - PYTHON_VERSION: "3.10" + PYTHON_VERSION: "3.11" PACKAGER: "conda" BLAS: "openblas" CC_OUTER_LOOP: "clang" @@ -106,20 +106,19 @@ jobs: INSTALL_BLAS: "flexiblas" PLATFORM_SPECIFIC_PACKAGES: "llvm-openmp" - # Linux environments to test that packages that comes with Ubuntu 22.04 - # are correctly handled. - - name: py310_ubuntu_atlas_gcc_gcc - os: ubuntu-22.04 - PYTHON_VERSION: "3.10" + # Test distro-provided SciPy and BLAS with Ubuntu 24.04's system Python. + - name: py312_ubuntu_atlas_gcc_gcc + os: ubuntu-24.04 + PYTHON_VERSION: "3.12" PACKAGER: "ubuntu" APT_BLAS: "libatlas3-base libatlas-base-dev" CC_OUTER_LOOP: "gcc" CC_INNER_LOOP: "gcc" - - name: py310_ubuntu_openblas_gcc_gcc - os: ubuntu-22.04 - PYTHON_VERSION: "3.10" + - name: py312_ubuntu_openblas_gcc_gcc + os: ubuntu-24.04 + PYTHON_VERSION: "3.12" PACKAGER: "ubuntu" - APT_BLAS: "libopenblas-base libopenblas-dev" + APT_BLAS: "libopenblas0-pthread libopenblas-dev" CC_OUTER_LOOP: "gcc" CC_INNER_LOOP: "gcc" @@ -132,11 +131,11 @@ jobs: CC_INNER_LOOP: "gcc" INSTALL_OPENCV: "true" - # Linux + Python 3.10 and homogeneous runtime nesting. - - name: py310_conda_openblas_clang_clang + # Linux + Python 3.11 and homogeneous runtime nesting. + - name: py311_conda_openblas_clang_clang os: ubuntu-latest PACKAGER: "conda" - PYTHON_VERSION: "3.10" + PYTHON_VERSION: "3.11" BLAS: "openblas" CC_OUTER_LOOP: "clang-18" CC_INNER_LOOP: "clang-18" diff --git a/CHANGES.md b/CHANGES.md index eb539e0d..5b246b4c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,9 @@ 3.9.0 (under development) ========================= +- Python 3.11 is now the minimum supported Python version. + https://github.com/joblib/threadpoolctl/issues/295 + 3.8.0 (2026-11-05) ================== diff --git a/continuous_integration/install.sh b/continuous_integration/install.sh index 01190bdb..2950724e 100755 --- a/continuous_integration/install.sh +++ b/continuous_integration/install.sh @@ -111,12 +111,9 @@ elif [[ "$PACKAGER" == "pip-dev" ]]; then pip install --pre --upgrade --timeout=60 --extra-index $dev_anaconda_url numpy scipy elif [[ "$PACKAGER" == "ubuntu" ]]; then - # Remove the ubuntu toolchain PPA that seems to be invalid: - # https://github.com/scikit-learn/scikit-learn/pull/13934 - sudo add-apt-repository --remove ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install python3-scipy python3-virtualenv $APT_BLAS - python3 -m virtualenv --system-site-packages --python=python3 testenv + /usr/bin/python3 -m virtualenv --system-site-packages testenv source testenv/bin/activate elif [[ "$INSTALL_BLAS" == "blis" ]]; then diff --git a/pyproject.toml b/pyproject.toml index 623b0324..394d22c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,13 +6,12 @@ build-backend = "flit_core.buildapi" name = "threadpoolctl" authors = [{name = "Thomas Moreau", email = "thomas.moreau.2010@gmail.com"}] readme = "README.md" -requires-python = ">=3.10" +requires-python = ">=3.11" license = "BSD-3-Clause" dynamic = ["version", "description"] classifiers = [ "Intended Audience :: Developers", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13",