Skip to content

Commit 9137664

Browse files
authored
Merge branch '3.14' into backport-ac1acb6-3.14
2 parents 92026ca + aa3d583 commit 9137664

426 files changed

Lines changed: 9382 additions & 2727 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actionlint.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
config-variables: null
22

3+
# Pending release of actionlint > 1.7.12 for ubuntu-26.04* support:
4+
# https://github.com/rhysd/actionlint/pull/683
5+
self-hosted-runner:
6+
labels:
7+
- ubuntu-26.04
8+
- ubuntu-26.04-arm
9+
310
paths:
411
.github/workflows/**/*.yml:
512
ignore:

.github/workflows/add-issue-header.yml

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

1818
jobs:
1919
add-header:
20-
runs-on: ubuntu-latest
20+
runs-on: ubuntu-slim
2121
permissions:
2222
issues: write
2323
timeout-minutes: 5

.github/workflows/build.yml

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ jobs:
100100
name: 'Check if Autoconf files are up to date'
101101
# Don't use ubuntu-latest but a specific version to make the job
102102
# reproducible: to get the same tools versions (autoconf, aclocal, ...)
103-
runs-on: ubuntu-24.04
103+
runs-on: ubuntu-26.04
104104
container:
105105
image: ghcr.io/python/autoconf:2025.01.02.12581854023
106106
timeout-minutes: 60
@@ -143,7 +143,7 @@ jobs:
143143
name: 'Check if generated files are up to date'
144144
# Don't use ubuntu-latest but a specific version to make the job
145145
# reproducible: to get the same tools versions (autoconf, aclocal, ...)
146-
runs-on: ubuntu-24.04
146+
runs-on: ubuntu-26.04
147147
timeout-minutes: 60
148148
needs: build-context
149149
if: needs.build-context.outputs.run-tests == 'true'
@@ -187,9 +187,14 @@ jobs:
187187
- name: Check for unsupported C global variables
188188
if: github.event_name == 'pull_request' # $GITHUB_EVENT_NAME
189189
run: make check-c-globals
190-
- name: Check for undocumented C APIs
191-
run: make check-c-api-docs
192190

191+
check-c-api-docs:
192+
name: C API Docs
193+
needs: build-context
194+
if: >-
195+
needs.build-context.outputs.run-tests == 'true'
196+
|| needs.build-context.outputs.run-docs == 'true'
197+
uses: ./.github/workflows/reusable-check-c-api-docs.yml
193198

194199
build-windows:
195200
name: >-
@@ -240,16 +245,16 @@ jobs:
240245
strategy:
241246
fail-fast: false
242247
matrix:
243-
# macos-26 is Apple Silicon, macos-15-intel is Intel.
244-
# macos-15-intel only runs tests against the GIL-enabled CPython.
248+
# macos-26 is Apple Silicon, macos-26-intel is Intel.
249+
# macos-26-intel only runs tests against the GIL-enabled CPython.
245250
os:
246251
- macos-26
247-
- macos-15-intel
252+
- macos-26-intel
248253
free-threading:
249254
- false
250255
- true
251256
exclude:
252-
- os: macos-15-intel
257+
- os: macos-26-intel
253258
free-threading: true
254259
uses: ./.github/workflows/reusable-macos.yml
255260
with:
@@ -272,6 +277,8 @@ jobs:
272277
free-threading:
273278
- false
274279
- true
280+
# For BOLT jobs, https://apt.llvm.org/llvm.sh doesn't support LLVM 19
281+
# on Ubuntu 26.04, so stick to Ubuntu 24.04 until LLVM is upgraded.
275282
os:
276283
- ubuntu-24.04
277284
- ubuntu-24.04-arm
@@ -297,7 +304,7 @@ jobs:
297304
strategy:
298305
fail-fast: false
299306
matrix:
300-
os: [ubuntu-24.04]
307+
os: [ubuntu-26.04]
301308
ssllib:
302309
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
303310
## OpenSSL
@@ -370,38 +377,29 @@ jobs:
370377
- arch: aarch64
371378
runs-on: macos-26
372379
- arch: x86_64
373-
runs-on: ubuntu-24.04
380+
runs-on: ubuntu-26.04
374381

375382
runs-on: ${{ matrix.runs-on }}
376383
steps:
377384
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
378385
with:
379386
persist-credentials: false
380387
- name: Build and test
381-
run: ./Android/android.py ci --fast-ci ${{ matrix.arch }}-linux-android
388+
run: JAVA_HOME="${JAVA_HOME_21_X64:-$JAVA_HOME_21_arm64}" ./Android/android.py ci --fast-ci ${{ matrix.arch }}-linux-android
382389

