Skip to content

Commit 8213bd3

Browse files
committed
Merge remote-tracking branch 'upstream/main' into tachyon-degrade-gracefully
2 parents 17b4197 + b954645 commit 8213bd3

1,869 files changed

Lines changed: 99452 additions & 77430 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.

‎.azure-pipelines/windows-layout-steps.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ steps:
1212
displayName: Show layout info (${{ parameters.kind }})
1313

1414
- ${{ if eq(parameters.fulltest, 'true') }}:
15-
- script: .\python.exe -m test -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results-${{ parameters.kind }}.xml" --tempdir "$(Build.BinariesDirectory)\tmp-${{ parameters.kind }}-$(arch)" -i test_launcher
15+
- script: .\python.exe -m test -q -uall -u-cpu -rwW --slowest --timeout=1200 -j0 --junit-xml="$(Build.BinariesDirectory)\test-results-${{ parameters.kind }}.xml" --tempdir "$(Build.BinariesDirectory)\tmp-${{ parameters.kind }}-$(arch)"
1616
workingDirectory: $(Build.BinariesDirectory)\layout-${{ parameters.kind }}-$(arch)
1717
displayName: ${{ parameters.kind }} Tests
1818
env:

‎.gitattributes‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
*.zip binary
2020

2121
# Specific binary files
22-
PC/classicAppCompat.* binary
22+
# -- None right now --
2323

2424
# Text files that should not be subject to eol conversion
2525
[attr]noeol -text
@@ -80,12 +80,12 @@ Include/internal/pycore_ast_state.h generated
8080
Include/internal/pycore_opcode.h generated
8181
Include/internal/pycore_opcode_metadata.h generated
8282
Include/internal/pycore_*_generated.h generated
83+
Include/internal/pycore_token.h generated
8384
Include/internal/pycore_uop_ids.h generated
8485
Include/internal/pycore_uop_metadata.h generated
8586
Include/opcode.h generated
8687
Include/opcode_ids.h generated
8788
Include/slots_generated.h generated
88-
Include/token.h generated
8989
Lib/_opcode_metadata.py generated
9090
Lib/idlelib/help.html generated
9191
Lib/keyword.py generated

‎.github/CODEOWNERS‎

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,6 @@ Mac/ @python/macos-team
171171
Lib/_osx_support.py @python/macos-team
172172
Lib/test/test__osx_support.py @python/macos-team
173173

174-
# WebAssembly
175-
Tools/wasm/README.md @brettcannon @freakboy3742 @emmatyping
176-
177174
# WebAssembly (Emscripten)
178175
Platforms/emscripten @freakboy3742 @emmatyping
179176
Tools/wasm/emscripten @freakboy3742 @emmatyping
@@ -188,12 +185,8 @@ Tools/wasm/wasi @brettcannon @emmatyping @savannahostrowski
188185
PC/ @python/windows-team
189186
PCbuild/ @python/windows-team
190187

191-
# Windows installer packages
192-
Tools/msi/ @python/windows-team
193-
Tools/nuget/ @python/windows-team
194-
195-
# Windows Launcher
196-
PC/launcher.c @python/windows-team @vsajip
188+
# Windows Venv launcher/redirector
189+
PC/venvlauncher.c @python/windows-team @vsajip
197190

198191

199192
# ----------------------------------------------------------------------------
@@ -230,7 +223,7 @@ Tools/cases_generator/ @markshannon
230223
Python/assemble.c @markshannon @iritkatriel
231224
Python/codegen.c @markshannon @iritkatriel
232225
Python/compile.c @markshannon @iritkatriel
233-
Python/flowgraph.c @markshannon @iritkatriel
226+
Python/flowgraph.c @markshannon @iritkatriel @eclips4
234227
Python/instruction_sequence.c @iritkatriel
235228
Python/symtable.c @JelleZijlstra @carljm
236229

@@ -297,9 +290,10 @@ Tools/jit/ @brandtbucher @savannahostrowski @diegorusso
297290
InternalDocs/jit.md @brandtbucher @savannahostrowski @diegorusso @AA-Turner
298291

299292
# Lazy imports (PEP 810)
300-
Objects/lazyimportobject.c @yhg1s @DinoV @pablogsal
301-
Include/internal/pycore_lazyimportobject.h @yhg1s @DinoV @pablogsal
302-
Lib/test/test_lazy_import @yhg1s @DinoV @pablogsal
293+
.github/workflows/reusable-test-lazy-imports-all.yml @yhg1s @DinoV @pablogsal
294+
Objects/lazyimportobject.c @yhg1s @DinoV @pablogsal
295+
Include/internal/pycore_lazyimportobject.h @yhg1s @DinoV @pablogsal
296+
Lib/test/test_lazy_import @yhg1s @DinoV @pablogsal
303297

