Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-py-build-cmake for 
openSUSE:Factory checked in at 2026-10-26 10:02:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-py-build-cmake (Old)
 and      /work/SRC/openSUSE:Factory/.python-py-build-cmake.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-py-build-cmake"

Mon Oct 26 10:02:25 2026 rev:7 rq:1392526 version:0.5.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-py-build-cmake/python-py-build-cmake.changes  
    2025-09-30 17:43:36.560350984 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-py-build-cmake.new.2252680/python-py-build-cmake.changes
 2026-10-26 10:03:52.796471021 +0100
@@ -1,0 +2,8 @@
+Sun Oct 25 19:37:13 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.5.1:
+  * Support free-threaded Python in latest CMake
+  * Add Python 3.15 support
+  * Drop Python 3.7 support
+
+-------------------------------------------------------------------

Old:
----
  py-build-cmake-0.5.0-gh.tar.gz

New:
----
  py-build-cmake-0.5.1-gh.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-py-build-cmake.spec ++++++
--- /var/tmp/diff_new_pack.CWE4Ik/_old  2026-10-26 10:03:54.774553975 +0100
+++ /var/tmp/diff_new_pack.CWE4Ik/_new  2026-10-26 10:03:54.777554101 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-py-build-cmake
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,32 +18,33 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-py-build-cmake
-Version:        0.5.0
+Version:        0.5.1
 Release:        0
 Summary:        Modern, PEP 517 compliant build backend for creating Python 
packages with
 License:        MIT
 URL:            https://github.com/tttapa/py-build-cmake
 Source:         
https://github.com/tttapa/py-build-cmake/archive/refs/tags/%{version}.tar.gz#/py-build-cmake-%{version}-gh.tar.gz
 BuildRequires:  %{python_module click >= 8.1.3}
-BuildRequires:  %{python_module distlib >= 0.3.5}
+BuildRequires:  %{python_module distlib >= 0.4.0}
 BuildRequires:  %{python_module flit-core >= 3.7}
-BuildRequires:  %{python_module lark}
+BuildRequires:  %{python_module lark >= 1.1.9}
+BuildRequires:  %{python_module packaging >= 23.2}
 BuildRequires:  %{python_module pip}
-BuildRequires:  %{python_module pyproject-metadata}
+BuildRequires:  %{python_module pyproject-metadata >= 0.9.1}
 BuildRequires:  %{python_module pytest}
-BuildRequires:  %{python_module tomli if %python-base < 3.11}
+BuildRequires:  %{python_module tomli >= 1.2.3 if %python-base < 3.11}
 BuildRequires:  cmake
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       cmake
 Requires:       python-click >= 8.1.3
-Requires:       python-distlib >= 0.3.5
+Requires:       python-distlib >= 0.4.0
 Requires:       python-packaging >= 23.2
 %if 0%{?python_version_nodots} < 311
 Requires:       python-tomli >= 1.2.3
 %endif
-Requires:       python-lark
-Requires:       python-pyproject-metadata
+Requires:       python-lark >= 1.1.9
+Requires:       python-pyproject-metadata >= 0.9.1
 Requires(post): update-alternatives
 Requires(postun): update-alternatives
 BuildArch:      noarch

++++++ py-build-cmake-0.5.0-gh.tar.gz -> py-build-cmake-0.5.1-gh.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/.github/workflows/wheel.yml 
new/py-build-cmake-0.5.1/.github/workflows/wheel.yml
--- old/py-build-cmake-0.5.0/.github/workflows/wheel.yml        2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/.github/workflows/wheel.yml        2026-08-22 
13:02:06.000000000 +0200
@@ -12,13 +12,13 @@
 jobs:
   build:
     runs-on: ubuntu-latest
-    container: '${{ matrix.python }}:${{ matrix.python-version }}${{ 
matrix.image-suffix }}-bullseye'
+    container: '${{ matrix.python }}:${{ matrix.python-version }}${{ 
matrix.image-suffix }}-bookworm'
     strategy:
       matrix:
         python: ['python']
-        python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
+        python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
         include:
-          - python-version: '3.14'
+          - python-version: '3.15'
             image-suffix: '-rc'  # Change this to '-rc' to test pre-releases
             python: 'python'
           - python-version: '3.10'
@@ -46,15 +46,16 @@
   test:
     needs: build
     runs-on: ubuntu-latest
-    container: '${{ matrix.python }}:${{ matrix.python-version }}${{ 
matrix.image-suffix }}-bullseye'
+    container: '${{ matrix.python }}:${{ matrix.python-version }}${{ 
matrix.image-suffix }}-bookworm'
     strategy:
       matrix:
         python: ['python']
-        python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
+        python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
         include:
-          - python-version: '3.14'
-            image-suffix: '-rc'  # Change this to '-rc' to test pre-releases
-            python: 'python'
+          # TODO: figure out why stubgen creates __init__.pyi files for 
namespace packages in Python 3.15
+          # - python-version: '3.15'
+          #   image-suffix: '-rc'  # Change this to '-rc' to test pre-releases
+          #   python: 'python'
           - python-version: '3.10'
             python: 'pypy'
     steps:
@@ -74,7 +75,7 @@
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 
'pypy3.10', '3.13t', '3.14', '3.14t']
+        python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 
'pypy3.10', '3.13t', '3.14', '3.14t']
         os: ['windows-latest']
     steps:
     - uses: actions/checkout@v4
@@ -103,7 +104,7 @@
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 
'pypy3.10', '3.13t', '3.14', '3.14t']
+        python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 
'pypy3.10', '3.13t', '3.14', '3.14t']
         os: ['windows-latest']
     steps:
     - uses: actions/checkout@v4
@@ -130,10 +131,8 @@
         python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 
'pypy3.10', '3.13t', '3.14', '3.14t']
         os: ['macos-latest']
         include:
-          - python-version: '3.7'
-            os: 'macos-13'
           - python-version: '3.13'
-            os: 'macos-13'
+            os: 'macos-15-intel'
     steps:
     - uses: actions/checkout@v4
     - uses: actions/setup-python@v5
@@ -161,10 +160,8 @@
         python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 
'pypy3.10', '3.13t', '3.14']  # '3.14t' is blocked by 
https://github.com/wjakob/nanobind/pull/1128
         os: ['macos-latest']
         include:
-          - python-version: '3.7'
-            os: 'macos-13'
           - python-version: '3.13'
-            os: 'macos-13'
+            os: 'macos-15-intel'
     steps:
     - uses: actions/checkout@v4
     - uses: actions/setup-python@v5
@@ -188,11 +185,17 @@
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        os: [ubuntu-22.04, windows-2022, macos-13, macos-latest]
+        os: [ubuntu-22.04, windows-2022, macos-15-intel, macos-latest]
         project: [pybind11-project, nanobind-project, swig-project]
       fail-fast: false
     steps:
     - uses: actions/checkout@v4
+    - name: Install Rust x86_64 target
+      if: ${{ matrix.os == 'macos-latest' }}
+      run: rustup target add x86_64-apple-darwin
+    - name: Install Rust aarch64 target
+      if: ${{ matrix.os == 'macos-15-intel' }}
+      run: rustup target add aarch64-apple-darwin
     - uses: actions/download-artifact@v4
       with:
         name: py_build_cmake-whl-python3.11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/.pre-commit-config.yaml 
new/py-build-cmake-0.5.1/.pre-commit-config.yaml
--- old/py-build-cmake-0.5.0/.pre-commit-config.yaml    2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/.pre-commit-config.yaml    2026-08-22 
13:02:06.000000000 +0200
@@ -1,6 +1,6 @@
 repos:
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: "v0.11.13"
+    rev: "v0.12.9"
     hooks:
       - id: ruff
         args: ["--fix", "--show-fixes"]
@@ -9,7 +9,7 @@
     hooks:
       - id: black
   - repo: https://github.com/pre-commit/mirrors-mypy
-    rev: "v1.16.0"
+    rev: "v1.17.1"
     hooks:
       - id: mypy
         files: ^src
@@ -21,12 +21,12 @@
           - "lark>=1.1.9,<2"
           - "click>=8.1.3,<9"
   - repo: https://github.com/pre-commit/mirrors-clang-format
