Skip to content

Commit c1a6b85

Browse files
committed
Merge branch 'main' into convert-deopts-to-exits
2 parents e77e773 + f062014 commit c1a6b85

File tree

364 files changed

+7745
-4638
lines changed

Some content is hidden

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

364 files changed

+7745
-4638
lines changed

.github/CODEOWNERS

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ Tools/c-analyzer/ @ericsnowcurrently
132132
Tools/check-c-api-docs/ @ZeroIntensity
133133

134134
# Fuzzing
135-
Modules/_xxtestfuzz/ @ammaraskar
135+
Modules/_xxtestfuzz/ @python/fuzzers
136+
Lib/test/test_xxtestfuzz.py @python/fuzzers
137+
.github/workflows/reusable-cifuzz.yml @python/fuzzers
136138

137139
# Limited C API & Stable ABI
138140
Doc/c-api/stable.rst @encukou
@@ -260,33 +262,33 @@ Include/pyhash.h @gpshead @picnixz
260262
Python/pyhash.c @gpshead @picnixz
261263

262264
# The import system (including importlib)
263-
**/*import* @brettcannon @ericsnowcurrently @ncoghlan @warsaw
264-
Python/import.c @brettcannon @ericsnowcurrently @ncoghlan @warsaw @kumaraditya303
265+
**/*import* @brettcannon @ericsnowcurrently @ncoghlan @warsaw @FFY00
266+
Python/import.c @brettcannon @ericsnowcurrently @ncoghlan @warsaw @FFY00 @kumaraditya303
265267
**/*freeze* @ericsnowcurrently
266268
**/*frozen* @ericsnowcurrently
267269
**/*modsupport* @ericsnowcurrently
268-
**/*modulefinder* @ericsnowcurrently
270+
**/*modulefinder* @ericsnowcurrently @FFY00
269271
**/*moduleobject* @ericsnowcurrently
270272
**/*multiphase* @ericsnowcurrently
271-
**/*pkgutil* @ericsnowcurrently
273+
**/*pkgutil* @ericsnowcurrently @FFY00
272274
**/*pythonrun* @ericsnowcurrently
273-
**/*runpy* @ericsnowcurrently
275+
**/*runpy* @ericsnowcurrently @FFY00
274276
**/*singlephase* @ericsnowcurrently
275277
Doc/c-api/module.rst @ericsnowcurrently
276278
Lib/test/test_module/ @ericsnowcurrently
277-
Python/dynload_*.c @ericsnowcurrently
279+
Python/dynload_*.c @ericsnowcurrently @FFY00
278280

279281
# Initialisation
280-
**/*initconfig* @ericsnowcurrently
281-
**/*pathconfig* @ericsnowcurrently
282-
**/*preconfig* @ericsnowcurrently
282+
**/*initconfig* @ericsnowcurrently @FFY00
283+
**/*pathconfig* @ericsnowcurrently @FFY00
284+
**/*preconfig* @ericsnowcurrently @FFY00
283285
Doc/library/sys_path_init.rst @FFY00
284286
Doc/c-api/init_config.rst @FFY00
285287

286288
# Interpreter main program
287-
Modules/main.c @ericsnowcurrently
288-
Programs/_bootstrap_python.c @ericsnowcurrently
289-
Programs/python.c @ericsnowcurrently
289+
Modules/main.c @ericsnowcurrently @FFY00
290+
Programs/_bootstrap_python.c @ericsnowcurrently @FFY00
291+
Programs/python.c @ericsnowcurrently @FFY00
290292

291293
# JIT
292294
.github/workflows/jit.yml @savannahostrowski
@@ -316,8 +318,8 @@ Tools/peg_generator/ @pablogsal @lysnikolaou
316318

317319
# Runtime state/lifecycle
318320
**/*gil* @ericsnowcurrently
319-
**/*pylifecycle* @ericsnowcurrently @ZeroIntensity
320-
**/*pystate* @ericsnowcurrently @ZeroIntensity
321+
**/*pylifecycle* @ericsnowcurrently @ZeroIntensity @FFY00
322+
**/*pystate* @ericsnowcurrently @ZeroIntensity @FFY00
321323
Include/internal/pycore_*_init.h @ericsnowcurrently
322324
Include/internal/pycore_*_state.h @ericsnowcurrently
323325
Include/internal/pycore_atexit.h @ericsnowcurrently
@@ -505,13 +507,13 @@ Lib/idlelib/ @terryjreedy
505507
Lib/turtledemo/ @terryjreedy
506508

