Skip to content

Commit edd04a3

Browse files
committed
Drop Python 3.9 and 3.10; bump to v3.6.0
Raises requires-python from >=3.9 to >=3.11. Why: Python 3.9 has been EOL since October 2025. Python 3.10 EOLs October 2026 (~5 months out). Several upstream packages (pillow 12.2+, matplotlib 3.10+) no longer support 3.9 or 3.10, leaving the Dependabot resolver unable to find a coherent dependency graph and preventing security-fix updates from landing on uv.lock. Dropping these two versions both unblocks the resolver and reduces the duplicated-package noise in uv.lock (pillow has one entry instead of two python_full_version splits, etc.). Python 3.11 floor gives ~17 months of runway until EOL (October 2027); long enough to not have to revisit this routinely. Files updated: pyproject.toml - requires-python = ">=3.11" - classifiers: drop 3.9/3.10, add 3.14 - cibuildwheel.build: cp311 / cp312 / cp313 / cp314 - tool.black.target-version: py311 - tool.mypy.python_version: 3.11 - version: 3.5.2 -> 3.6.0 CMakeLists.txt: KALIGN_LIBRARY_VERSION 3.5.2 -> 3.6.0 build.zig: kalignPackageVersion 3.5.2 -> 3.6.0 .github/workflows/python.yml: matrix 3.11..3.14 .github/workflows/wheels.yml: CIBW_BUILD + matrix 3.11..3.14 uv.lock: regenerated against the new floor (single-graph entries replace the python<3.10 split duplicates). ChangeLog: new 3.6.0 release entry. This is a breaking change for users on Python 3.9 or 3.10 — hence the minor version bump (3.6.0) rather than a patch. Verified: kalign --version reports 3.6.0; kalign.__version__ reports 3.6.0. Full check-local.sh run pending.
1 parent 83450b1 commit edd04a3

7 files changed

Lines changed: 203 additions & 2895 deletions

File tree

.github/workflows/python.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
fail-fast: false
5555
matrix:
5656
os: [ubuntu-latest, macos-latest]
57-
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
57+
python-version: ['3.11', '3.12', '3.13', '3.14']
5858

5959
steps:
6060
- uses: actions/checkout@v5

.github/workflows/wheels.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
5757
- name: Build wheels
5858
env:
59-
CIBW_BUILD: cp39-* cp310-* cp311-* cp312-* cp313-*
59+
CIBW_BUILD: cp311-* cp312-* cp313-* cp314-*
6060
CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux*"
6161
CIBW_ARCHS: ${{ matrix.cibw_archs }}
6262
# Disable OpenMP on macOS to avoid libomp.dylib conflicts
@@ -133,7 +133,7 @@ jobs:
133133
fail-fast: false
134134
matrix:
135135
os: [ubuntu-latest, macos-14]
136-
python-version: ['3.9', '3.10', '3.11', '3.12']
136+
python-version: ['3.11', '3.12', '3.13', '3.14']
137137

138138
steps:
139139
- name: Set up Python ${{ matrix.python-version }}

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ include(CMakePackageConfigHelpers)
1212
include(GenerateExportHeader)
1313

1414
set(KALIGN_LIBRARY_VERSION_MAJOR 3)
15-
set(KALIGN_LIBRARY_VERSION_MINOR 5)
16-
set(KALIGN_LIBRARY_VERSION_PATCH 2)
15+
set(KALIGN_LIBRARY_VERSION_MINOR 6)
16+
set(KALIGN_LIBRARY_VERSION_PATCH 0)
1717
set(KALIGN_LIBRARY_VERSION_STRING ${KALIGN_LIBRARY_VERSION_MAJOR}.${KALIGN_LIBRARY_VERSION_MINOR}.${KALIGN_LIBRARY_VERSION_PATCH})
1818

1919

ChangeLog

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
2026-05-16 Timo Lassmann <timolassmann@icloud.com>
22