-    rev: "v20.1.5"
+    rev: "v20.1.8"
     hooks:
       - id: clang-format
         types_or: [c++, c]
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: "v5.0.0"
+    rev: "v6.0.0"
     hooks:
       - id: check-added-large-files
       - id: check-case-conflict
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/README.md 
new/py-build-cmake-0.5.1/README.md
--- old/py-build-cmake-0.5.0/README.md  2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/README.md  2026-08-22 13:02:06.000000000 +0200
@@ -59,7 +59,7 @@
 ```toml
 [project] # Project metadata
 name = "example-project"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 readme = "README.md"
 license = "MIT"
 license-files = ["LICENSE"]
@@ -67,7 +67,7 @@
 dynamic = ["version", "description"]
 
 [build-system] # How pip and other frontends should build this project
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.module] # Where to find the Python module to package
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/docs/conf.py 
new/py-build-cmake-0.5.1/docs/conf.py
--- old/py-build-cmake-0.5.0/docs/conf.py       2025-08-14 23:04:51.000000000 
+0200
+++ new/py-build-cmake-0.5.1/docs/conf.py       2026-08-22 13:02:06.000000000 
+0200
@@ -14,7 +14,7 @@
 project = "py-build-cmake"
 copyright = "2025, Pieter P"
 author = "Pieter P"
-release = "0.5.0"
+release = "0.5.1"
 
 # -- General configuration ---------------------------------------------------
 # 
https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -39,7 +39,7 @@
 html_context = {
     "github_user": "tttapa",
     "github_repo": "py-build-cmake",
-    "github_version": "0.5.0",
+    "github_version": "0.5.1",
     "doc_path": "docs",
 }
 html_show_sourcelink = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/docs/getting-started/first-steps.md 
new/py-build-cmake-0.5.1/docs/getting-started/first-steps.md
--- old/py-build-cmake-0.5.0/docs/getting-started/first-steps.md        
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/docs/getting-started/first-steps.md        
2026-08-22 13:02:06.000000000 +0200
@@ -22,7 +22,7 @@
 
 ```toml
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/docs/usage/cross-compilation.md 
new/py-build-cmake-0.5.1/docs/usage/cross-compilation.md
--- old/py-build-cmake-0.5.0/docs/usage/cross-compilation.md    2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/docs/usage/cross-compilation.md    2026-08-22 
13:02:06.000000000 +0200
@@ -88,7 +88,7 @@
 We'll first clone `py-build-cmake` and its example projects:
 
 ```sh
-git clone https://github.com/tttapa/py-build-cmake --branch=0.5.0
+git clone https://github.com/tttapa/py-build-cmake --branch=0.5.1
 cd py-build-cmake
 ```
 
@@ -193,7 +193,7 @@
 [100%] Built target _add_module
 -- Installing: 
/tmp/xxxxx/staging/pybind11_project/_add_module.cpython-311-aarch64-linux-gnu.so
 [...]
-Successfully built 
pybind11_project-0.5.0-cp311-cp311-manylinux_2_27_aarch64.whl
+Successfully built 
pybind11_project-0.5.1-cp311-cp311-manylinux_2_27_aarch64.whl
 ```
 You can see that CMake is using the cross-compiler we downloaded, and that it
 managed to locate the version of Python we requested (CPython 3.11 for 
AArch64).
@@ -201,7 +201,7 @@
 (`.cpython-311-aarch64-linux-gnu.so` in this case) and the Wheel tags
 (`cp311-cp311-manylinux_2_27_aarch64`).
 
-You can now copy the Wheel package in 
`examples/pybind11-project/dist/pybind11_project-0.5.0-cp311-cp311-manylinux_2_27_aarch64.whl`
+You can now copy the Wheel package in 
`examples/pybind11-project/dist/pybind11_project-0.5.1-cp311-cp311-manylinux_2_27_aarch64.whl`
 to e.g. a Raspberry Pi and install it using `pip install`.
 
 ### Automated Bash scripts
@@ -221,42 +221,42 @@
 `examples/pybind11-project/dist` directory:
 ```sh
 examples/pybind11-project/dist
