Skip to content

Commit a336f7f

Browse files
Merge branch '3.14' into backport-d6855c8-3.14
2 parents ff14596 + 6f931c9 commit a336f7f

66 files changed

Lines changed: 3199 additions & 1212 deletions

Some content is hidden

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

.github/workflows/reusable-san.yml

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

1818
env:
1919
FORCE_COLOR: 1
20+
OPENSSL_VER: 3.5.7
2021

2122
jobs:
2223
build-san-reusable:
@@ -45,28 +46,53 @@ jobs:
4546
sudo update-alternatives --set clang /usr/bin/clang-20
4647
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-20 100
4748
sudo update-alternatives --set clang++ /usr/bin/clang++-20
48-
49-
if [ "${SANITIZER}" = "TSan" ]; then
50-
# Reduce ASLR to avoid TSan crashing
51-
sudo sysctl -w vm.mmap_rnd_bits=28
52-
fi
53-
54-
- name: Sanitizer option setup
55-
run: |
56-
if [ "${SANITIZER}" = "TSan" ]; then
57-
echo "TSAN_OPTIONS=${SAN_LOG_OPTION} suppressions=${GITHUB_WORKSPACE}/Tools/tsan/suppressions${{
58-
fromJSON(inputs.free-threading)
59-
&& '_free_threading'
60-
|| ''
61-
}}.txt handle_segv=0" >> "$GITHUB_ENV"
62-
else
63-
echo "UBSAN_OPTIONS=${SAN_LOG_OPTION}" >> "$GITHUB_ENV"
64-
fi
6549
echo "CC=clang" >> "$GITHUB_ENV"
6650
echo "CXX=clang++" >> "$GITHUB_ENV"
51+
- name: TSan option setup
52+
if: inputs.sanitizer == 'TSan'
53+
run: |
54+
sudo sysctl -w vm.mmap_rnd_bits=28 # Reduce ASLR to avoid TSan crashing
55+
56+
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
57+
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
58+
echo "TSAN_OPTIONS=${SAN_LOG_OPTION} suppressions=${GITHUB_WORKSPACE}/Tools/tsan/suppressions${SUPPRESSIONS_SUFFIX}.txt handle_segv=0" >> "$GITHUB_ENV"
6759
env:
68-
SANITIZER: ${{ inputs.sanitizer }}
6960
SAN_LOG_OPTION: log_path=${{ github.workspace }}/san_log
61+
SUPPRESSIONS_SUFFIX: >-
62+
${{
63+
fromJSON(inputs.free-threading)
64+
&& '_free_threading'
65+
|| ''
66+
}}
67+
- name: UBSan option setup
68+
if: inputs.sanitizer != 'TSan'
69+
run: >-
70+
echo
71+
"UBSAN_OPTIONS=${SAN_LOG_OPTION}"
72+
>> "$GITHUB_ENV"
73+
env:
74+
SAN_LOG_OPTION: log_path=${{ github.workspace }}/san_log
75+
- name: Add ccache to PATH
76+
run: |
77+
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
78+
- name: 'Restore OpenSSL build (TSan)'
79+
id: cache-openssl
80+
if: inputs.sanitizer == 'TSan'
81+
uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
82+
with:
83+
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
84+
key: ${{ env.IMAGE_OS_VERSION }}-multissl-openssl-tsan-${{ env.OPENSSL_VER }}
85+
- name: Install OpenSSL (TSan)
86+
if: >-
87+
inputs.sanitizer == 'TSan'
88+
&& steps.cache-openssl.outputs.cache-hit != 'true'
89+
run: >-
90+
python3 Tools/ssl/multissltests.py
91+
--steps=library
92+
--base-directory="${MULTISSL_DIR}"
93+
--openssl="${OPENSSL_VER}"
94+
--system=Linux
95+
--tsan
7096
- name: Configure CPython
7197
run: >-
7298
./configure
@@ -77,6 +103,7 @@ jobs:
77103
|| '--with-undefined-behavior-sanitizer'
78104
}}
79105
--with-pydebug
106+
${{ inputs.sanitizer == 'TSan' && '--with-openssl="$OPENSSL_DIR" --with-openssl-rpath=auto' || '' }}
80107
${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
81108
- name: Build CPython
82109
run: make -j4

Doc/library/asyncio-tools.rst

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ The following commands inspect the process identified by ``PID``:
1919

2020
.. code-block:: shell-session
2121
22-
$ python -m asyncio pstree [--retries N] PID
23-
$ python -m asyncio ps [--retries N] PID
22+
$ python -m asyncio pstree PID
23+
$ python -m asyncio ps PID
2424
2525
The commands read the target process state without executing any code in it.
2626
They are only available on supported platforms and may require permission to
27-
inspect another process. See the :ref:`permission-requirements <permission-requirements>` for details.
27+
inspect another process. See the :ref:`permission requirements <permission-requirements>` for details.
2828

2929
.. seealso::
3030

@@ -148,10 +148,3 @@ Command-line options
148148
18445801 0x10a2a38a0 Levitate sleep -> play TaskGroup._aexit -> TaskGroup.__aexit__ -> album Sundowning 0x10a439f60
149149
18445801 0x10a2d7150 DYWTYLM sleep -> play TaskGroup._aexit -> TaskGroup.__aexit__ -> album TMBTE 0x10a439d70
150150
18445801 0x10a6bdaa0 Aqua Regia sleep -> play TaskGroup._aexit -> TaskGroup.__aexit__ -> album TMBTE 0x10a439d70
151-
152-
.. option:: --retries N
153-
154-
Retry failed attempts to inspect the target process up to *N* times. This
155-
can help when the target process changes while its state is being read.
156-
157-
.. versionadded:: 3.15

Doc/library/tkinter.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1986,7 +1986,7 @@ Base and mixin classes
19861986

19871987
.. method:: winfo_exists()
19881988

1989-
Return ``1`` if the widget exists, ``0`` otherwise.
1989+
Return true if the widget exists, false otherwise.
19901990

19911991
.. method:: winfo_fpixels(number)
19921992

@@ -2025,7 +2025,7 @@ Base and mixin classes
20252025

20262026
.. method:: winfo_ismapped()
20272027

2028-
Return ``1`` if the widget is currently mapped, ``0`` otherwise.
2028+
Return true if the widget is currently mapped, false otherwise.
20292029

20302030
.. method:: winfo_manager()
20312031

@@ -2156,8 +2156,8 @@ Base and mixin classes
21562156

21572157
.. method:: winfo_viewable()
21582158

2159-
Return ``1`` if the widget and all of its ancestors up through the
2160-
nearest toplevel window are mapped, ``0`` otherwise.
2159+
Return true if the widget and all of its ancestors up through the
2160+
nearest toplevel window are mapped, false otherwise.
21612161

21622162
.. method:: winfo_visual()
21632163

@@ -5534,7 +5534,7 @@ Widget classes
55345534
.. method:: edit_modified(arg=None)
55355535

55365536
If *arg* is omitted, return the current state of the modified flag as
5537-
``0`` or ``1``; the flag is set automatically whenever the text is
5537+
true or false; the flag is set automatically whenever the text is
55385538
inserted or deleted.
55395539
Otherwise set the flag to the boolean *arg*.
55405540

Doc/tools/.nitignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,4 @@ Doc/library/xml.sax.reader.rst
3838
Doc/library/xml.sax.rst
3939
Doc/library/xmlrpc.client.rst
4040
Doc/library/xmlrpc.server.rst
41-
Doc/whatsnew/2.4.rst
42-
Doc/whatsnew/2.5.rst
4341
Doc/whatsnew/2.6.rst

Doc/using/windows.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1176,9 +1176,9 @@ on using nuget. What follows is a summary that is sufficient for Python
11761176
developers.
11771177

11781178
The ``nuget.exe`` command line tool may be downloaded directly from
1179-
``https://aka.ms/nugetclidl``, for example, using curl or PowerShell. With the
1180-
tool, the latest version of Python for 64-bit or 32-bit machines is installed
1181-
using::
1179+
``https://dist.nuget.org/win-x86-commandline/latest/nuget.exe``, for example,
1180+
using curl or PowerShell. With the tool, the latest version of Python for
1181+
64-bit or 32-bit machines is installed using::
11821182

11831183
nuget.exe install python -ExcludeVersion -OutputDirectory .
11841184
nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .

0 commit comments

Comments
 (0)