From 2cdadb977da6b483dbffe9a8cc8dfaeac87b0230 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 08:29:11 +0000 Subject: [PATCH 1/2] chore(pins): follow CPython 3.14.7 Both builds read their input from the same python.org release directory, so one bump moves the source tarball and the official Android package together. The dependency set is re-read from the new source's Android/android.py rather than carried over: its versions are CPython's choice, not this project's. The API floor is not touched here. It is measured, and the api-level workflow re-measures it because config/ changed. --- ci-targets.yaml | 4 ++-- ...hon-3.14.6.lock.json => cpython-3.14.7.lock.json} | 12 ++++++------ config/source/dependency-recipes.lock.json | 2 +- ...> cpython-3.14.7-aarch64-linux-android.lock.json} | 10 +++++----- 4 files changed, 14 insertions(+), 14 deletions(-) rename config/source/{cpython-3.14.6.lock.json => cpython-3.14.7.lock.json} (77%) rename config/upstream/{cpython-3.14.6-aarch64-linux-android.lock.json => cpython-3.14.7-aarch64-linux-android.lock.json} (73%) diff --git a/ci-targets.yaml b/ci-targets.yaml index c056f59..3e3e543 100644 --- a/ci-targets.yaml +++ b/ci-targets.yaml @@ -29,7 +29,7 @@ android: # Built from CPython source together with all six pinned dependency # recipes, so the build controls its own OpenSSL and time zone defaults. producer: cpython-source - input_lock: config/source/cpython-3.14.6.lock.json + input_lock: config/source/cpython-3.14.7.lock.json android_api: level: 34 @@ -59,7 +59,7 @@ android: # The official Python.org Android package, re-assembled. CPython and # native dependency bytes are exactly the official ones. producer: upstream-prebuilt - input_lock: config/upstream/cpython-3.14.6-aarch64-linux-android.lock.json + input_lock: config/upstream/cpython-3.14.7-aarch64-linux-android.lock.json android_api: level: 24 diff --git a/config/source/cpython-3.14.6.lock.json b/config/source/cpython-3.14.7.lock.json similarity index 77% rename from config/source/cpython-3.14.6.lock.json rename to config/source/cpython-3.14.7.lock.json index 1b6277f..5b067bd 100644 --- a/config/source/cpython-3.14.6.lock.json +++ b/config/source/cpython-3.14.7.lock.json @@ -12,20 +12,20 @@ }, "python": { "implementation": "cpython", - "version": "3.14.6", + "version": "3.14.7", "major_minor": "3.14" }, "source_archive": { - "filename": "Python-3.14.6.tar.xz", - "url": "https://www.python.org/ftp/python/3.14.6/Python-3.14.6.tar.xz", - "size_bytes": 23921184, - "sha256": "143b1dddefaec3bd2e21e3b839b34a2b7fb9842272883c576420d605e9f30c63" + "filename": "Python-3.14.7.tar.xz", + "url": "https://www.python.org/ftp/python/3.14.7/Python-3.14.7.tar.xz", + "size_bytes": 24053924, + "sha256": "3b48dac8fb59f62eaa67ac83c1eb12bda1b7a08406dd286e252c11a66be27f81" }, "build_flow": { "driver": "Android/android.py", "dependency_lock": "config/source/dependency-recipes.lock.json", "dependency_producer": "beeware/cpython-android-source-deps", - "dependency_binding": "the exact release assets pinned by CPython 3.14.6 Android/unpack_deps" + "dependency_binding": "the exact release assets pinned by CPython 3.14.7 Android/unpack_deps" }, "runtime_data_defaults": { "openssldir": "/data/data/com.termux/files/usr/etc/tls", diff --git a/config/source/dependency-recipes.lock.json b/config/source/dependency-recipes.lock.json index 6e7556d..57f66ad 100644 --- a/config/source/dependency-recipes.lock.json +++ b/config/source/dependency-recipes.lock.json @@ -97,7 +97,7 @@ } ], "verification": { - "versions_match_upstream": "every version and build number here is the one CPython 3.14.6's Android/android.py unpack_deps names, so the source build produces the dependency set the interpreter expects", + "versions_match_upstream": "every version and build number here is the one CPython 3.14.7's Android/android.py unpack_deps names, so the source build produces the dependency set the interpreter expects", "recipe_downloads_are_unverified": "the upstream recipes fetch their sources with wget and no checksum; the build pre-populates each recipe's download directory with the verified file above so the recipe finds it already present", "api_level_is_checked_per_object": "the NDK stamps .note.android.ident into every executable and shared object; the build fails if any of them reports an API level other than the one requested", "compiler_is_checked": "the recipe environment is evaluated once and the resolved CC must name the requested API level" diff --git a/config/upstream/cpython-3.14.6-aarch64-linux-android.lock.json b/config/upstream/cpython-3.14.7-aarch64-linux-android.lock.json similarity index 73% rename from config/upstream/cpython-3.14.6-aarch64-linux-android.lock.json rename to config/upstream/cpython-3.14.7-aarch64-linux-android.lock.json index ee3602b..dbe5c9d 100644 --- a/config/upstream/cpython-3.14.6-aarch64-linux-android.lock.json +++ b/config/upstream/cpython-3.14.7-aarch64-linux-android.lock.json @@ -12,14 +12,14 @@ }, "python": { "implementation": "cpython", - "version": "3.14.6", + "version": "3.14.7", "major_minor": "3.14" }, "archive": { - "filename": "python-3.14.6-aarch64-linux-android.tar.gz", - "url": "https://www.python.org/ftp/python/3.14.6/python-3.14.6-aarch64-linux-android.tar.gz", - "size_bytes": 22358404, - "sha256": "38bbe77d3167b5cd554e03b1021324926f09f3825202b065951dd7638e9c37e5" + "filename": "python-3.14.7-aarch64-linux-android.tar.gz", + "url": "https://www.python.org/ftp/python/3.14.7/python-3.14.7-aarch64-linux-android.tar.gz", + "size_bytes": 22477276, + "sha256": "6d50cc3aa66e414a439594089bcdfb5f1264358155c70c1f00471c24cfb477fb" }, "producer": { "cpython": "Python.org / CPython Android release tooling", From f8bcbafc47fd9dd2074b2115fc8aecbb94e338c3 Mon Sep 17 00:00:00 2001 From: David Hyunyoo Jang Date: Fri, 14 Aug 2026 18:03:09 +0900 Subject: [PATCH 2/2] test: keep API-level tests compatible with Python 3.10 --- tests/test_api_level.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_api_level.py b/tests/test_api_level.py index 2056457..09c8673 100644 --- a/tests/test_api_level.py +++ b/tests/test_api_level.py @@ -82,7 +82,9 @@ def test_an_empty_range_is_an_error(self) -> None: class DecisionsTest(unittest.TestCase): def write(self, text: str) -> Path: - directory = Path(self.enterContext(TemporaryDirectory())) + temporary = TemporaryDirectory() + self.addCleanup(temporary.cleanup) + directory = Path(temporary.name) path = directory / "pyconfig.h" path.write_text(text, encoding="utf-8") return path