-├── pybind11_project-0.5.0-cp37-cp37m-linux_armv6l.whl
-├── pybind11_project-0.5.0-cp37-cp37m-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-cp37-cp37m-manylinux_2_27_armv7l.whl
-├── pybind11_project-0.5.0-cp37-cp37m-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-cp38-cp38-linux_armv6l.whl
-├── pybind11_project-0.5.0-cp38-cp38-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-cp38-cp38-manylinux_2_27_armv7l.whl
-├── pybind11_project-0.5.0-cp38-cp38-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-cp39-cp39-linux_armv6l.whl
-├── pybind11_project-0.5.0-cp39-cp39-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-cp39-cp39-manylinux_2_27_armv7l.whl
-├── pybind11_project-0.5.0-cp39-cp39-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-cp310-cp310-linux_armv6l.whl
-├── pybind11_project-0.5.0-cp310-cp310-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-cp310-cp310-manylinux_2_27_armv7l.whl
-├── pybind11_project-0.5.0-cp310-cp310-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-cp311-cp311-linux_armv6l.whl
-├── pybind11_project-0.5.0-cp311-cp311-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-cp311-cp311-manylinux_2_27_armv7l.whl
-├── pybind11_project-0.5.0-cp311-cp311-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-cp312-cp312-linux_armv6l.whl
-├── pybind11_project-0.5.0-cp312-cp312-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-cp312-cp312-manylinux_2_27_armv7l.whl
-├── pybind11_project-0.5.0-cp312-cp312-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-cp313-cp313-linux_armv6l.whl
-├── pybind11_project-0.5.0-cp313-cp313-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-cp313-cp313-manylinux_2_27_armv7l.whl
-├── pybind11_project-0.5.0-cp313-cp313-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-pp37-pypy37_pp73-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-pp37-pypy37_pp73-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-pp38-pypy38_pp73-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-pp38-pypy38_pp73-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.whl
-├── pybind11_project-0.5.0-pp39-pypy39_pp73-manylinux_2_27_x86_64.whl
-├── pybind11_project-0.5.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.whl
-└── pybind11_project-0.5.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-cp37-cp37m-linux_armv6l.whl
+├── pybind11_project-0.5.1-cp37-cp37m-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-cp37-cp37m-manylinux_2_27_armv7l.whl
+├── pybind11_project-0.5.1-cp37-cp37m-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-cp38-cp38-linux_armv6l.whl
+├── pybind11_project-0.5.1-cp38-cp38-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-cp38-cp38-manylinux_2_27_armv7l.whl
+├── pybind11_project-0.5.1-cp38-cp38-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-cp39-cp39-linux_armv6l.whl
+├── pybind11_project-0.5.1-cp39-cp39-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-cp39-cp39-manylinux_2_27_armv7l.whl
+├── pybind11_project-0.5.1-cp39-cp39-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-cp310-cp310-linux_armv6l.whl
+├── pybind11_project-0.5.1-cp310-cp310-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-cp310-cp310-manylinux_2_27_armv7l.whl
+├── pybind11_project-0.5.1-cp310-cp310-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-cp311-cp311-linux_armv6l.whl
+├── pybind11_project-0.5.1-cp311-cp311-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-cp311-cp311-manylinux_2_27_armv7l.whl
+├── pybind11_project-0.5.1-cp311-cp311-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-cp312-cp312-linux_armv6l.whl
+├── pybind11_project-0.5.1-cp312-cp312-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-cp312-cp312-manylinux_2_27_armv7l.whl
+├── pybind11_project-0.5.1-cp312-cp312-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-cp313-cp313-linux_armv6l.whl
+├── pybind11_project-0.5.1-cp313-cp313-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-cp313-cp313-manylinux_2_27_armv7l.whl
+├── pybind11_project-0.5.1-cp313-cp313-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-pp37-pypy37_pp73-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-pp37-pypy37_pp73-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-pp38-pypy38_pp73-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-pp38-pypy38_pp73-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-pp39-pypy39_pp73-manylinux_2_27_aarch64.whl
+├── pybind11_project-0.5.1-pp39-pypy39_pp73-manylinux_2_27_x86_64.whl
+├── pybind11_project-0.5.1-pp310-pypy310_pp73-manylinux_2_27_aarch64.whl
+└── pybind11_project-0.5.1-pp310-pypy310_pp73-manylinux_2_27_x86_64.whl
 ```
 
 ### A closer look at the CMake toolchain files
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/docs/usage/editable-install.md 
new/py-build-cmake-0.5.1/docs/usage/editable-install.md
--- old/py-build-cmake-0.5.0/docs/usage/editable-install.md     2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/docs/usage/editable-install.md     2026-08-22 
13:02:06.000000000 +0200
@@ -89,7 +89,9 @@
 _spec.loader.exec_module(_mod)
 # After importing, add its symbols to our global scope
 _vars = _mod.__dict__.copy()
-for _k in 
['__builtins__','__cached__','__file__','__loader__','__name__','__package__','__path__','__spec__']:
 _vars.pop(_k)
+for _k in 
['__builtins__','__cached__','__file__','__loader__','__name__','__package__','__path__','__spec__']:
+    try: _vars.pop(_k)
+    except KeyError: pass
 globals().update(_vars)
 # Clean up
 del _k, _spec, _mod, _vars, _util
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/examples/minimal/README.md 
new/py-build-cmake-0.5.1/examples/minimal/README.md
--- old/py-build-cmake-0.5.0/examples/minimal/README.md 2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/minimal/README.md 2026-08-22 
13:02:06.000000000 +0200
@@ -124,7 +124,7 @@
 [project]
 name = "minimal"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -132,13 +132,13 @@
 classifiers = [
     "Development Status :: 3 - Alpha",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "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",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -171,7 +171,7 @@
 
 ```toml
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/examples/minimal/pyproject.toml 
new/py-build-cmake-0.5.1/examples/minimal/pyproject.toml
--- old/py-build-cmake-0.5.0/examples/minimal/pyproject.toml    2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/minimal/pyproject.toml    2026-08-22 
13:02:06.000000000 +0200
@@ -1,7 +1,7 @@
 [project]
 name = "minimal"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -9,13 +9,13 @@
 classifiers = [
     "Development Status :: 3 - Alpha",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "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",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -25,7 +25,7 @@
 dynamic = ["version", "description"]
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.module]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/minimal/src/minimal/__init__.py 
new/py-build-cmake-0.5.1/examples/minimal/src/minimal/__init__.py
--- old/py-build-cmake-0.5.0/examples/minimal/src/minimal/__init__.py   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/minimal/src/minimal/__init__.py   
2026-08-22 13:02:06.000000000 +0200
@@ -2,4 +2,4 @@
 A simple, minimal example of building a Python C module using CMake.
 """
 
-__version__ = "0.5.0"
+__version__ = "0.5.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/minimal-debug-component/debug/pyproject.toml 
new/py-build-cmake-0.5.1/examples/minimal-debug-component/debug/pyproject.toml
--- 
old/py-build-cmake-0.5.0/examples/minimal-debug-component/debug/pyproject.toml  
    2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/examples/minimal-debug-component/debug/pyproject.toml  
    2026-08-22 13:02:06.000000000 +0200
@@ -1,19 +1,19 @@
 [project]
 name = "minimal-comp-debug"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
 keywords = ["example", "addition", "subtraction", "debug"]
 classifiers = []
 urls = { "Documentation" = "https://tttapa.github.io/"; }
-dependencies = ["minimal-comp==0.5.0"]
-version = "0.5.0"
+dependencies = ["minimal-comp==0.5.1"]
+version = "0.5.1"
 description = "Debug symbols for the minimal package."
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build_component"
 
 [tool.py-build-cmake]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/minimal-debug-component/pyproject.toml 
new/py-build-cmake-0.5.1/examples/minimal-debug-component/pyproject.toml
--- old/py-build-cmake-0.5.0/examples/minimal-debug-component/pyproject.toml    
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/minimal-debug-component/pyproject.toml    
2026-08-22 13:02:06.000000000 +0200
@@ -1,7 +1,7 @@
 [project]
 name = "minimal-comp"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -9,13 +9,13 @@
 classifiers = [
     "Development Status :: 3 - Alpha",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "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",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -26,10 +26,10 @@
 
 [project.optional-dependencies]
 docs = ["sphinx~=5.1", "matplotlib", "breathe", "furo"]
-debug = ["minimal-debug==0.5.0"]
+debug = ["minimal-debug==0.5.1"]
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.module]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/minimal-debug-component/src/minimal_comp/__init__.py
 
new/py-build-cmake-0.5.1/examples/minimal-debug-component/src/minimal_comp/__init__.py
--- 
old/py-build-cmake-0.5.0/examples/minimal-debug-component/src/minimal_comp/__init__.py
      2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/examples/minimal-debug-component/src/minimal_comp/__init__.py
      2026-08-22 13:02:06.000000000 +0200
@@ -2,4 +2,4 @@
 A simple, minimal example of building a Python C module using CMake.
 """
 
-__version__ = "0.5.0"
+__version__ = "0.5.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/minimal-debug-component/tests/test_component.py
 
new/py-build-cmake-0.5.1/examples/minimal-debug-component/tests/test_component.py
--- 
old/py-build-cmake-0.5.0/examples/minimal-debug-component/tests/test_component.py
   2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/examples/minimal-debug-component/tests/test_component.py
   2026-08-22 13:02:06.000000000 +0200
@@ -13,7 +13,7 @@
     reason="No separate debug symbol files on macOS",
 )
 def test_component():