304298
# Micro-op / μop / Tier 2 Optimiser
305299
Python/optimizer.c @markshannon @Fidget-Spinner
@@ -339,7 +333,6 @@ Modules/_remote_debugging/ @pablogsal
339333

340334
# Sub-Interpreters
341335
**/*crossinterp* @ericsnowcurrently
342-
**/*interpreteridobject.* @ericsnowcurrently
343336
Doc/library/concurrent.interpreters.rst @ericsnowcurrently
344337
Lib/concurrent/futures/interpreter.py @ericsnowcurrently
345338
Lib/concurrent/interpreters/ @ericsnowcurrently
@@ -606,6 +599,12 @@ Doc/library/tomllib.rst @encukou @hauntsaninja
606599
Lib/test/test_tomllib/ @encukou @hauntsaninja
607600
Lib/tomllib/ @encukou @hauntsaninja
608601

602+
# Turtle
603+
Doc/library/turtle.rst @StanFromIreland
604+
Doc/library/turtle-star.png @StanFromIreland
605+
Lib/test/test_turtle.py @StanFromIreland
606+
Lib/turtle.py @StanFromIreland
607+
609608
# Typing
610609
Doc/library/typing.rst @JelleZijlstra @AlexWaygood
611610
Lib/test/test_typing.py @JelleZijlstra @AlexWaygood
@@ -628,6 +627,12 @@ Lib/test/test_unittest/testmock/ @cjw296
628627
# Weakref
629628
**/*weakref* @kumaraditya303
630629

630+
# Zlib
631+
Doc/library/zlib.rst @StanFromIreland
632+
Lib/compression/zlib.py @StanFromIreland
633+
Lib/test/test_zlib.py @StanFromIreland
634+
Modules/zlibmodule.c @StanFromIreland
635+
631636
# Zipfile.Path
632637
Lib/test/test_zipfile/_path/ @jaraco
633638
Lib/zipfile/_path/ @jaraco
@@ -650,3 +655,9 @@ Modules/**/clinic/
650655
Objects/**/clinic/
651656
PC/**/clinic/
652657
Python/**/clinic/
658+
659+
# Exclude Lazy Imports=all CI carve out file
660+
Lib/test/lazy_imports_all_exclude.txt
661+
662+
# Exclude HTML IDs list
663+
Doc/tools/removed-ids.txt

‎.github/workflows/build.yml‎

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -181,22 +181,6 @@ jobs:
181181
free-threading: ${{ matrix.free-threading }}
182182
interpreter: ${{ matrix.interpreter }}
183183

184-
build-windows-msi:
185-
# ${{ '' } is a hack to nest jobs under the same sidebar category.
186-
name: Windows MSI${{ '' }} # zizmor: ignore[obfuscation]
187-
needs: build-context
188-
if: fromJSON(needs.build-context.outputs.run-windows-msi)
189-
strategy:
190-
fail-fast: false
191-
matrix:
192-
arch:
193-
- x86
194-
- x64
195-
- arm64
196-
uses: ./.github/workflows/reusable-windows-msi.yml
197-
with:
198-
arch: ${{ matrix.arch }}
199-
200184
build-macos:
201185
name: >-
202186
macOS
@@ -261,6 +245,12 @@ jobs:
261245
os: ${{ matrix.os }}
262246
test-opts: ${{ matrix.test-opts || '' }}
263247

248+
build-ubuntu-installed:
249+
name: 'Ubuntu (installed)'
250+
needs: build-context
251+
if: needs.build-context.outputs.run-ubuntu == 'true'
252+
uses: ./.github/workflows/reusable-install.yml
253+
264254
build-ubuntu-ssltests:
265255
name: 'Ubuntu SSL tests'
266256
runs-on: ${{ matrix.os }}
@@ -278,13 +268,13 @@ jobs:
278268
# unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
279269
# supported by important vendors such as AWS-LC.
280270
- { name: openssl, version: 1.1.1w }
281-
- { name: openssl, version: 3.0.21 }
282-
- { name: openssl, version: 3.4.6 }
283-
- { name: openssl, version: 3.5.7 }
284-
- { name: openssl, version: 3.6.3 }
285-
- { name: openssl, version: 4.0.1 }
271+
- { name: openssl, version: 3.0.22 }
272+
- { name: openssl, version: 3.4.7 }
273+
- { name: openssl, version: 3.5.8 }
274+
- { name: openssl, version: 3.6.4 }
275+
- { name: openssl, version: 4.0.2 }
286276
## AWS-LC
287-
- { name: aws-lc, version: 5.0.0 }
277+
- { name: aws-lc, version: 5.5.0 }
288278
env:
289279
SSLLIB_VER: ${{ matrix.ssllib.version }}
290280
MULTISSL_DIR: ${{ github.workspace }}/multissl
@@ -354,7 +344,7 @@ jobs:
354344
with:
355345
persist-credentials: false
356346
- name: Build and test
357-
run: JAVA_HOME="${JAVA_HOME_21_X64:-$JAVA_HOME_21_arm64}" python3 Platforms/Android ci --fast-ci ${{ matrix.arch }}-linux-android
347+
run: python3 Platforms/Android ci --fast-ci ${{ matrix.arch }}-linux-android
358348

