Skip to content

Commit d07a9c2

Browse files
Merge branch 'main' into growable-ring-buffer
2 parents 3e7628d + 2fbd396 commit d07a9c2

File tree

159 files changed

+2091
-958
lines changed

Some content is hidden

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

159 files changed

+2091
-958
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -109,20 +109,10 @@ jobs:
109109
python-version: '3.x'
110110
- name: Runner image version
111111
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
112-
- name: Restore config.cache
113-
uses: actions/cache@v4
114-
with:
115-
path: config.cache
116-
# Include env.pythonLocation in key to avoid changes in environment when setup-python updates Python
117-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.build-context.outputs.config-hash }}-${{ env.pythonLocation }}
118112
- name: Install dependencies
119113
run: sudo ./.github/workflows/posix-deps-apt.sh
120114
- name: Add ccache to PATH
121115
run: echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
122-
- name: Configure ccache action
123-
uses: hendrikmuhs/ccache-action@v1.2
124-
with:
125-
save: false
126116
- name: Configure CPython
127117
run: |
128118
# Build Python with the libpython dynamic library
@@ -278,11 +268,6 @@ jobs:
278268
persist-credentials: false
279269
- name: Runner image version
280270
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
281-
- name: Restore config.cache
282-
uses: actions/cache@v4
283-
with:
284-
path: config.cache
285-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.build-context.outputs.config-hash }}
286271
- name: Register gcc problem matcher
287272
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
288273
- name: Install dependencies
@@ -304,10 +289,6 @@ jobs:
304289
- name: Add ccache to PATH
305290
run: |
306291
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
307-
- name: Configure ccache action
308-
uses: hendrikmuhs/ccache-action@v1.2
309-
with:
310-
save: false
311292
- name: Configure CPython
312293
run: ./configure CFLAGS="-fdiagnostics-format=json" --config-cache --enable-slower-safety --with-pydebug --with-openssl="$OPENSSL_DIR"
313294
- name: Build CPython
@@ -339,11 +320,6 @@ jobs:
339320
persist-credentials: false
340321
- name: Runner image version
341322
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
342-
- name: Restore config.cache
343-
uses: actions/cache@v4
344-
with:
345-
path: config.cache
346-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.build-context.outputs.config-hash }}
347323
- name: Register gcc problem matcher
348324
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
349325
- name: Install dependencies
@@ -370,10 +346,6 @@ jobs:
370346
- name: Add ccache to PATH
371347
run: |
372348
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
373-
- name: Configure ccache action
374-
uses: hendrikmuhs/ccache-action@v1.2
375-
with:
376-
save: false
377349
- name: Configure CPython
378350
run: |
379351
./configure CFLAGS="-fdiagnostics-format=json" \
@@ -479,10 +451,6 @@ jobs:
479451
- name: Add ccache to PATH
480452
run: |
481453
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
482-
- name: Configure ccache action
483-
uses: hendrikmuhs/ccache-action@v1.2
484-
with:
485-
save: false
486454
- name: Setup directory envs for out-of-tree builds
487455
run: |
488456
echo "CPYTHON_RO_SRCDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-ro-srcdir)" >> "$GITHUB_ENV"
@@ -493,11 +461,6 @@ jobs:
493461
run: sudo mount --bind -o ro "$GITHUB_WORKSPACE" "$CPYTHON_RO_SRCDIR"
494462
- name: Runner image version
495463
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
496-
- name: Restore config.cache
497-
uses: actions/cache@v4
498-
with:
499-
path: ${{ env.CPYTHON_BUILDDIR }}/config.cache
500-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.build-context.outputs.config-hash }}
501464
- name: Configure CPython out-of-tree
502465
working-directory: ${{ env.CPYTHON_BUILDDIR }}
503466
run: |
@@ -581,11 +544,6 @@ jobs:
581544
persist-credentials: false
582545
- name: Runner image version
583546
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
584-
- name: Restore config.cache
585-
uses: actions/cache@v4
586-
with:
587-
path: config.cache
588-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.build-context.outputs.config-hash }}
589547
- name: Register gcc problem matcher
590548
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
591549
- name: Install dependencies
@@ -611,11 +569,6 @@ jobs:
611569
- name: Add ccache to PATH
612570
run: |
613571
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
614-
- name: Configure ccache action
615-
uses: hendrikmuhs/ccache-action@v1.2
616-
with:
617-
save: ${{ github.event_name == 'push' }}
618-
max-size: "200M"
619572
- name: Configure CPython
620573
run: ./configure --config-cache --with-address-sanitizer --without-pymalloc
621574
- name: Build CPython
@@ -662,11 +615,6 @@ jobs:
662615
persist-credentials: false
663616
- name: Runner image version
664617
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
665-
- name: Restore config.cache
666-
uses: actions/cache@v4
667-
with:
668-
path: config.cache
669-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.build-context.outputs.config-hash }}
670618
- name: Register gcc problem matcher
671619
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
672620
- name: Set build dir