-    from importlib.resources import files
+    from importlib.resources import files  # noqa: PLC0415
 
     contents = [
         resource.name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/minimal-program/pyproject.toml 
new/py-build-cmake-0.5.1/examples/minimal-program/pyproject.toml
--- old/py-build-cmake-0.5.0/examples/minimal-program/pyproject.toml    
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/minimal-program/pyproject.toml    
2026-08-22 13:02:06.000000000 +0200
@@ -1,7 +1,7 @@
 [project]
 name = "minimal-program"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -9,13 +9,13 @@
 classifiers = [
     "Development Status :: 3 - Alpha",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "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",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -25,7 +25,7 @@
 dynamic = ["version", "description"]
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.module]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/minimal-program/src/minimal_program_module/__init__.py
 
new/py-build-cmake-0.5.1/examples/minimal-program/src/minimal_program_module/__init__.py
--- 
old/py-build-cmake-0.5.0/examples/minimal-program/src/minimal_program_module/__init__.py
    2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/examples/minimal-program/src/minimal_program_module/__init__.py
    2026-08-22 13:02:06.000000000 +0200
@@ -2,4 +2,4 @@
 A simple, minimal example of building a C++ program using CMake.
 """
 
-__version__ = "0.5.0"
+__version__ = "0.5.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/nanobind-project/CMakeLists.txt 
new/py-build-cmake-0.5.1/examples/nanobind-project/CMakeLists.txt
--- old/py-build-cmake-0.5.0/examples/nanobind-project/CMakeLists.txt   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/nanobind-project/CMakeLists.txt   
2026-08-22 13:02:06.000000000 +0200
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.26...4.0)
-project(nanobind-project VERSION 0.5.0)
+project(nanobind-project VERSION 0.5.1)
 set(PY_VERSION_SUFFIX "")
 set(PY_FULL_VERSION ${PROJECT_VERSION}${PY_VERSION_SUFFIX})
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/nanobind-project/pyproject.toml 
new/py-build-cmake-0.5.1/examples/nanobind-project/pyproject.toml
--- old/py-build-cmake-0.5.0/examples/nanobind-project/pyproject.toml   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/nanobind-project/pyproject.toml   
2026-08-22 13:02:06.000000000 +0200
@@ -15,6 +15,7 @@
     "Programming Language :: Python :: 3.11",
     "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -31,7 +32,7 @@
 
 [build-system]
 requires = [
-    "py-build-cmake~=0.5.0",
+    "py-build-cmake~=0.5.1",
     "nanobind~=2.8.0",
     "typing_extensions>=4.12.2,<5; python_version < '3.11'",
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/nanobind-project/src/nanobind_project/__init__.py
 
new/py-build-cmake-0.5.1/examples/nanobind-project/src/nanobind_project/__init__.py
--- 
old/py-build-cmake-0.5.0/examples/nanobind-project/src/nanobind_project/__init__.py
 2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/examples/nanobind-project/src/nanobind_project/__init__.py
 2026-08-22 13:02:06.000000000 +0200
@@ -1,3 +1,3 @@
 """Example project using the py-build-cmake build backend and nanobind."""
 
-__version__ = "0.5.0"
+__version__ = "0.5.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/pybind11-project/CMakeLists.txt 
new/py-build-cmake-0.5.1/examples/pybind11-project/CMakeLists.txt
--- old/py-build-cmake-0.5.0/examples/pybind11-project/CMakeLists.txt   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/pybind11-project/CMakeLists.txt   
2026-08-22 13:02:06.000000000 +0200
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.18...4.0)
-project(pybind11-project VERSION 0.5.0)
+project(pybind11-project VERSION 0.5.1)
 set(PY_VERSION_SUFFIX "")
 set(PY_FULL_VERSION ${PROJECT_VERSION}${PY_VERSION_SUFFIX})
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/pybind11-project/cross-compile-linux.sh 
new/py-build-cmake-0.5.1/examples/pybind11-project/cross-compile-linux.sh
--- old/py-build-cmake-0.5.0/examples/pybind11-project/cross-compile-linux.sh   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/pybind11-project/cross-compile-linux.sh   
2026-08-22 13:02:06.000000000 +0200
@@ -25,9 +25,9 @@
 
 # Select the architectures and Python versions to build for.
 triples=(x86_64-bionic-linux-gnu armv6-rpi-linux-gnueabihf 
armv7-neon-linux-gnueabihf aarch64-rpi3-linux-gnu)
-python_versions=("python3.7" "python3.8" "python3.9" "python3.10" "python3.11" 
"python3.12" "python3.13" "python3.14")
+python_versions=("python3.8" "python3.9" "python3.10" "python3.11" 
"python3.12" "python3.13" "python3.14")
 pypy_triples=(x86_64-bionic-linux-gnu aarch64-rpi3-linux-gnu)
-pypy_versions=("pypy3.7-v7.3" "pypy3.8-v7.3" "pypy3.9-v7.3" "pypy3.10-v7.3" 
"pypy3.11-v7.3")
+pypy_versions=("pypy3.8-v7.3" "pypy3.9-v7.3" "pypy3.10-v7.3" "pypy3.11-v7.3")
 
 # Ensure that the necessary toolchains are available.
 toolchain_folder="$PWD/../../toolchains"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/pybind11-project/pyproject.toml 
new/py-build-cmake-0.5.1/examples/pybind11-project/pyproject.toml
--- old/py-build-cmake-0.5.0/examples/pybind11-project/pyproject.toml   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/pybind11-project/pyproject.toml   
2026-08-22 13:02:06.000000000 +0200
@@ -1,7 +1,7 @@
 [project]
 name = "pybind11-project" # Name on PyPI
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -9,13 +9,13 @@
 classifiers = [
     "Development Status :: 3 - Alpha",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "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",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -32,7 +32,7 @@
 
 [build-system]
 requires = [
-    "py-build-cmake~=0.5.0",
+    "py-build-cmake~=0.5.1",
     "pybind11>=2.13.6,<4",
     "pybind11-stubgen~=2.5.4",
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/pybind11-project/src/pybind11_project/__init__.py
 
new/py-build-cmake-0.5.1/examples/pybind11-project/src/pybind11_project/__init__.py
--- 
old/py-build-cmake-0.5.0/examples/pybind11-project/src/pybind11_project/__init__.py
 2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/examples/pybind11-project/src/pybind11_project/__init__.py
 2026-08-22 13:02:06.000000000 +0200
@@ -1,3 +1,3 @@
 """Example project using the py-build-cmake build backend and pybind11."""
 
-__version__ = "0.5.0"
+__version__ = "0.5.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/pybind11-project/tests/test_add_module.py 
new/py-build-cmake-0.5.1/examples/pybind11-project/tests/test_add_module.py
--- old/py-build-cmake-0.5.0/examples/pybind11-project/tests/test_add_module.py 
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/pybind11-project/tests/test_add_module.py 
2026-08-22 13:02:06.000000000 +0200
@@ -11,9 +11,6 @@
 def test_version():
     assert py_version == py_cpp_version
     assert py_version == cpp_version
-    try:  # No importlib in Python 3.7 and below
-        from importlib.metadata import version
+    from importlib.metadata import version  # noqa: PLC0415
 
-        assert py_version == version("pybind11_project")
-    except ImportError:
-        pass
+    assert py_version == version("pybind11_project")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/swig-project/CMakeLists.txt 
new/py-build-cmake-0.5.1/examples/swig-project/CMakeLists.txt
--- old/py-build-cmake-0.5.0/examples/swig-project/CMakeLists.txt       
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/swig-project/CMakeLists.txt       
2026-08-22 13:02:06.000000000 +0200
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.18...4.0)
-project(swig-project VERSION 0.5.0)
+project(swig-project VERSION 0.5.1)
 set(PY_VERSION_SUFFIX "")
 set(PY_FULL_VERSION ${PROJECT_VERSION}${PY_VERSION_SUFFIX})
 
@@ -13,10 +13,10 @@
 
 # Find Python
 if (CMAKE_CROSSCOMPILING AND NOT (APPLE AND "$ENV{CIBUILDWHEEL}" STREQUAL "1"))
-    find_package(Python 3.7 REQUIRED COMPONENTS Development.Module
+    find_package(Python 3.8 REQUIRED COMPONENTS Development.Module
                                      OPTIONAL_COMPONENTS 
Development.SABIModule)
 else()
-    find_package(Python 3.7 REQUIRED COMPONENTS Interpreter Development.Module
+    find_package(Python 3.8 REQUIRED COMPONENTS Interpreter Development.Module
                                      OPTIONAL_COMPONENTS 
Development.SABIModule)
 endif()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/swig-project/cross-compile-linux.sh 
new/py-build-cmake-0.5.1/examples/swig-project/cross-compile-linux.sh
--- old/py-build-cmake-0.5.0/examples/swig-project/cross-compile-linux.sh       
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/swig-project/cross-compile-linux.sh       
2026-08-22 13:02:06.000000000 +0200
@@ -25,9 +25,9 @@
 
 # Select the architectures and Python versions to build for.
 triples=(x86_64-bionic-linux-gnu armv6-rpi-linux-gnueabihf 
armv7-neon-linux-gnueabihf aarch64-rpi3-linux-gnu)
-python_versions=("python3.7" "python3.8" "python3.9" "python3.10" "python3.11" 
"python3.12" "python3.13" "python3.14")
+python_versions=("python3.8" "python3.9" "python3.10" "python3.11" 
"python3.12" "python3.13" "python3.14")
 pypy_triples=(x86_64-bionic-linux-gnu aarch64-rpi3-linux-gnu)
-pypy_versions=("pypy3.7-v7.3" "pypy3.8-v7.3" "pypy3.9-v7.3" "pypy3.10-v7.3" 
"pypy3.11-v7.3")
+pypy_versions=("pypy3.8-v7.3" "pypy3.9-v7.3" "pypy3.10-v7.3" "pypy3.11-v7.3")
 
 # Ensure that the necessary toolchains are available.
 toolchain_folder="$PWD/../../toolchains"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/swig-project/pyproject.toml 
new/py-build-cmake-0.5.1/examples/swig-project/pyproject.toml
--- old/py-build-cmake-0.5.0/examples/swig-project/pyproject.toml       
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/swig-project/pyproject.toml       
2026-08-22 13:02:06.000000000 +0200
@@ -1,7 +1,7 @@
 [project]
 name = "swig-project" # Name on PyPI
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -9,13 +9,13 @@
 classifiers = [
     "Development Status :: 3 - Alpha",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "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",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -32,7 +32,7 @@
 
 [build-system]
 requires = [
-    "py-build-cmake~=0.5.0",
+    "py-build-cmake~=0.5.1",
     "swig~=4.3.1",                # https://github.com/nightlark/swig-pypi
 ]
 build-backend = "py_build_cmake.build"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/swig-project/src/swig_project/__init__.py 
new/py-build-cmake-0.5.1/examples/swig-project/src/swig_project/__init__.py
--- old/py-build-cmake-0.5.0/examples/swig-project/src/swig_project/__init__.py 
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/swig-project/src/swig_project/__init__.py 
2026-08-22 13:02:06.000000000 +0200
@@ -1,3 +1,3 @@
 """Example project using the py-build-cmake build backend and SWIG."""
 
-__version__ = "0.5.0"
+__version__ = "0.5.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/examples/swig-project/tests/test_add_module.py 
new/py-build-cmake-0.5.1/examples/swig-project/tests/test_add_module.py
--- old/py-build-cmake-0.5.0/examples/swig-project/tests/test_add_module.py     
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/examples/swig-project/tests/test_add_module.py     
2026-08-22 13:02:06.000000000 +0200
@@ -9,9 +9,6 @@
 
 def test_version():
     assert py_version == cpp_version
-    try:  # No importlib in Python 3.7 and below
-        from importlib.metadata import version
+    from importlib.metadata import version  # noqa: PLC0415
 
-        assert py_version == version("swig_project")
-    except ImportError:
-        pass
+    assert py_version == version("swig_project")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/noxfile.py 
new/py-build-cmake-0.5.1/noxfile.py
--- old/py-build-cmake-0.5.0/noxfile.py 2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/noxfile.py 2026-08-22 13:02:06.000000000 +0200
@@ -14,6 +14,7 @@
 
 from __future__ import annotations
 
+import contextlib
 import hashlib
 import os
 import platform
@@ -21,22 +22,17 @@
 import shutil
 import sys
 import sysconfig
+import sysconfig as dist_sysconfig
 from difflib import unified_diff
 from pathlib import Path
+from sysconfig import get_platform as sysconfig_get_platform
 from tarfile import open as open_tar
 from zipfile import ZipFile
 
 import jinja2
 import nox
 
-if sys.version_info < (3, 8):
-    import distutils.sysconfig as dist_sysconfig
-    from distutils.util import get_platform as sysconfig_get_platform
-else:
-    import sysconfig as dist_sysconfig
-    from sysconfig import get_platform as sysconfig_get_platform
-
-version = "0.5.0"
+version = "0.5.1"
 project_dir = Path(__file__).resolve().parent
 
 examples = "minimal-program", "pybind11-project", "nanobind-project"
@@ -70,6 +66,10 @@
             "implementation": sys.implementation,
             "platform": sys.platform,
         },
+        "have_stubgen": (
+            sys.implementation.name != "pypy"
+            and not sysconfig.get_config_var("Py_GIL_DISABLED")
+        ),
     }
 
 
@@ -109,6 +109,11 @@
     whl_expect = sorted(filter(bool, whl_expect))
     with ZipFile(whl) as z:
         whl_actual = sorted(z.namelist())
+        # TODO: stubgen sometimes generates this file (e.g. on macos-15-intel
+        #       with Python 3.13), even though it shouldn't do this for
+        #       namespace packages. For now, just ignore it.
+        with contextlib.suppress(ValueError):
+            whl_actual.remove("namespace_project/__init__.pyi")
     if whl_expect != whl_actual:
         diff = "\n".join(unified_diff(whl_expect, whl_actual))
         session.error("Wheel contents mismatch:\n" + diff)
@@ -133,24 +138,22 @@
     py_v = sys.version_info
     ext_suffix = dist_sysconfig.get_config_var("EXT_SUFFIX")
     assert isinstance(ext_suffix, str)
-    simple = name in ["minimal", "bare-c-module"]
     free_threading = bool(sysconfig.get_config_var("Py_GIL_DISABLED"))
-    if simple and ext_suffix.endswith(".pyd") and py_v < (3, 8):
-        ext_suffix = ".pyd"  # what a mess ...
-    elif name == "nanobind-project":
-        if py_v < (3, 8):
-            ext_suffix = None  # skip
-        elif impl.name == "cpython" and py_v >= (3, 12) and not free_threading:
+    abi3_multiarch = ""
+    if py_v >= (3, 15) and impl.name == "cpython":
+        abi3_multiarch = "-" + sysconfig.get_config_var("MULTIARCH")
+    if name == "nanobind-project":
+        if impl.name == "cpython" and py_v >= (3, 12) and not free_threading:
             ext_suffix = "." + ext_suffix.rsplit(".", 1)[-1]
             if sys.platform != "win32":
-                ext_suffix = ".abi3" + ext_suffix
+                ext_suffix = ".abi3" + abi3_multiarch + ext_suffix
     elif name == "swig-project":
         if sys.platform == "win32" and free_threading:
             ext_suffix = None  # skip
-        if impl.name == "cpython" and py_v >= (3, 7) and not free_threading:
+        if impl.name == "cpython" and not free_threading:
             ext_suffix = "." + ext_suffix.rsplit(".", 1)[-1]
             if sys.platform != "win32":
-                ext_suffix = ".abi3" + ext_suffix
+                ext_suffix = ".abi3" + abi3_multiarch + ext_suffix
     return ext_suffix
 
 
@@ -163,7 +166,12 @@
         dist_dir = "dist"
     session.env["PIP_FIND_LINKS"] = str(Path(dist_dir).resolve())
     session.install(f"py-build-cmake=={version}")
-    for name in "find-python", "find-python-4":
+    if sysconfig.get_config_var("Py_GIL_DISABLED"):
+        # old CMake policies don't support free-threading builds
+        tests = ("find-python-4",)
+    else:
+        tests = "find-python", "find-python-4"
+    for name in tests:
         with session.chdir(f"test-packages/{name}"):
             shutil.rmtree(".py-build-cmake_cache", ignore_errors=True)
             shutil.rmtree("dist-nox", ignore_errors=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/pyproject.toml 
new/py-build-cmake-0.5.1/pyproject.toml
--- old/py-build-cmake-0.5.0/pyproject.toml     2025-08-14 23:04:51.000000000 
+0200
+++ new/py-build-cmake-0.5.1/pyproject.toml     2026-08-22 13:02:06.000000000 
+0200
@@ -12,7 +12,7 @@
 [project]
 name = "py-build-cmake"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -22,13 +22,13 @@
     "Topic :: System :: Archiving :: Packaging",
     "Topic :: System :: Software Distribution",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "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",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -108,7 +108,7 @@
 ]
 
 [tool.ruff.lint.per-file-ignores]
-"noxfile.py" = ["T20"]                                # Removes print 
statements
+"noxfile.py" = ["T20", "PT"]                          # Removes print 
statements, not a pytest file
 "**/tests/**" = ["T20"]
 "examples/**" = ["T20"]
 "scripts/**" = ["T20"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/src/py_build_cmake/__init__.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/__init__.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/__init__.py     2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/__init__.py     2026-08-22 
13:02:06.000000000 +0200
@@ -3,4 +3,4 @@
 extensions built using CMake.
 """
 
-__version__ = "0.5.0"
+__version__ = "0.5.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/src/py_build_cmake/build.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/build.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/build.py        2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/build.py        2026-08-22 
13:02:06.000000000 +0200
@@ -523,7 +523,7 @@
         make_program: Path | None = None
         if generator is not None and "ninja" in generator.lower():
             with contextlib.suppress(ImportError):
-                import ninja  # type: ignore[import-not-found]
+                import ninja  # type: ignore[import-not-found] # noqa: PLC0415
 
                 make_program = Path(ninja.BIN_DIR) / "ninja"
                 if plat.system == "Windows":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-build-cmake-0.5.0/src/py_build_cmake/cli.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/cli.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/cli.py  2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/cli.py  2026-08-22 
13:02:06.000000000 +0200
@@ -5,13 +5,16 @@
 import click
 
 from . import __version__
+from .build import _BuildBackend as backend
+from .commands.cmd_runner import CommandRunner
 from .common.platform import determine_build_platform_info
+from .config.options.config_path import ConfPath
+from .config.options.config_reference import ConfigReference
+from .config.options.pyproject_options import get_component_options, 
get_options
 
 
 def cmake_command(directory, build_path, verbose, dry, cross, local, override):
     def get_cmaker(index: int):
-        from .build import _BuildBackend as backend
-        from .commands.cmd_runner import CommandRunner
 
         src_dir = Path(directory or ".").resolve()
         config_settings = {
@@ -233,14 +236,10 @@
     "--component", is_flag=True, help="Documentation for the build_component 
backend."
 )
 def format(md, component):
-    from .config.options.config_path import ConfPath
-    from .config.options.config_reference import ConfigReference
-    from .config.options.pyproject_options import get_component_options, 
get_options
-
     if md:
-        from .help import help_print_md as help_print
+        from .help import help_print_md as help_print  # noqa: PLC0415
     else:
-        from .help import help_print
+        from .help import help_print  # noqa: PLC0415
     help_pth = ConfPath.from_string("pyproject.toml/tool/py-build-cmake")
     pr_md = print if md else (lambda *args, **kwargs: None)
     pr_tx = (lambda *args, **kwargs: None) if md else print
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/commands/cmake.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/commands/cmake.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/commands/cmake.py       
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/commands/cmake.py       
2026-08-22 13:02:06.000000000 +0200
@@ -222,7 +222,14 @@
         cmake_version = self.cmake_settings.minimum_required
         has_t_flag = NormalizedVersion("3.30") <= 
NormalizedVersion(cmake_version)
         dmu = "dmut" if has_t_flag else "dmu"
-        return ";".join("ON" if c in self.plat.python_abiflags else "OFF" for 
c in dmu)
+        flags = self.plat.python_abiflags
+        if "t" in flags and not has_t_flag:
+            msg = "CMake version %s does not support the free-threaded ABI, 
but "
+            msg += "the current interpreter requires it. You should upgrade to 
"
+            msg += "CMake 3.30 or later, and upgrade the CMake minimum 
required "
+            msg += "version or policies in your CMakeLists.txt file 
accordingly."
+            logger.warning(msg, cmake_version)
+        return tuple("ON" if c in flags else "OFF" for c in dmu)
 
     def get_native_python_implementation(self) -> str | None:
         return {
@@ -288,8 +295,11 @@
                 yield Option(prefix + "_SOSABI", "")
             else:
                 yield Option(prefix + "_SOSABI", "abi3")
-        # TODO: FIND_ABI seems to confuse CMake
-        # yield Option(prefix + "_FIND_ABI", 
self.get_native_python_abi_tuple())
+        # TODO: FIND_ABI seems to confuse CMake on older versions, so only set
+        #       it if we need to enable the free-threaded ABI
+        abi = self.get_native_python_abi_tuple()
+        if len(abi) == 4 and abi[-1] == "ON":
+            yield Option(prefix + "_FIND_ABI", ";".join(abi))
 
     def get_cross_python_hints(self, prefix: str) -> Generator[Option]:
         """FindPython hints and artifacts to set when cross-compiling."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/commands/cmd_runner.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/commands/cmd_runner.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/commands/cmd_runner.py  
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/commands/cmd_runner.py  
2026-08-22 13:02:06.000000000 +0200
@@ -3,6 +3,7 @@
 import re
 import sys
 from pprint import pprint
+from shlex import join
 from subprocess import CalledProcessError
 from subprocess import run as sp_run
 
@@ -28,8 +29,6 @@
             pprint(log_kwargs, width=200)
             print(flush=True)
         elif self.dry:
-            from shlex import join
-
             print(join(args[0]))
         if not self.dry:
             return sp_run(*args, **kwargs)  # noqa: PLW1510
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/common/__init__.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/common/__init__.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/common/__init__.py      
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/common/__init__.py      
2026-08-22 13:02:06.000000000 +0200
@@ -151,7 +151,7 @@
 
     @property
     def norm_name(self):
-        from .util import normalize_name_wheel
+        from .util import normalize_name_wheel  # noqa: PLC0415
 
         return normalize_name_wheel(self.package_name)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/common/platform.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/common/platform.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/common/platform.py      
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/common/platform.py      
2026-08-22 13:02:06.000000000 +0200
@@ -8,7 +8,7 @@
 import sysconfig
 from dataclasses import dataclass, field
 from pathlib import Path
-from typing import Dict, List, Mapping, cast
+from typing import Dict, List, Literal, Mapping, cast
 
 import packaging.tags
 
@@ -28,14 +28,9 @@
 
 logger = logging.getLogger(__name__)
 
-if sys.version_info < (3, 8):
-    OSIdentifier = str
-    WheelTags = Dict[str, List[str]]
-else:
-    from typing import Literal
 
-    OSIdentifier = Literal["linux", "windows", "mac", "pyodide"]
-    WheelTags = Dict[Literal["pyver", "abi", "arch"], List[str]]
+OSIdentifier = Literal["linux", "windows", "mac", "pyodide"]
+WheelTags = Dict[Literal["pyver", "abi", "arch"], List[str]]
 
 
 def _get_python_prefixes():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/config/dynamic.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/config/dynamic.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/config/dynamic.py       
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/config/dynamic.py       
2026-08-22 13:02:06.000000000 +0200
@@ -38,6 +38,7 @@
 import logging
 import sys
 from contextlib import contextmanager
+from importlib.util import module_from_spec, spec_from_file_location
 from pathlib import Path
 
 import distlib.version  # type: ignore[import-untyped]
@@ -84,12 +85,8 @@
             for target in child.targets
         ):
             v_node = child.value
-            if sys.version_info >= (3, 8):
-                if isinstance(v_node, ast.Constant) and 
isinstance(v_node.value, str):
-                    version = v_node.value
-                    break
-            elif isinstance(v_node, ast.Str):
-                version = v_node.s
+            if isinstance(v_node, ast.Constant) and isinstance(v_node.value, 
str):
+                version = v_node.value
                 break
     return ast.get_docstring(node), version
 
@@ -110,7 +107,6 @@
     _import_i += 1
 
     logger.debug("Loading module %s", mod_filename)
-    from importlib.util import module_from_spec, spec_from_file_location
 
     mod_name = f"py_build_cmake.dummy.import{_import_i}"
     spec = spec_from_file_location(mod_name, mod_filename)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/config/load.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/config/load.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/config/load.py  2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/config/load.py  2026-08-22 
13:02:06.000000000 +0200
@@ -3,11 +3,10 @@
 import contextlib
 import logging
 import os
-import pprint
-import sys
 from copy import copy
 from dataclasses import fields
 from pathlib import Path, PurePosixPath
+from pprint import pp
 from typing import Any, Dict, Optional, cast
 
 import pyproject_metadata
@@ -42,11 +41,6 @@
 
 logger = logging.getLogger(__name__)
 
-if sys.version_info < (3, 8):
-    pp = pprint.pprint
-else:
-    pp = pprint.pp
-
 
 def read_full_config(
     plat: BuildPlatformInfo,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/config/options/config_option.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/config/options/config_option.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/config/options/config_option.py 
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/config/options/config_option.py 
2026-08-22 13:02:06.000000000 +0200
@@ -206,8 +206,8 @@
         return vals
 
     def finalize(self, values: ValueReference) -> Any:
-        from .config_reference import ConfigReference
-        from .override import ConfigOverrider
+        from .config_reference import ConfigReference  # noqa: PLC0415
+        from .override import ConfigOverrider  # noqa: PLC0415
 
         if values.is_value_set(self.default_index):
             # Our own option as a "single" ConfigOption
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/config/quirks/__init__.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/config/quirks/__init__.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/config/quirks/__init__.py       
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/config/quirks/__init__.py       
2026-08-22 13:02:06.000000000 +0200
@@ -13,10 +13,21 @@
 
 
 def config_quirks_pypy(plat: BuildPlatformInfo, config: ValueReference):
-    if plat.python_version_info < (3, 8):
-        with contextlib.suppress(KeyError):
-            del config.values["stubgen"]
-            logger.info("Mypy is not supported on PyPy <3.8, disabling 
stubgen")
+    with contextlib.suppress(KeyError):
+        del config.values["stubgen"]
+        msg = "ast-serialize and librt (mypy dependencies) do not support "
+        msg += "PyPy (https://github.com/python/mypy/issues/21460), "
+        msg += "disabling stubgen"
+        logger.info(msg)
+
+
+def config_quirks_free_threaded(plat: BuildPlatformInfo, config: 
ValueReference):
+    with contextlib.suppress(KeyError):
+        del config.values["stubgen"]
+        msg = "ast-serialize and librt (mypy dependencies) do not support the "
+        msg += "free-threaded ABI 
(https://github.com/python/mypy/issues/21460), "
+        msg += "disabling stubgen"
+        logger.info(msg)
 
 
 def config_quirks(plat: BuildPlatformInfo, config: ValueReference):
@@ -32,3 +43,6 @@
     }.get(plat.implementation)
     if dispatch is not None:
         dispatch(plat, config)
+    if "t" in plat.python_abiflags:
+        # TODO: how best to check on Windows?
+        config_quirks_free_threaded(plat, config)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/export/editable/wrapper.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/export/editable/wrapper.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/export/editable/wrapper.py      
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/export/editable/wrapper.py      
2026-08-22 13:02:06.000000000 +0200
@@ -38,7 +38,9 @@
         _spec.loader.exec_module(_mod)
         # After importing, add its symbols to our global scope
         _vars = _mod.__dict__.copy()
-        for _k in ['{"','".join(special_dunders)}']: _vars.pop(_k)
+        for _k in ['{"','".join(special_dunders)}']:
+            try: _vars.pop(_k)
+            except KeyError: pass
         globals().update(_vars)
         # Clean up
         del _k, _spec, _mod, _vars, _util
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/export/native_tags.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/export/native_tags.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/export/native_tags.py   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/export/native_tags.py   
2026-08-22 13:02:06.000000000 +0200
@@ -52,10 +52,6 @@
         debug = "d"
     if py_version >= (3, 13) and sysconfig.get_config_var("Py_GIL_DISABLED"):
         threading = "t"
-    if py_version < (3, 8):
-        with_pymalloc = sysconfig.get_config_var("WITH_PYMALLOC")
-        if with_pymalloc or with_pymalloc is None:
-            pymalloc = "m"
     return f"{threading}{debug}{pymalloc}"  # tdm
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/src/py_build_cmake/export/wheel.py 
new/py-build-cmake-0.5.1/src/py_build_cmake/export/wheel.py
--- old/py-build-cmake-0.5.0/src/py_build_cmake/export/wheel.py 2025-08-14 
23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/src/py_build_cmake/export/wheel.py 2026-08-22 
13:02:06.000000000 +0200
@@ -1,4 +1,3 @@
-# ruff: noqa: PLR0912, PLR0915, RUF015, UP031, PTH112, B007, PTH118, PTH123, 
PLW2901
 # This code was largely copied from distlib to work around
 # https://github.com/pypa/distlib/issues/246, and it does not comply with the
 # ruff warnings used throughout py-build-cmake, so we ignore the entire file 
for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/bare-c-module/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/bare-c-module/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/bare-c-module/pyproject.toml 
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/bare-c-module/pyproject.toml 
2026-08-22 13:02:06.000000000 +0200
@@ -1,9 +1,9 @@
 [project]
 name = "bare-c-module"
-version = "0.5.0"
+version = "0.5.1"
 description = "Single extension module, without any folders or __init__.py"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -11,13 +11,13 @@
 classifiers = [
     "Development Status :: 3 - Alpha",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "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",
     "Operating System :: POSIX :: Linux",
     "Operating System :: Microsoft :: Windows",
     "Operating System :: MacOS",
@@ -26,7 +26,7 @@
 dependencies = []
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.module]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/cmake-options/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/cmake-options/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/cmake-options/pyproject.toml 
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/cmake-options/pyproject.toml 
2026-08-22 13:02:06.000000000 +0200
@@ -1,9 +1,9 @@
 [project]
 name = "cmake-options"
-version = "0.5.0"
+version = "0.5.1"
 description = "Checks parsing and escaping of CMake options"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -13,7 +13,7 @@
 dependencies = []
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.sdist]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/cmake-options/tests/test_placeholder.py 
new/py-build-cmake-0.5.1/test-packages/cmake-options/tests/test_placeholder.py
--- 
old/py-build-cmake-0.5.0/test-packages/cmake-options/tests/test_placeholder.py  
    2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/test-packages/cmake-options/tests/test_placeholder.py  
    2026-08-22 13:02:06.000000000 +0200
@@ -1,2 +1,2 @@
 def test_placeholder():
-    import cmake_options  # noqa: F401
+    import cmake_options  # noqa: F401, PLC0415
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/cmake-preset/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/cmake-preset/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/cmake-preset/pyproject.toml  
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/cmake-preset/pyproject.toml  
2026-08-22 13:02:06.000000000 +0200
@@ -1,15 +1,15 @@
 [project]
 name = "cmake-preset"
-version = "0.5.0"
+version = "0.5.1"
 description = "Test the use of CMake presets"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.module]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/empty-config/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/empty-config/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/empty-config/pyproject.toml  
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/empty-config/pyproject.toml  
2026-08-22 13:02:06.000000000 +0200
@@ -1,12 +1,12 @@
 [project]
 name = "empty-config"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
 dynamic = ["version", "description"]
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/empty-config/src/empty_config/__init__.py
 
new/py-build-cmake-0.5.1/test-packages/empty-config/src/empty_config/__init__.py
--- 
old/py-build-cmake-0.5.0/test-packages/empty-config/src/empty_config/__init__.py
    2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/test-packages/empty-config/src/empty_config/__init__.py
    2026-08-22 13:02:06.000000000 +0200
@@ -2,7 +2,7 @@
 Empty config
 """
 
-__version__ = "0.5.0"
+__version__ = "0.5.1"
 
 
 def add(a, b):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/find-python/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/find-python/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/find-python/pyproject.toml   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/find-python/pyproject.toml   
2026-08-22 13:02:06.000000000 +0200
@@ -1,12 +1,12 @@
 [project]
 name = "find-python"
-version = "0.5.0"
+version = "0.5.1"
 description = "Test for CMake FindPython"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.module]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/find-python-4/cross-compile-linux.sh 