3+
* version 3.6.0 - Drop Python 3.9/3.10 support; CI Node 24 upgrade
4+
- Minimum Python version raised to 3.11. Python 3.9 reached EOL in
5+
October 2025 and 3.10 reaches EOL in October 2026; both are now
6+
beyond their supported lifecycle for upstream wheels (pillow,
7+
matplotlib). Wheels and CI matrices now target 3.11 / 3.12 / 3.13
8+
/ 3.14.
9+
- GitHub Actions updated to Node.js 24 successor versions
10+
(checkout v5, setup-python v6, upload/download-artifact v5,
11+
codecov v5) ahead of the 2026-06-02 forced Node 24 switch.
12+
- Drive-by: dropped redundant `brew install cmake` on macOS-latest
13+
runners (cmake is preinstalled).
14+
315
* version 3.5.2 - Four-mode preset system, threadpool, hardening
416
Algorithm and presets
517
- Four mode presets stable for protein and nucleotide:

build.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const std = @import("std");
22

3-
const kalignPackageVersion = "3.5.2";
3+
const kalignPackageVersion = "3.6.0";
44

55
const targets: []const std.Target.Query = &.{
66
.{ .cpu_arch = .aarch64, .os_tag = .macos },

pyproject.toml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ build-backend = "scikit_build_core.build"
88

99
[project]
1010
name = "kalign-python"
11-
version = "3.5.2"
11+
version = "3.6.0"
1212
description = "Python wrapper for the Kalign multiple sequence alignment engine"
1313
readme = "README-python.md"
1414
license = "Apache-2.0"
@@ -45,16 +45,15 @@ classifiers = [
4545
"Programming Language :: C",
4646
"Programming Language :: C++",
4747
"Programming Language :: Python :: 3",
48-
"Programming Language :: Python :: 3.9",
49-
"Programming Language :: Python :: 3.10",
5048
"Programming Language :: Python :: 3.11",
5149
"Programming Language :: Python :: 3.12",
5250
"Programming Language :: Python :: 3.13",
51+
"Programming Language :: Python :: 3.14",
5352
"Programming Language :: Python :: Implementation :: CPython",
5453
"Topic :: Scientific/Engineering :: Bio-Informatics",
5554
"Topic :: Software Development :: Libraries :: Python Modules"
5655
]
57-
requires-python = ">=3.9"
56+
requires-python = ">=3.11"
5857
dependencies = [
5958
"numpy>=1.19.0",
6059
]
@@ -107,8 +106,7 @@ Repository = "https://github.com/TimoLassmann/kalign"
107106
Changelog = "https://github.com/TimoLassmann/kalign/blob/main/ChangeLog"
108107

109108
[tool.scikit-build]
110-
# Wheel settings - removed py-api to build version-specific wheels
111-
# wheel.py-api = "cp39"
109+
# Wheel settings - build version-specific wheels (no py-api).
112110

113111
# CMake settings
114112
cmake.build-type = "Release"
@@ -145,8 +143,8 @@ logging.level = "DEBUG"
145143
BUILD_PYTHON_MODULE = "ON"
146144

147145
[tool.cibuildwheel]
148-
# Build wheels for Python 3.9+
149-
build = "cp39-* cp310-* cp311-* cp312-* cp313-*"
146+
# Build wheels for Python 3.11+
147+
build = "cp311-* cp312-* cp313-* cp314-*"
150148

151149
# Skip 32-bit builds (PyPy wheels are not built by default)
152150
skip = "*-win32 *-manylinux_i686"
@@ -191,7 +189,7 @@ addopts = [
191189

192190
[tool.black]
193191
line-length = 88
194-
target-version = ["py39"]
192+
target-version = ["py311"]
195193
include = '\.pyi?$'
196194
extend-exclude = '''
197195
/(
@@ -208,7 +206,7 @@ extend-exclude = '''
208206
'''
209207

210208
[tool.mypy]
211-
python_version = "3.9"
209+
python_version = "3.11"
212210
warn_return_any = true
213211
warn_unused_configs = true
214212
disallow_untyped_defs = true

0 commit comments

Comments
 (0)