.github/workflows/jit.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ jobs:
6868
- true
6969
- false
7070
llvm:
71-
- 20
71+
- 21
7272
include:
7373
- target: i686-pc-windows-msvc/msvc
7474
architecture: Win32
@@ -138,7 +138,7 @@ jobs:
138138
fail-fast: false
139139
matrix:
140140
llvm:
141-
- 20
141+
- 21
142142
steps:
143143
- uses: actions/checkout@v4
144144
with:
@@ -166,7 +166,7 @@ jobs:
166166
fail-fast: false
167167
matrix:
168168
llvm:
169-
- 20
169+
- 21
170170
steps:
171171
- uses: actions/checkout@v4
172172
with:
@@ -193,7 +193,7 @@ jobs:
193193
fail-fast: false
194194
matrix:
195195
llvm:
196-
- 20
196+
- 21
197197
steps:
198198
- uses: actions/checkout@v4
199199
with:

.github/workflows/reusable-macos.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,6 @@ jobs:
3636
persist-credentials: false
3737
- name: Runner image version
3838
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
39-
- name: Restore config.cache
40-
uses: actions/cache@v4
41-
with:
42-
path: config.cache
43-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ inputs.config_hash }}
4439
- name: Install Homebrew dependencies
4540
run: |
4641
brew install pkg-config openssl@3.0 xz gdbm tcl-tk@9 make

.github/workflows/reusable-san.yml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ jobs:
3434
persist-credentials: false
3535
- name: Runner image version
3636
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
37-
- name: Restore config.cache
38-
uses: actions/cache@v4
39-
with:
40-
path: config.cache
41-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ inputs.sanitizer }}-${{ inputs.config_hash }}
4237
- name: Install dependencies
4338
run: |
4439
sudo ./.github/workflows/posix-deps-apt.sh
@@ -77,11 +72,6 @@ jobs:
7772
- name: Add ccache to PATH
7873
run: |
7974
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
80-
- name: Configure ccache action
81-
uses: hendrikmuhs/ccache-action@v1.2
82-
with:
83-
save: ${{ github.event_name == 'push' }}
84-
max-size: "200M"
8575
- name: Configure CPython
8676
run: >-
8777
./configure

.github/workflows/reusable-ubuntu.yml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,6 @@ jobs:
6464
- name: Add ccache to PATH
6565
run: |
6666
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
67-
- name: Configure ccache action
68-
uses: hendrikmuhs/ccache-action@v1.2
69-
with:
70-
save: ${{ github.event_name == 'push' }}
71-
max-size: "200M"
7267
- name: Setup directory envs for out-of-tree builds
7368
run: |
7469
echo "CPYTHON_RO_SRCDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-ro-srcdir)" >> "$GITHUB_ENV"
@@ -79,11 +74,6 @@ jobs:
7974
run: sudo mount --bind -o ro "$GITHUB_WORKSPACE" "$CPYTHON_RO_SRCDIR"
8075
- name: Runner image version
8176
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
82-
- name: Restore config.cache
83-
uses: actions/cache@v4
84-
with:
85-
path: ${{ env.CPYTHON_BUILDDIR }}/config.cache
86-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ inputs.config_hash }}
8777
- name: Configure CPython out-of-tree
8878
working-directory: ${{ env.CPYTHON_BUILDDIR }}
8979
# `test_unpickle_module_race` writes to the source directory, which is

.github/workflows/reusable-wasi.yml

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,6 @@ jobs:
4242
mkdir "${WASI_SDK_PATH}" && \
4343
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" | \
4444
tar --strip-components 1 --directory "${WASI_SDK_PATH}" --extract --gunzip
45-
- name: "Configure ccache action"
46-
uses: hendrikmuhs/ccache-action@v1.2
47-
with:
48-
save: ${{ github.event_name == 'push' }}
49-
max-size: "200M"
5045
- name: "Add ccache to PATH"
5146
run: echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
5247
- name: "Install Python"
@@ -55,24 +50,10 @@ jobs:
5550
python-version: '3.x'
5651
- name: "Runner image version"
5752
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
58-
- name: "Restore Python build config.cache"
59-
uses: actions/cache@v4
60-
with:
61-
path: ${{ env.CROSS_BUILD_PYTHON }}/config.cache
62-
# Include env.pythonLocation in key to avoid changes in environment when setup-python updates Python.
63-
# Include the hash of `Tools/wasm/wasi/__main__.py` as it may change the environment variables.
64-
# (Make sure to keep the key in sync with the other config.cache step below.)
65-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ env.WASI_SDK_VERSION }}-${{ env.WASMTIME_VERSION }}-${{ inputs.config_hash }}-${{ hashFiles('Tools/wasm/wasi/__main__.py') }}-${{ env.pythonLocation }}
6653
- name: "Configure build Python"
6754
run: python3 Tools/wasm/wasi configure-build-python -- --config-cache --with-pydebug
6855
- name: "Make build Python"
69-
run: python3 Tools/wasm/wasi make-build-python
70-
- name: "Restore host config.cache"
71-
uses: actions/cache@v4
72-
with:
73-
path: ${{ env.CROSS_BUILD_WASI }}/config.cache
74-
# Should be kept in sync with the other config.cache step above.
75-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ env.WASI_SDK_VERSION }}-${{ env.WASMTIME_VERSION }}-${{ inputs.config_hash }}-${{ hashFiles('Tools/wasm/wasi/__main__.py') }}-${{ env.pythonLocation }}
56+
run: python3 Tools/wasm/wasi.py make-build-python
7657
- name: "Configure host"
7758
# `--with-pydebug` inferred from configure-build-python
7859
run: python3 Tools/wasm/wasi configure-host -- --config-cache