new/py-build-cmake-0.5.1/test-packages/find-python-4/cross-compile-linux.sh
--- old/py-build-cmake-0.5.0/test-packages/find-python-4/cross-compile-linux.sh 
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/find-python-4/cross-compile-linux.sh 
2026-08-22 13:02:06.000000000 +0200
@@ -25,9 +25,9 @@
 
 # Select the architectures and Python versions to build for.
 triples=(x86_64-bionic-linux-gnu armv6-rpi-linux-gnueabihf 
armv7-neon-linux-gnueabihf aarch64-rpi3-linux-gnu)
-python_versions=("python3.7" "python3.8" "python3.9" "python3.10" "python3.11" 
"python3.12" "python3.13" "python3.14")
+python_versions=("python3.8" "python3.9" "python3.10" "python3.11" 
"python3.12" "python3.13" "python3.14")
 pypy_triples=(x86_64-bionic-linux-gnu aarch64-rpi3-linux-gnu)
-pypy_versions=("pypy3.7-v7.3" "pypy3.8-v7.3" "pypy3.9-v7.3" "pypy3.10-v7.3" 
"pypy3.11-v7.3")
+pypy_versions=("pypy3.8-v7.3" "pypy3.9-v7.3" "pypy3.10-v7.3" "pypy3.11-v7.3")
 
 # Ensure that the necessary toolchains are available.
 toolchain_folder="$PWD/../../toolchains"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/find-python-4/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/find-python-4/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/find-python-4/pyproject.toml 
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/find-python-4/pyproject.toml 
2026-08-22 13:02:06.000000000 +0200
@@ -1,12 +1,12 @@
 [project]
 name = "find-python-4"