507509
# importlib.metadata
508-
Doc/library/importlib.metadata.rst @jaraco @warsaw
509-
Lib/importlib/metadata/ @jaraco @warsaw
510-
Lib/test/test_importlib/metadata/ @jaraco @warsaw
510+
Doc/library/importlib.metadata.rst @jaraco @warsaw @FFY00
511+
Lib/importlib/metadata/ @jaraco @warsaw @FFY00
512+
Lib/test/test_importlib/metadata/ @jaraco @warsaw @FFY00
511513

512514
# importlib.resources
513-
Doc/library/importlib.resources.abc.rst @jaraco @warsaw
514-
Doc/library/importlib.resources.rst @jaraco @warsaw
515+
Doc/library/importlib.resources.abc.rst @jaraco @warsaw @FFY00
516+
Doc/library/importlib.resources.rst @jaraco @warsaw @FFY00
515517
Lib/importlib/resources/ @jaraco @warsaw @FFY00
516518
Lib/test/test_importlib/resources/ @jaraco @warsaw @FFY00
517519

.github/actionlint.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
self-hosted-runner:
2-
# Pending https://github.com/rhysd/actionlint/pull/615
3-
labels: ["windows-2025-vs2026"]
4-
51
config-variables: null
62

73
paths:

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
// We need to truncate the body size, because the max size for
4545
// the whole payload is 16kb. We want to be safe and assume that
4646
// body can take up to ~8kb of space.
47-
body : issue.data.body.substring(0, 8000)
47+
body : (issue.data.body || "").substring(0, 8000)
4848
};
4949
5050
const data = {

.github/workflows/reusable-wasi.yml

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ jobs:
1313
timeout-minutes: 60
1414
env:
1515
WASMTIME_VERSION: 38.0.3
16-
WASI_SDK_VERSION: 30
17-
WASI_SDK_PATH: /opt/wasi-sdk
1816
CROSS_BUILD_PYTHON: cross-build/build
1917
CROSS_BUILD_WASI: cross-build/wasm32-wasip1
2018
steps:
@@ -26,18 +24,23 @@ jobs:
2624
uses: bytecodealliance/actions/wasmtime/setup@v1
2725
with:
2826
version: ${{ env.WASMTIME_VERSION }}
29-
- name: "Restore WASI SDK"
30-
id: cache-wasi-sdk
31-
uses: actions/cache@v5
32-
with:
33-
path: ${{ env.WASI_SDK_PATH }}
34-
key: ${{ runner.os }}-wasi-sdk-${{ env.WASI_SDK_VERSION }}
35-
- name: "Install WASI SDK" # Hard-coded to x64.
36-
if: steps.cache-wasi-sdk.outputs.cache-hit != 'true'
27+
- name: "Read WASI SDK version"
28+
id: wasi-sdk-version
3729
run: |
38-
mkdir "${WASI_SDK_PATH}" && \
39-
curl -s -S --location "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-arm64-linux.tar.gz" | \
40-
tar --strip-components 1 --directory "${WASI_SDK_PATH}" --extract --gunzip
30+
import tomllib
31+
from pathlib import Path
32+
import os
33+
config = tomllib.loads(Path("Platforms/WASI/config.toml").read_text())
34+
version = config["targets"]["wasi-sdk"]
35+
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
36+
f.write(f"version={version}\n")
37+
shell: python
38+
- name: "Install WASI SDK"
39+
id: install-wasi-sdk
40+
uses: bytecodealliance/setup-wasi-sdk-action@b2de090b44eb70013ee96b393727d473b35e1728
41+
with:
42+
version: ${{ steps.wasi-sdk-version.outputs.version }}
43+
add-to-path: false
4144
- name: "Install Python"
4245
uses: actions/setup-python@v6
4346
with:
@@ -51,6 +54,8 @@ jobs:
5154
- name: "Configure host"
5255
# `--with-pydebug` inferred from configure-build-python
5356
run: python3 Platforms/WASI configure-host -- --config-cache
57+
env:
58+
WASI_SDK_PATH: ${{ steps.install-wasi-sdk.outputs.wasi-sdk-path }}
5459
- name: "Make host"
5560
run: python3 Platforms/WASI make-host
5661
- name: "Display build info"

.github/zizmor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Configuration for the zizmor static analysis tool, run via prek in CI
2-
# https://woodruffw.github.io/zizmor/configuration/
2+
# https://docs.zizmor.sh/configuration/
33
rules:
44
dangerous-triggers:
55
ignore:

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ Tools/unicode/data/
137137
/config.status
138138
/config.status.lineno
139139
/.ccache
140-
/cross-build/
140+
/cross-build*/
141141
/jit_stencils*.h
142142
/platform
143143
/profile-clean-stamp

.pre-commit-config.yaml

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
rev: v0.15.0
3+
rev: a27a2e47c7751b639d2b5badf0ef6ff11fee893f # frozen: v0.15.4
44
hooks:
55
- id: ruff-check
66
name: Run Ruff (lint) on Apple/
@@ -14,6 +14,10 @@ repos:
1414
name: Run Ruff (lint) on Lib/test/
1515
args: [--exit-non-zero-on-fix]
1616
files: ^Lib/test/
17+
- id: ruff-check
18+
name: Run Ruff (lint) on Platforms/WASI/
19+
args: [--exit-non-zero-on-fix, --config=Platforms/WASI/.ruff.toml]
20+
files: ^Platforms/WASI/
1721
- id: ruff-check
1822
name: Run Ruff (lint) on Tools/build/
1923
args: [--exit-non-zero-on-fix, --config=Tools/build/.ruff.toml]
@@ -42,6 +46,10 @@ repos:
4246
name: Run Ruff (format) on Doc/
4347
args: [--exit-non-zero-on-fix]
4448
files: ^Doc/
49+
- id: ruff-format
50+
name: Run Ruff (format) on Platforms/WASI/
51+
args: [--exit-non-zero-on-fix, --config=Platforms/WASI/.ruff.toml]
52+
files: ^Platforms/WASI/
4553
- id: ruff-format
4654
name: Run Ruff (format) on Tools/build/check_warnings.py
4755
args: [--exit-non-zero-on-fix, --config=Tools/build/.ruff.toml]
@@ -52,20 +60,20 @@ repos:
5260
files: ^Tools/wasm/
5361

5462
- repo: https://github.com/psf/black-pre-commit-mirror
55-
rev: 26.1.0
63+
rev: ea488cebbfd88a5f50b8bd95d5c829d0bb76feb8 # frozen: 26.1.0
5664
hooks:
5765
- id: black
5866
name: Run Black on Tools/jit/
5967
files: ^Tools/jit/
6068

6169
- repo: https://github.com/Lucas-C/pre-commit-hooks
62-
rev: v1.5.6
70+
rev: ad1b27d73581aa16cca06fc4a0761fc563ffe8e8 # frozen: v1.5.6
6371
hooks:
6472
- id: remove-tabs
6573
types: [python]
6674

6775
- repo: https://github.com/pre-commit/pre-commit-hooks
68-
rev: v6.0.0
76+
rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0
6977
hooks:
7078
- id: check-case-conflict
7179
- id: check-merge-conflict
@@ -83,24 +91,24 @@ repos:
8391
files: '^\.github/CODEOWNERS|\.(gram)$'
8492

8593
- repo: https://github.com/python-jsonschema/check-jsonschema
86-
rev: 0.36.1
94+
rev: 9f48a48aa91a6040d749ad68ec70907d907a5a7f # frozen: 0.37.0
8795
hooks:
8896
- id: check-dependabot
8997
- id: check-github-workflows
9098
- id: check-readthedocs
9199

92100
- repo: https://github.com/rhysd/actionlint
93-
rev: v1.7.10
101+
rev: 393031adb9afb225ee52ae2ccd7a5af5525e03e8 # frozen: v1.7.11
94102
hooks:
95103
- id: actionlint
96104

97-
- repo: https://github.com/woodruffw/zizmor-pre-commit
98-
rev: v1.22.0
105+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
106+
rev: b546b77c44c466a54a42af5499dcc0dcc1a3193f # frozen: v1.22.0
99107
hooks:
100108
- id: zizmor
101109

102110
- repo: https://github.com/sphinx-contrib/sphinx-lint
103-
rev: v1.0.2
111+
rev: c883505f64b59c3c5c9375191e4ad9f98e727ccd # frozen: v1.0.2
104112
hooks:
105113
- id: sphinx-lint
106114
args: [--enable=default-role]

Doc/Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ build:
5858
@if [ -f ../Misc/NEWS ] ; then \
5959
echo "Using existing Misc/NEWS file"; \
6060
cp ../Misc/NEWS build/NEWS; \
61-
elif $(BLURB) help >/dev/null 2>&1 && $(SPHINXBUILD) --version >/dev/null 2>&1; then \
61+
elif $(BLURB) --version && $(SPHINXBUILD) --version ; then \
6262
if [ -d ../Misc/NEWS.d ]; then \
6363
echo "Building NEWS from Misc/NEWS.d with blurb"; \
6464
$(BLURB) merge -f build/NEWS; \
@@ -88,6 +88,7 @@ htmlhelp: build
8888
"build/htmlhelp/pydoc.hhp project file."
8989

9090
.PHONY: latex
91+
latex: _ensure-sphinxcontrib-svg2pdfconverter
9192
latex: BUILDER = latex
9293
latex: build
9394
@echo "Build finished; the LaTeX files are in build/latex."
@@ -231,7 +232,7 @@ dist-text:
231232
@echo "Build finished and archived!"
232233

233234
.PHONY: dist-pdf
234-
dist-pdf:
235+
dist-pdf: _ensure-sphinxcontrib-svg2pdfconverter
235236
# archive the A4 latex
236237
@echo "Building LaTeX (A4 paper)..."
237238
mkdir -p dist
@@ -292,6 +293,10 @@ _ensure-pre-commit:
292293
_ensure-sphinx-autobuild:
293294
$(MAKE) _ensure-package PACKAGE=sphinx-autobuild
294295

296+
.PHONY: _ensure-sphinxcontrib-svg2pdfconverter
297+
_ensure-sphinxcontrib-svg2pdfconverter:
298+
$(MAKE) _ensure-package PACKAGE=sphinxcontrib-svg2pdfconverter
299+
295300
.PHONY: check
296301
check: _ensure-pre-commit
297302
$(VENVDIR)/bin/python3 -m pre_commit run --all-files

Doc/c-api/arg.rst

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,28 @@ API Functions
516516
}
517517
518518
519+
.. c:function:: int PyArg_ParseArray(PyObject *const *args, Py_ssize_t nargs, const char *format, ...)
520+
521+
Parse the parameters of a function that takes only array parameters into
522+
local variables (that is, a function using the :c:macro:`METH_FASTCALL`
523+
calling convention).
524+
Returns true on success; on failure, it returns false and raises the
525+
appropriate exception.
526+
527+
.. versionadded:: 3.15
528+
529+
530+
.. c:function:: int PyArg_ParseArrayAndKeywords(PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames, const char *format, const char * const *kwlist, ...)
531+
532+
Parse the parameters of a function that takes both array and keyword
533+
parameters into local variables (that is, a function using the
534+
:c:macro:`METH_FASTCALL` ``|`` :c:macro:`METH_KEYWORDS` calling convention).
535+
Returns true on success; on failure, it returns false and raises the
536+
appropriate exception.
537+
538+
.. versionadded:: 3.15
539+
540+
519541
.. c:function:: int PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
520542
521543
A simpler form of parameter retrieval which does not use a format string to

Doc/c-api/dict.rst

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,6 @@ Dictionary objects
8282
8383
Return a new dictionary that contains the same key-value pairs as *p*.
8484
85-
.. versionchanged:: next
86-
If *p* is a subclass of :class:`frozendict`, the result will be a
87-
:class:`frozendict` instance instead of a :class:`dict` instance.
88-
8985
.. c:function:: int PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val)
9086
9187
Insert *val* into the dictionary *p* with a key of *key*. *key* must be
@@ -499,7 +495,7 @@ Dictionary view objects
499495
Frozen dictionary objects
500496
^^^^^^^^^^^^^^^^^^^^^^^^^
501497
502-
.. versionadded:: next
498+
.. versionadded:: 3.15
503499
504500
505501
.. c:var:: PyTypeObject PyFrozenDict_Type

0 commit comments

Comments
 (0)