383390
build-ios:
384391
name: iOS
385392
needs: build-context
386393
if: needs.build-context.outputs.run-ios == 'true'
387394
timeout-minutes: 60
388-
runs-on: macos-14
395+
runs-on: macos-26
389396
steps:
390397
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
391398
with:
392399
persist-credentials: false
393400

394-
# GitHub recommends explicitly selecting the desired Xcode version:
395-
# https://github.com/actions/runner-images/issues/12541#issuecomment-3083850140
396-
# This became a necessity as a result of
397-
# https://github.com/actions/runner-images/issues/12541 and
398-
# https://github.com/actions/runner-images/issues/12751.
399-
- name: Select Xcode version
400-
run: |
401-
sudo xcode-select --switch /Applications/Xcode_15.4.app
402-
403401
- name: Build and test
404-
run: python3 Apple ci iOS --fast-ci --simulator 'iPhone SE (3rd generation),OS=17.5'
402+
run: python3 Apple ci iOS --fast-ci
405403

406404
build-emscripten:
407405
name: 'Emscripten'
@@ -417,7 +415,7 @@ jobs:
417415

418416
test-hypothesis:
419417
name: "Hypothesis tests on Ubuntu"
420-
runs-on: ubuntu-24.04
418+
runs-on: ubuntu-26.04
421419
timeout-minutes: 60
422420
needs: build-context
423421
if: needs.build-context.outputs.run-ubuntu == 'true'
@@ -528,7 +526,7 @@ jobs:
528526
strategy:
529527
fail-fast: false
530528
matrix:
531-
os: [ubuntu-24.04]
529+
os: [ubuntu-26.04]
532530
env:
533531
OPENSSL_VER: 3.5.7
534532
PYTHONSTRICTEXTENSIONBUILD: 1
@@ -543,10 +541,6 @@ jobs:
543541
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
544542
- name: Install dependencies
545543
run: sudo ./.github/workflows/posix-deps-apt.sh
546-
- name: Set up GCC-10 for ASAN
547-
uses: egor-tensin/setup-gcc@a2861a8b8538f49cf2850980acccf6b05a1b2ae4 # v2.0
548-
with:
549-
version: 10
550544
- name: Configure OpenSSL env vars
551545
run: |
552546
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
@@ -596,7 +590,7 @@ jobs:
596590