-version = "0.5.0"
+version = "0.5.1"
 description = "Test for CMake FindPython"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.module]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/local-options/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/local-options/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/local-options/pyproject.toml 
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/local-options/pyproject.toml 
2026-08-22 13:02:06.000000000 +0200
@@ -1,9 +1,9 @@
 [project]
 name = "local-options"
-version = "0.5.0"
+version = "0.5.1"
 description = "Checks loading of local override files"
 readme = "README.md"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -13,7 +13,7 @@
 dependencies = []
 
 [build-system]
-requires = ["py-build-cmake~=0.5.0"]
+requires = ["py-build-cmake~=0.5.1"]
 build-backend = "py_build_cmake.build"
 
 [tool.py-build-cmake.sdist]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/local-options/tests/test_placeholder.py 
new/py-build-cmake-0.5.1/test-packages/local-options/tests/test_placeholder.py
--- 
old/py-build-cmake-0.5.0/test-packages/local-options/tests/test_placeholder.py  
    2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/test-packages/local-options/tests/test_placeholder.py  
    2026-08-22 13:02:06.000000000 +0200
@@ -1,2 +1,2 @@
 def test_placeholder():
-    import local_options  # noqa: F401
+    import local_options  # noqa: F401, PLC0415
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/namespace-project-a/CMakeLists.txt 
new/py-build-cmake-0.5.1/test-packages/namespace-project-a/CMakeLists.txt
--- old/py-build-cmake-0.5.0/test-packages/namespace-project-a/CMakeLists.txt   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/namespace-project-a/CMakeLists.txt   
2026-08-22 13:02:06.000000000 +0200
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.18...4.0)
-project(pybind11-project VERSION 0.5.0)
+project(pybind11-project VERSION 0.5.1)
 set(PY_VERSION_SUFFIX "")
 set(PY_FULL_VERSION ${PROJECT_VERSION}${PY_VERSION_SUFFIX})
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/namespace-project-a/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/namespace-project-a/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/namespace-project-a/pyproject.toml   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/namespace-project-a/pyproject.toml   
2026-08-22 13:02:06.000000000 +0200
@@ -1,9 +1,9 @@
 [project]
 name = "namespace-project-a" # Name on PyPI