Apple/testbed/__main__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import json
33
import os
44
import re
5+
import shlex
56
import shutil
67
import subprocess
78
import sys
@@ -252,7 +253,7 @@ def update_test_plan(testbed_path, platform, args):
252253
test_plan = json.load(f)
253254

254255
test_plan["defaultOptions"]["commandLineArgumentEntries"] = [
255-
{"argument": arg} for arg in args
256+
{"argument": shlex.quote(arg)} for arg in args
256257
]
257258

258259
with test_plan_path.open("w", encoding="utf-8") as f:

Doc/c-api/bytes.rst

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,42 @@ called with a non-bytes parameter.
228228
The function is :term:`soft deprecated`,
229229
use the :c:type:`PyBytesWriter` API instead.
230230
231+
232+
.. c:function:: PyObject *PyBytes_Repr(PyObject *bytes, int smartquotes)
233+
234+
Get the string representation of *bytes*. This function is currently used to
235+
implement :meth:`!bytes.__repr__` in Python.
236+
237+
This function does not do type checking; it is undefined behavior to pass
238+
*bytes* as a non-bytes object or ``NULL``.
239+
240+
If *smartquotes* is true, the representation will use a double-quoted string
241+
instead of single-quoted string when single-quotes are present in *bytes*.
242+
For example, the byte string ``'Python'`` would be represented as
243+
``b"'Python'"`` when *smartquotes* is true, or ``b'\'Python\''`` when it is
244+
false.
245+
246+
On success, this function returns a :term:`strong reference` to a
247+
:class:`str` object containing the representation. On failure, this
248+
returns ``NULL`` with an exception set.
249+
250+
251+
.. c:function:: PyObject *PyBytes_DecodeEscape(const char *s, Py_ssize_t len, const char *errors, Py_ssize_t unicode, const char *recode_encoding)
252+
253+
Unescape a backslash-escaped string *s*. *s* must not be ``NULL``.
254+
*len* must be the size of *s*.
255+
256+
*errors* must be one of ``"strict"``, ``"replace"``, or ``"ignore"``. If
257+
*errors* is ``NULL``, then ``"strict"`` is used by default.
258+
259+
On success, this function returns a :term:`strong reference` to a Python
260+
:class:`bytes` object containing the unescaped string. On failure, this
261+
function returns ``NULL`` with an exception set.
262+
263+
.. versionchanged:: 3.9
264+
*unicode* and *recode_encoding* are now unused.
265+
266+
231267
.. _pybyteswriter:
232268
233269
PyBytesWriter

Doc/c-api/conversion.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ The following functions provide locale-independent string to number conversions.
105105
106106
If ``s`` represents a value that is too large to store in a float
107107
(for example, ``"1e500"`` is such a string on many platforms) then
108-
if ``overflow_exception`` is ``NULL`` return ``Py_INFINITY`` (with
108+
if ``overflow_exception`` is ``NULL`` return :c:macro:`!INFINITY` (with
109109
an appropriate sign) and don't set any exception. Otherwise,
110110
``overflow_exception`` must point to a Python exception object;
111111
raise that exception and return ``-1.0``. In both cases, set

Doc/c-api/file.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,29 @@ the :mod:`io` APIs instead.
9393
.. versionadded:: 3.8
9494
9595
96+
.. c:function:: PyObject *PyFile_OpenCodeObject(PyObject *path)
97+
98+
Open *path* with the mode ``'rb'``. *path* must be a Python :class:`str`
99+
object. The behavior of this function may be overridden by
100+
:c:func:`PyFile_SetOpenCodeHook` to allow for some preprocessing of the
101+
text.
102+
103+
This is analogous to :func:`io.open_code` in Python.
104+
105+
On success, this function returns a :term:`strong reference` to a Python
106+
file object. On failure, this function returns ``NULL`` with an exception
107+
set.
108+
109+
.. versionadded:: 3.8
110+
111+
112+
.. c:function:: PyObject *PyFile_OpenCode(const char *path)
113+
114+
Similar to :c:func:`PyFile_OpenCodeObject`, but *path* is a
115+
UTF-8 encoded :c:expr:`const char*`.
116+
117+
.. versionadded:: 3.8
118+
96119
97120
.. c:function:: int PyFile_WriteObject(PyObject *obj, PyObject *p, int flags)
98121

0 commit comments

Comments
 (0)