359349
build-ios:
360350
name: iOS
@@ -389,7 +379,7 @@ jobs:
389379
needs: build-context
390380
if: needs.build-context.outputs.run-ubuntu == 'true'
391381
env:
392-
OPENSSL_VER: 3.5.7
382+
OPENSSL_VER: 3.5.8
393383
PYTHONSTRICTEXTENSIONBUILD: 1
394384
steps:
395385
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
@@ -486,6 +476,12 @@ jobs:
486476
name: hypothesis-example-db
487477
path: ${{ env.CPYTHON_BUILDDIR }}/.hypothesis/examples/
488478

479+
test-lazy-imports-all:
480+
name: 'Lazy imports enabled'
481+
needs: build-context
482+
if: fromJSON(needs.build-context.outputs.run-tests)
483+
uses: ./.github/workflows/reusable-test-lazy-imports-all.yml
484+
489485
build-asan:
490486
name: 'Address sanitizer'
491487
runs-on: ${{ matrix.os }}
@@ -497,7 +493,7 @@ jobs:
497493
matrix:
498494
os: [ubuntu-26.04]
499495
env:
500-
OPENSSL_VER: 3.5.7
496+
OPENSSL_VER: 3.5.8
501497
PYTHONSTRICTEXTENSIONBUILD: 1
502498
ASAN_OPTIONS: detect_leaks=0:allocator_may_return_null=1:handle_segv=0
503499
steps:
@@ -650,14 +646,15 @@ jobs:
650646
- check-generated-files
651647
- check-c-api-docs
652648
- build-windows
653-
- build-windows-msi
654649
- build-macos
655650
- build-ubuntu
651+
- build-ubuntu-installed
656652
- build-ubuntu-ssltests
657653
- build-ios
658654
- build-emscripten
659655
- build-wasi
660656
- test-hypothesis
657+
- test-lazy-imports-all
661658
- build-asan
662659
- build-san
663660
- cross-build-linux
@@ -671,7 +668,6 @@ jobs:
671668
allowed-failures: >-
672669
build-android,
673670
build-emscripten,
674-
build-windows-msi,
675671
build-ubuntu-ssltests,
676672
test-hypothesis,
677673
cifuzz,
@@ -703,6 +699,7 @@ jobs:
703699
!fromJSON(needs.build-context.outputs.run-ubuntu)
704700
&& '
705701
build-ubuntu,
702+
build-ubuntu-installed,
706703
build-ubuntu-ssltests,
707704
test-hypothesis,
708705
build-asan,
@@ -715,4 +712,5 @@ jobs:
715712
${{ !fromJSON(needs.build-context.outputs.run-ios) && 'build-ios,' || '' }}
716713
${{ !fromJSON(needs.build-context.outputs.run-emscripten) && 'build-emscripten,' || '' }}
717714
${{ !fromJSON(needs.build-context.outputs.run-wasi) && 'build-wasi,' || '' }}
715+
${{ !fromJSON(needs.build-context.outputs.run-tests) && 'test-lazy-imports-all,' || '' }}
718716
jobs: ${{ toJSON(needs) }}