-version = "0.5.0"
+version = "0.5.1"
 readme = "README.md"
 description = "Part A of a namespace package"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -14,7 +14,7 @@
 
 [build-system]
 requires = [
-    "py-build-cmake~=0.5.0",
+    "py-build-cmake~=0.5.1",
     "pybind11>=2.13.6,<4",
     "pybind11-stubgen~=2.5.4",
 ]
@@ -40,7 +40,7 @@
 install_components = ["python_modules", "python_stubs"]
 
 [tool.py-build-cmake.stubgen]
-packages = ["namespace_project.add_module"]
+modules = ["namespace_project.add_module"]
 
 [tool.pytest.ini_options]
 testpaths = ["tests"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/namespace-project-a/tests/test_add_module.py
 
new/py-build-cmake-0.5.1/test-packages/namespace-project-a/tests/test_add_module.py
--- 
old/py-build-cmake-0.5.0/test-packages/namespace-project-a/tests/test_add_module.py
 2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/test-packages/namespace-project-a/tests/test_add_module.py
 2026-08-22 13:02:06.000000000 +0200
@@ -1,6 +1,3 @@
-import sys
-
-import pytest
 from namespace_project.add_module import __version__, add
 
 
@@ -8,11 +5,7 @@
     assert add(1, 2) == 3
 
 
[email protected](
-    sys.version_info < (3, 8),
-    reason="No importlib.metadata.version support on older versions of Python",
-)
 def test_version():
-    from importlib.metadata import version
+    from importlib.metadata import version  # noqa: PLC0415
 
     assert __version__ == version("namespace_project_a")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/test-packages/namespace-project-b/pyproject.toml 
new/py-build-cmake-0.5.1/test-packages/namespace-project-b/pyproject.toml
--- old/py-build-cmake-0.5.0/test-packages/namespace-project-b/pyproject.toml   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/test-packages/namespace-project-b/pyproject.toml   
2026-08-22 13:02:06.000000000 +0200
@@ -1,9 +1,9 @@
 [project]
 name = "namespace-project-b" # Name on PyPI
-version = "0.5.0"
+version = "0.5.1"
 readme = "README.md"
 description = "Part B of a namespace package"
-requires-python = ">=3.7"
+requires-python = ">=3.8"
 license = "MIT"
 license-files = ["LICENSE"]
 authors = [{ "name" = "Pieter P", "email" = "[email protected]" }]
@@ -14,7 +14,7 @@
 
 [build-system]
 requires = [
-    "py-build-cmake~=0.5.0",
+    "py-build-cmake~=0.5.1",
 ]
 build-backend = "py_build_cmake.build"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/tests/expected_contents/minimal/whl.txt 
new/py-build-cmake-0.5.1/tests/expected_contents/minimal/whl.txt
--- old/py-build-cmake-0.5.0/tests/expected_contents/minimal/whl.txt    
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/tests/expected_contents/minimal/whl.txt    
2026-08-22 13:02:06.000000000 +0200
@@ -8,7 +8,7 @@
 minimal/_add_module.pyi
 minimal/add_module.py
 minimal/py.typed
-{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
+{% if have_stubgen %}
 minimal/__init__.pyi
 minimal/add_module.pyi
 {% endif %}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/tests/expected_contents/minimal-comp/whl.txt 
new/py-build-cmake-0.5.1/tests/expected_contents/minimal-comp/whl.txt
--- old/py-build-cmake-0.5.0/tests/expected_contents/minimal-comp/whl.txt       
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/tests/expected_contents/minimal-comp/whl.txt       
2026-08-22 13:02:06.000000000 +0200
@@ -8,7 +8,7 @@
 minimal_comp/_add_module.pyi
 minimal_comp/add_module.py
 minimal_comp/py.typed
-{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
+{% if have_stubgen %}
 minimal_comp/__init__.pyi
 minimal_comp/add_module.pyi
 {% endif %}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/tests/expected_contents/namespace-project-a/whl.txt 
new/py-build-cmake-0.5.1/tests/expected_contents/namespace-project-a/whl.txt
--- 
old/py-build-cmake-0.5.0/tests/expected_contents/namespace-project-a/whl.txt    
    2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/tests/expected_contents/namespace-project-a/whl.txt    
    2026-08-22 13:02:06.000000000 +0200
@@ -7,6 +7,6 @@
 namespace_project/_add_module.pyi
 namespace_project/add_module.py
 namespace_project/py.typed
-{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
+{% if have_stubgen %}
 namespace_project/add_module.pyi
 {% endif %}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/tests/expected_contents/namespace-project-b/whl.txt 
new/py-build-cmake-0.5.1/tests/expected_contents/namespace-project-b/whl.txt
--- 
old/py-build-cmake-0.5.0/tests/expected_contents/namespace-project-b/whl.txt    
    2025-08-14 23:04:51.000000000 +0200
+++ 
new/py-build-cmake-0.5.1/tests/expected_contents/namespace-project-b/whl.txt    
    2026-08-22 13:02:06.000000000 +0200
@@ -5,6 +5,6 @@
 namespace_project_b-{{version}}.dist-info/entry_points.txt
 namespace_project/sub_module.py
 namespace_project/py.typed
-{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
+{% if have_stubgen %}
 namespace_project/sub_module.pyi
 {% endif %}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/tests/expected_contents/nanobind-project/whl.txt 
new/py-build-cmake-0.5.1/tests/expected_contents/nanobind-project/whl.txt
--- old/py-build-cmake-0.5.0/tests/expected_contents/nanobind-project/whl.txt   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/tests/expected_contents/nanobind-project/whl.txt   
2026-08-22 13:02:06.000000000 +0200
@@ -12,7 +12,7 @@
 nanobind_project/add_module.py
 nanobind_project/py.typed
 nanobind_project/sub_package/__init__.py
-{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
+{% if have_stubgen %}
 nanobind_project/__init__.pyi
 nanobind_project/add.pyi
 nanobind_project/add_module.pyi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-build-cmake-0.5.0/tests/expected_contents/pybind11-project/whl.txt 
new/py-build-cmake-0.5.1/tests/expected_contents/pybind11-project/whl.txt
--- old/py-build-cmake-0.5.0/tests/expected_contents/pybind11-project/whl.txt   
2025-08-14 23:04:51.000000000 +0200
+++ new/py-build-cmake-0.5.1/tests/expected_contents/pybind11-project/whl.txt   
2026-08-22 13:02:06.000000000 +0200
@@ -12,7 +12,7 @@
 pybind11_project/add_module.py
 pybind11_project/py.typed
 pybind11_project/sub_package/__init__.py
-{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
+{% if have_stubgen %}
 pybind11_project/__init__.pyi
 pybind11_project/add.pyi
 pybind11_project/add_module.pyi

Reply via email to