Skip to content

Commit e4e1a89

Browse files
committed
feat!: ⬆️ support Python 3.12-3.14, default to 3.14
numpy 2.5 requires >=3.12, so a 3.11 floor silently capped users at numpy 2.4.x; 3.11 is also security-only until Oct 2027. Raise the floor to 3.12 and add 3.14. - requires-python >=3.12,<3.15 and matching classifiers. - .python-version, docpages, copilot-setup-steps and the Sonar job use 3.14. - Test matrix covers the range ends: 3.12 and 3.14. - ruff target-version and pyright pythonVersion track the *oldest* supported version, so they stay one step behind the default at 3.12. BREAKING CHANGE: Python 3.11 is no longer supported.
1 parent 043bf53 commit e4e1a89

8 files changed

Lines changed: 455 additions & 379 deletions

File tree

‎.github/copilot-instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
### Python Instructions
1919

20-
- Write code to support Python 3.11, 3.12, 3.13.
20+
- Write code to support Python 3.12, 3.13, 3.14.
2121
- Write clear and concise comments for each function.
2222
- Ensure functions have descriptive names and include type hints.
2323
- Provide docstrings following PEP 257 conventions.

‎.github/workflows/copilot-setup-steps.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
uses: astral-sh/setup-uv@v7
2828
with:
2929
enable-cache: true
30-
python-version: "3.11"
30+
python-version: "3.14"
3131

3232
- name: Install package
3333
run: |

‎.github/workflows/docpages.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
uses: astral-sh/setup-uv@v7
4848
with:
4949
enable-cache: true
50-
python-version: "3.11"
50+
python-version: "3.14"
5151

5252
- name: Install package
5353
run: |

‎.github/workflows/test.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ jobs:
4242
- ubuntu-latest
4343
- gpu-runner
4444
python-version:
45-
- "3.11"
46-
- "3.13"
45+
- "3.12"
46+
- "3.14"
4747
test-group:
4848
- "not slow and not perf"
4949

@@ -148,7 +148,7 @@ jobs:
148148
uses: astral-sh/setup-uv@v7
149149
with:
150150
enable-cache: true
151-
python-version: "3.13"
151+
python-version: "3.14"
152152

153153
- name: 'Install dependencies'
154154
run: |

‎.python-version‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.11
1+
3.14

‎CONTRIBUTING.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ accuracy, not just the shapes.
5959

6060
## Code style
6161

62-
The project targets Python 3.11+ and is checked with `ruff` under a strict rule
62+
The project targets Python 3.12+ and is checked with `ruff` under a strict rule
6363
set. Public functions carry type hints and Google-style docstrings without type
6464
annotations in the argument list. Keep lines within the configured limit and
6565
prefer clear code over clever code.

‎pyproject.toml‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ description = "Successive Randomized Compression."
1212
readme = "README.md"
1313
license = "Apache-2.0"
1414
license-files = ["LICENSE", "NOTICE"]
15-
requires-python = ">=3.11,<3.14"
15+
requires-python = ">=3.12,<3.15"
1616
classifiers = [
1717
"Development Status :: 3 - Alpha",
1818
"Intended Audience :: Science/Research",
@@ -21,9 +21,9 @@ classifiers = [
2121
"Programming Language :: Python",
2222
"Programming Language :: Python :: 3",
2323
"Programming Language :: Python :: 3 :: Only",
24-
"Programming Language :: Python :: 3.11",
2524
"Programming Language :: Python :: 3.12",
2625
"Programming Language :: Python :: 3.13",
26+
"Programming Language :: Python :: 3.14",
2727
"Topic :: Scientific/Engineering :: Chemistry",
2828
"Topic :: Scientific/Engineering :: Physics",
2929
"Topic :: Scientific/Engineering",
@@ -153,7 +153,8 @@ exclude_also = [
153153

154154
exclude = ["docs", "src/src_method/_version.py"]
155155

156-
target-version = "py311"
156+
# Lint against the oldest supported interpreter, not the default one.
157+
target-version = "py312"
157158

158159
[tool.ruff.format]
159160
# enable auto-formatting of code examples in docstrings
@@ -267,7 +268,7 @@ required-imports = ["from __future__ import annotations"]
267268

268269

269270
[tool.pyright]
270-
pythonVersion = "3.11"
271+
pythonVersion = "3.12"
271272

272273
include = ["src/src_method/**/*.py"]
273274

‎uv.lock‎

Lines changed: 442 additions & 367 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)