‎.github/workflows/reusable-context.yml‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@ on: # yamllint disable-line rule:truthy
4747
run-wasi:
4848
description: Whether to run the WASI tests
4949
value: ${{ jobs.compute-changes.outputs.run-wasi }} # bool
50-
run-windows-msi:
51-
description: Whether to run the MSI installer smoke tests
52-
value: ${{ jobs.compute-changes.outputs.run-windows-msi }} # bool
5350
run-windows-tests:
5451
description: Whether to run the Windows tests
5552
value: ${{ jobs.compute-changes.outputs.run-windows-tests }} # bool
@@ -73,7 +70,6 @@ jobs:
7370
run-ubuntu: ${{ steps.changes.outputs.run-ubuntu }}
7471
run-emscripten: ${{ steps.changes.outputs.run-emscripten }}
7572
run-wasi: ${{ steps.changes.outputs.run-wasi }}
76-
run-windows-msi: ${{ steps.changes.outputs.run-windows-msi }}
7773
run-windows-tests: ${{ steps.changes.outputs.run-windows-tests }}
7874
steps:
7975
- name: Set up Python

‎.github/workflows/reusable-docs.yml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ jobs:
8686
--fail-if-regression \
8787
--fail-if-improved \
8888
--fail-if-new-news-nit
89+
- name: 'Build list of changes'
90+
run: |
91+
make -C Doc/ PYTHON=../python changes
8992
- name: 'Collect HTML IDs'
9093
if: github.event_name == 'pull_request'
9194
run: python Doc/tools/check-html-ids.py collect Doc/build/html -o Doc/build/html-ids-head.json.gz
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Reusable Ubuntu (installed)
2+
3+
on:
4+
workflow_call:
5+
6+
permissions:
7+
contents: read
8+
9+
env:
10+
FORCE_COLOR: 1
11+
12+
jobs:
13+
build-install-test:
14+
name: build, install and test
15+
runs-on: ubuntu-26.04-arm
16+
timeout-minutes: 60
17+
env:
18+
PYTHONSTRICTEXTENSIONBUILD: 1
19+
steps:
20+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
21+
with:
22+
persist-credentials: false
23+
- name: Register gcc problem matcher
24+
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
25+
- name: Set install dir
26+
run:
27+
echo "INSTALL_DIR=$(realpath "${GITHUB_WORKSPACE}/../installed-python")" >> "$GITHUB_ENV"
28+
- name: Install dependencies
29+
run: sudo ./.github/workflows/posix-deps-apt.sh
30+
- name: Configure CPython
31+
run: ./configure --config-cache --prefix="$INSTALL_DIR"
32+
- name: Build CPython
33+
run: make -j
34+
- name: Install CPython
35+
run: make install
36+
- name: Set installed interpreter
37+
run: |
38+
ldversion=$(./python -c 'import sysconfig; print(sysconfig.get_config_var("LDVERSION"))')
39+
echo "INSTALLED_PYTHON=${INSTALL_DIR}/bin/python${ldversion}" >> "$GITHUB_ENV"
40+
- name: Display build info
41+
run: |
42+
"$INSTALLED_PYTHON" -m test.pythoninfo
43+
- name: Test the installed Python
44+
run: xvfb-run "$INSTALLED_PYTHON" -m test --fast-ci --timeout=900

‎.github/workflows/reusable-san.yml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ permissions:
1717

1818
env:
1919
FORCE_COLOR: 1
20-
OPENSSL_VER: 3.5.7
20+
OPENSSL_VER: 3.5.8
2121

2222
jobs:
2323
build-san-reusable:
@@ -55,7 +55,7 @@ jobs:
5555
SAN_LOG_OPTION: log_path=${{ github.workspace }}/san_log
5656
SUPPRESSIONS_SUFFIX: >-
5757
${{
58-
fromJSON(inputs.free-threading)
58+
inputs.free-threading
5959
&& '_free_threading'
6060
|| ''
6161
}}
@@ -101,7 +101,7 @@ jobs:
101101
}}
102102
--with-pydebug
103103
${{ inputs.sanitizer == 'TSan' && '--with-openssl="$OPENSSL_DIR" --with-openssl-rpath=auto' || '' }}
104-
${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
104+
${{ inputs.free-threading && '--disable-gil' || '' }}
105105
- name: Build CPython
106106
run: make -j4
107107
- name: Display build info
@@ -114,7 +114,7 @@ jobs:
114114
- name: Parallel tests
115115
if: >-
116116
inputs.sanitizer == 'TSan'
117-
&& fromJSON(inputs.free-threading)
117+
&& inputs.free-threading
118118
run: ./python -m test --tsan-parallel --parallel-threads=4 -j4 -W --timeout=600 --slowest
119119
- name: Display logs
120120
if: always()
@@ -125,7 +125,7 @@ jobs:
125125
with:
126126
name: >-
127127
${{ inputs.sanitizer }}-logs-${{
128-
fromJSON(inputs.free-threading)
128+
inputs.free-threading
129129
&& 'free-threading'
130130
|| 'default'
131131
}}

0 commit comments

Comments
 (0)