597591
cross-build-linux:
598592
name: Cross build Linux
599-
runs-on: ubuntu-latest
593+
runs-on: ubuntu-26.04
600594
timeout-minutes: 60
601595
needs: build-context
602596
if: needs.build-context.outputs.run-ubuntu == 'true'
@@ -685,6 +679,7 @@ jobs:
685679
- check-docs
686680
- check-autoconf-regen
687681
- check-generated-files
682+
- check-c-api-docs
688683
- build-windows
689684
- build-windows-msi
690685
- build-macos
@@ -721,6 +716,12 @@ jobs:
721716
'
722717
|| ''
723718
}}
719+
${{
720+
!fromJSON(needs.build-context.outputs.run-tests)
721+
&& !fromJSON(needs.build-context.outputs.run-docs)
722+
&& 'check-c-api-docs,'
723+
|| ''
724+
}}
724725
${{ !fromJSON(needs.build-context.outputs.run-windows-tests) && 'build-windows,' || '' }}
725726
${{
726727
!fromJSON(needs.build-context.outputs.run-ci-fuzz)

.github/workflows/jit.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ env:
2626
jobs:
2727
interpreter:
2828
name: Interpreter (Debug)
29-
runs-on: ubuntu-24.04
29+
runs-on: ubuntu-26.04
3030
timeout-minutes: 60
3131
steps:
3232
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -96,9 +96,9 @@ jobs:
9696
- false
9797
include:
9898
- target: x86_64-apple-darwin/clang
99-
runner: macos-15-intel
99+
runner: macos-26-intel
100100
- target: aarch64-apple-darwin/clang
101-
runner: macos-15
101+
runner: macos-26
102102
steps:
103103
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
104104
with:
@@ -138,6 +138,8 @@ jobs:
138138
- true
139139
- false
140140
include:
141+
# https://apt.llvm.org/llvm.sh doesn't support LLVM 19
142+
# on Ubuntu 26.04, so stick to Ubuntu 24.04 until LLVM is upgraded.
141143
- target: x86_64-unknown-linux-gnu/gcc
142144
runner: ubuntu-24.04
143145
- target: aarch64-unknown-linux-gnu/gcc
@@ -162,6 +164,8 @@ jobs:
162164
linux-extras:
163165
name: ${{ matrix.name }}
164166

167+
# https://apt.llvm.org/llvm.sh doesn't support LLVM 19 on Ubuntu 26.04,
168+
# so stick to Ubuntu 24.04 until LLVM is upgraded.
165169
runs-on: ubuntu-24.04
166170
timeout-minutes: 60
167171
strategy:

.github/workflows/new-bugs-announce-notifier.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ permissions:
1010

1111
jobs:
1212
notify-new-bugs-announce:
13-
runs-on: ubuntu-latest
13+
runs-on: ubuntu-slim
1414
permissions:
1515
issues: read
1616
timeout-minutes: 10

.github/workflows/posix-deps-apt.sh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,20 @@ apt-get update
44
apt-get -yq --no-install-recommends install \
55
build-essential \
66
pkg-config \
7+
curl \
78
gdb \
89
lcov \
910
libb2-dev \
1011
libbz2-dev \
1112
libffi-dev \
12-
libgdbm-dev \
1313
libgdbm-compat-dev \
14+
libgdbm-dev \
1415
liblzma-dev \
1516
libncurses5-dev \
1617
libreadline6-dev \
1718
libsqlite3-dev \
1819
libssl-dev \
1920
libzstd-dev \
20-
lzma \
21-
lzma-dev \
2221
strace \
2322
tk-dev \
2423
uuid-dev \

.github/workflows/require-pr-label.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
label-dnm:
1212
name: DO-NOT-MERGE
1313
if: github.repository_owner == 'python'
14-
runs-on: ubuntu-latest
14+
runs-on: ubuntu-slim
1515
permissions:
1616
pull-requests: read
1717
timeout-minutes: 10
@@ -28,7 +28,7 @@ jobs:
2828
label-reviews:
2929
name: Unresolved review
3030
if: github.repository_owner == 'python'
31-
runs-on: ubuntu-latest
31+
runs-on: ubuntu-slim
3232
permissions:
3333
pull-requests: read
3434
timeout-minutes: 10
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Reusable C API Docs Check
2+
3+
on:
4+
workflow_call:
5+
6+
permissions:
7+
contents: read
8+
9+
env:
10+
FORCE_COLOR: 1
11+
12+
jobs:
13+
check-c-api-docs:
14+
name: 'Check if all C APIs are documented'
15+
runs-on: ubuntu-latest
16+
timeout-minutes: 5
17+
steps:
18+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
19+
with:
20+
persist-credentials: false
21+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
22+
with:
23+
python-version: '3.x'
24+
- name: Check for undocumented C APIs
25+
run: python Tools/check-c-api-docs/main.py

.github/workflows/reusable-docs.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@ name: Reusable Docs
33
on:
44
workflow_call:
55
workflow_dispatch:
6+
# Pushes to CPython branches seed the pip caches under the exact keys every
7+
# docs PR restores from. Without a branch-scoped copy, each PR saves a
8+
# duplicate into its own refs/pull/N/merge scope that nothing else can read.
9+
push:
10+
branches:
11+
- main
12+
- '3.*'
13+
paths:
14+
- 'Doc/pylock.toml'
15+
- 'Doc/requirements.txt'
16+
- '.github/workflows/reusable-docs.yml'
617

718
permissions:
819
contents: read
@@ -79,7 +90,7 @@ jobs:
7990
# Run "doctest" on HEAD as new syntax doesn't exist in the latest stable release
8091
doctest:
8192
name: 'Doctest'
82-
runs-on: ubuntu-24.04
93+
runs-on: ubuntu-26.04
8394
timeout-minutes: 60
8495
steps:
8596
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

.github/workflows/reusable-emscripten.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ env:
1212
jobs:
1313
build-emscripten-reusable:
1414
name: 'build and test'
15-
runs-on: ubuntu-24.04
15+
runs-on: ubuntu-26.04
1616
timeout-minutes: 40
1717
steps:
1818
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -77,3 +77,5 @@ jobs:
7777
run: python3 Platforms/emscripten pythoninfo-host
7878
- name: "Test"
7979
run: python3 Platforms/emscripten run --test
80+
- name: "Test Repl"
81+
run: Platforms/emscripten/browser_test/run_test.sh

0 commit comments

Comments
 (0)