diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 64792fb..c73efc6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -26,7 +26,7 @@ jobs: submodules: recursive - uses: actions/setup-python@v7 with: - python-version: '3.10' + python-version: '3.11' - name: Install dependencies # autodoc imports the package, so the extension has to compile here -- hence the # same MPI and BLAS packages the test workflow installs, rather than the lighter diff --git a/.github/workflows/test_development_versions.yml b/.github/workflows/test_development_versions.yml index 303cc62..2d3a958 100644 --- a/.github/workflows/test_development_versions.yml +++ b/.github/workflows/test_development_versions.yml @@ -22,7 +22,7 @@ jobs: max-parallel: 4 matrix: os: [ubuntu-latest] - python-version: ["3.10", "3.14"] + python-version: ["3.11", "3.14"] steps: - uses: actions/checkout@v7 with: diff --git a/.github/workflows/test_latest_versions.yml b/.github/workflows/test_latest_versions.yml index 1944108..21079e2 100644 --- a/.github/workflows/test_latest_versions.yml +++ b/.github/workflows/test_latest_versions.yml @@ -24,7 +24,7 @@ jobs: max-parallel: 4 matrix: os: [ubuntu-latest, macos-latest] - python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v7 with: diff --git a/.github/workflows/test_minimum_versions.yml b/.github/workflows/test_minimum_versions.yml index 1e775fe..2076d6c 100644 --- a/.github/workflows/test_minimum_versions.yml +++ b/.github/workflows/test_minimum_versions.yml @@ -20,7 +20,7 @@ jobs: max-parallel: 4 matrix: os: [ubuntu-latest] - python-version: ["3.10"] + python-version: ["3.11"] steps: - uses: actions/checkout@v7 with: diff --git a/INSTALL.md b/INSTALL.md index e1ea188..1c03d3a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -8,7 +8,7 @@ reads, building against a host MPI, and how to verify what you got. ## Prerequisites -**Required:** Python 3.10+, MPI (OpenMPI/MPICH), BLAS (OpenBLAS/MKL), pybind11, mpi4py, numpy, compiler with OpenMP. +**Required:** Python 3.11+, MPI (OpenMPI/MPICH), BLAS (OpenBLAS/MKL), pybind11, mpi4py, numpy, compiler with OpenMP. **On macOS:** Apple clang ships without OpenMP, so add `llvm-openmp` to the conda environment. Homebrew's `libomp` is used as a fallback if the env has none. Pin the diff --git a/pyproject.toml b/pyproject.toml index 5a66f34..8946b29 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "sbd-eigensolver" version = "1.7.0" description = "Python bindings for Selected Basis Diagonalization (SBD) library" readme = "README.md" -requires-python = ">=3.10" +requires-python = ">=3.11" license = "Apache-2.0" license-files = ["LICENSE.txt"] keywords = ["quantum chemistry", "diagonalization", "tensor product basis", "MPI"] @@ -19,7 +19,6 @@ classifiers = [ "Topic :: Scientific/Engineering :: Chemistry", "Topic :: Scientific/Engineering :: Physics", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", diff --git a/releasenotes/notes/bump-minimum-python-38a75964047ebb47.yaml b/releasenotes/notes/bump-minimum-python-38a75964047ebb47.yaml new file mode 100644 index 0000000..2223ff4 --- /dev/null +++ b/releasenotes/notes/bump-minimum-python-38a75964047ebb47.yaml @@ -0,0 +1,6 @@ +--- +upgrade: + - | + Support for Python 3.10 has been dropped. Python 3.11 or later is now + required. Python 3.10 reached `end of life `__ + on October 1, 2026. diff --git a/tox.ini b/tox.ini index d149506..344d95a 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] -minversion = 4.4.3 -envlist = py{310,311,312,313,314}{,-notebook}, mpi, docs +minversion = 4.4.4 +envlist = py{311,312,313,314}{,-notebook}, mpi, docs isolated_build = True [testenv] @@ -78,12 +78,12 @@ commands = mpirun -n {env:SBD_TEST_NPROCS} pytest --only-mpi {posargs} # Spelled out with the hyphen outside the braces. Writing this as -# {,py310-,py311-,...}notebook does not work: tox expands numeric ranges in a section +# {,py311-,py312-,...}notebook does not work: tox expands numeric ranges in a section # name before splitting it on braces, so `py314-` parses as `py3` plus the range `14-`, -# which produces junk environment names and never defines py310-notebook and friends -- +# which produces junk environment names and never defines py311-notebook and friends -- # those then silently fall through to [testenv] and run the unit tests instead. Nesting # braces is not an alternative either; it crashes tox outright. -[testenv:{notebook,py310-notebook,py311-notebook,py312-notebook,py313-notebook,py314-notebook}] +[testenv:{notebook,py311-notebook,py312-notebook,py313-notebook,py314-notebook}] # nbmake runs each notebook with its own directory as the working directory, so the # relative paths the examples use to reach the vendored data resolve as they would for # someone running the notebook by hand.