From eeb24f6a64da869c8e71950be5d3636d1796b7ee Mon Sep 17 00:00:00 2001 From: Nyako Shigure Date: Mon, 28 Sep 2026 23:16:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9C=A8=20feat:=20Support=20Python=203.15?= =?UTF-8?q?=20and=203.15t,=20drop=20Python=203.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/lint-and-fmt.yml | 5 ++++- .github/workflows/unit-test.yml | 20 +++++++++++++++++++- README.md | 4 ++++ pyproject.toml | 6 +++--- uv.lock | 22 +--------------------- 5 files changed, 31 insertions(+), 26 deletions(-) diff --git a/.github/workflows/lint-and-fmt.yml b/.github/workflows/lint-and-fmt.yml index 3565163..c9a3f8b 100644 --- a/.github/workflows/lint-and-fmt.yml +++ b/.github/workflows/lint-and-fmt.yml @@ -13,9 +13,12 @@ jobs: strategy: matrix: # Only run linter and formatter on minimum supported Python version - python-version: ['3.10'] + python-version: ['3.11'] architecture: ['x64'] name: lint and fmt - Python ${{ matrix.python-version }} on ${{ matrix.architecture }} + env: + UV_PYTHON: ${{ matrix.python-version }} + UV_LOCKED: 'true' steps: - name: Checkout uses: actions/checkout@v7 diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 7a339cd..5f6df82 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -12,9 +12,12 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] + python-version: ['3.11', '3.12', '3.13', '3.14', '3.15', '3.15t'] architecture: ['x64'] name: unittest - Python ${{ matrix.python-version }} on ${{ matrix.architecture }} + env: + UV_PYTHON: ${{ matrix.python-version }} + UV_LOCKED: 'true' steps: - name: Checkout uses: actions/checkout@v7 @@ -38,6 +41,21 @@ jobs: run: | just ci-install + - name: Verify Python runtime + run: | + uv run python - <<'PY' + import os + import sys + import sysconfig + + requested = os.environ["UV_PYTHON"] + assert f"{sys.version_info.major}.{sys.version_info.minor}" == requested.removesuffix("t") + if requested.endswith("t"): + assert sysconfig.get_config_var("Py_GIL_DISABLED") == 1 + assert not sys._is_gil_enabled() + print(sys.version) + PY + - name: unit test run: | just ci-test diff --git a/README.md b/README.md index 357ae2d..a8fdfc4 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,7 @@ Just a template for quickly creating a python library.

Before the work starts, replace the `moelib` with the name of your library. + +The template requires Python 3.11 or newer. CI tests Python 3.11–3.15, including +prereleases of Python 3.15 and its free-threaded build (`3.15t`), using the same +locked dependencies and test suite. diff --git a/pyproject.toml b/pyproject.toml index bfb8d57..5715fd5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "moelib" version = "0.1.0" description = "" readme = "README.md" -requires-python = ">=3.10" +requires-python = ">=3.11" dependencies = [] authors = [{ name = "Nyakku Shigure", email = "sigure.qaq@gmail.com" }] keywords = [] @@ -14,11 +14,11 @@ classifiers = [ "Typing :: Typed", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Programming Language :: Python :: Implementation :: CPython", ] @@ -41,7 +41,7 @@ dev = [ [tool.ruff] line-length = 120 -target-version = "py310" +target-version = "py311" [tool.ruff.lint] select = [ diff --git a/uv.lock b/uv.lock index d9160b0..4845322 100644 --- a/uv.lock +++ b/uv.lock @@ -1,6 +1,6 @@ version = 1 revision = 3 -requires-python = ">=3.10" +requires-python = ">=3.11" [[package]] name = "colorama" @@ -11,15 +11,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] -[[package]] -name = "exceptiongroup" -version = "1.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883, upload-time = "2024-07-12T22:26:00.161Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453, upload-time = "2024-07-12T22:25:58.476Z" }, -] - [[package]] name = "iniconfig" version = "2.0.0" @@ -85,12 +76,10 @@ version = "9.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, { name = "pygments" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" } wheels = [ @@ -135,15 +124,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8b/4b/51327018d056f0dad2c2238f26d1fb0f53707a9d91b75dea6d1b3039f136/ruff-0.16.7-py3-none-win_arm64.whl", hash = "sha256:aab7f39e2c9df6c596216070f98eef1207b94f8516cca20c808826974971855b", size = 10412401, upload-time = "2026-09-10T18:04:04.098Z" }, ] -[[package]] -name = "tomli" -version = "2.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/b9/de2a5c0144d7d75a57ff355c0c24054f965b2dc3036456ae03a51ea6264b/tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed", size = 16096, upload-time = "2024-10-02T10:46:13.208Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/db/ce8eda256fa131af12e0a76d481711abe4681b6923c27efb9a255c9e4594/tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38", size = 13237, upload-time = "2024-10-02T10:46:11.806Z" }, -] - [[package]] name = "ty" version = "0.0.80" From cad224422edf50c4eb34e2b926a1d4f0dc4cd1c2 Mon Sep 17 00:00:00 2001 From: Nyako Shigure Date: Mon, 28 Sep 2026 23:56:52 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20ci:=20keep=20the=20Pyt?= =?UTF-8?q?hon=20support=20update=20minimal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/lint-and-fmt.yml | 3 --- .github/workflows/unit-test.yml | 16 ---------------- README.md | 4 ---- 3 files changed, 23 deletions(-) diff --git a/.github/workflows/lint-and-fmt.yml b/.github/workflows/lint-and-fmt.yml index c9a3f8b..4e6b0b3 100644 --- a/.github/workflows/lint-and-fmt.yml +++ b/.github/workflows/lint-and-fmt.yml @@ -16,9 +16,6 @@ jobs: python-version: ['3.11'] architecture: ['x64'] name: lint and fmt - Python ${{ matrix.python-version }} on ${{ matrix.architecture }} - env: - UV_PYTHON: ${{ matrix.python-version }} - UV_LOCKED: 'true' steps: - name: Checkout uses: actions/checkout@v7 diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 5f6df82..03fe4f8 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -17,7 +17,6 @@ jobs: name: unittest - Python ${{ matrix.python-version }} on ${{ matrix.architecture }} env: UV_PYTHON: ${{ matrix.python-version }} - UV_LOCKED: 'true' steps: - name: Checkout uses: actions/checkout@v7 @@ -41,21 +40,6 @@ jobs: run: | just ci-install - - name: Verify Python runtime - run: | - uv run python - <<'PY' - import os - import sys - import sysconfig - - requested = os.environ["UV_PYTHON"] - assert f"{sys.version_info.major}.{sys.version_info.minor}" == requested.removesuffix("t") - if requested.endswith("t"): - assert sysconfig.get_config_var("Py_GIL_DISABLED") == 1 - assert not sys._is_gil_enabled() - print(sys.version) - PY - - name: unit test run: | just ci-test diff --git a/README.md b/README.md index a8fdfc4..357ae2d 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,3 @@ Just a template for quickly creating a python library.

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