Skip to content

Commit eeb24f6

Browse files
committed
✨ feat: Support Python 3.15 and 3.15t, drop Python 3.10
1 parent 230facb commit eeb24f6

5 files changed

Lines changed: 31 additions & 26 deletions

File tree

‎.github/workflows/lint-and-fmt.yml‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ jobs:
1313
strategy:
1414
matrix:
1515
# Only run linter and formatter on minimum supported Python version
16-
python-version: ['3.10']
16+
python-version: ['3.11']
1717
architecture: ['x64']
1818
name: lint and fmt - Python ${{ matrix.python-version }} on ${{ matrix.architecture }}
19+
env:
20+
UV_PYTHON: ${{ matrix.python-version }}
21+
UV_LOCKED: 'true'
1922
steps:
2023
- name: Checkout
2124
uses: actions/checkout@v7

‎.github/workflows/unit-test.yml‎

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ jobs:
1212
runs-on: ubuntu-latest
1313
strategy:
1414
matrix:
15-
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
15+
python-version: ['3.11', '3.12', '3.13', '3.14', '3.15', '3.15t']
1616
architecture: ['x64']
1717
name: unittest - Python ${{ matrix.python-version }} on ${{ matrix.architecture }}
18+
env:
19+
UV_PYTHON: ${{ matrix.python-version }}
20+
UV_LOCKED: 'true'
1821
steps:
1922
- name: Checkout
2023
uses: actions/checkout@v7
@@ -38,6 +41,21 @@ jobs:
3841
run: |
3942
just ci-install
4043
44+
- name: Verify Python runtime
45+
run: |
46+
uv run python - <<'PY'
47+
import os
48+
import sys
49+
import sysconfig
50+
51+
requested = os.environ["UV_PYTHON"]
52+
assert f"{sys.version_info.major}.{sys.version_info.minor}" == requested.removesuffix("t")
53+
if requested.endswith("t"):
54+
assert sysconfig.get_config_var("Py_GIL_DISABLED") == 1
55+
assert not sys._is_gil_enabled()
56+
print(sys.version)
57+
PY
58+
4159
- name: unit test
4260
run: |
4361
just ci-test

‎README.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,7 @@ Just a template for quickly creating a python library.
1414
</p>
1515

1616
Before the work starts, replace the `moelib` with the name of your library.
17+
18+
The template requires Python 3.11 or newer. CI tests Python 3.11–3.15, including
19+
prereleases of Python 3.15 and its free-threaded build (`3.15t`), using the same
20+
locked dependencies and test suite.

‎pyproject.toml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = "moelib"
33
version = "0.1.0"
44
description = ""
55
readme = "README.md"
6-
requires-python = ">=3.10"
6+
requires-python = ">=3.11"
77
dependencies = []
88
authors = [{ name = "Nyakku Shigure", email = "sigure.qaq@gmail.com" }]
99
keywords = []
@@ -14,11 +14,11 @@ classifiers = [
1414
"Typing :: Typed",
1515
"Programming Language :: Python",
1616
"Programming Language :: Python :: 3",
17-
"Programming Language :: Python :: 3.10",
1817
"Programming Language :: Python :: 3.11",
1918
"Programming Language :: Python :: 3.12",
2019
"Programming Language :: Python :: 3.13",
2120
"Programming Language :: Python :: 3.14",
21+
"Programming Language :: Python :: 3.15",
2222
"Programming Language :: Python :: Implementation :: CPython",
2323
]
2424

@@ -41,7 +41,7 @@ dev = [
4141

4242
[tool.ruff]
4343
line-length = 120
44-
target-version = "py310"
44+
target-version = "py311"
4545

4646
[tool.ruff.lint]
4747
select = [

‎uv.lock‎

Lines changed: 1 addition & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)