Skip to content

Commit c4bff3d

Browse files
Merge branch 'main' into fix-issue-118524-match-union
2 parents ad89045 + 357f5a1 commit c4bff3d

File tree

622 files changed

+5808
-4233
lines changed

Some content is hidden

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

622 files changed

+5808
-4233
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,11 @@ on:
88
push:
99
branches:
1010
- 'main'
11-
- '3.12'
12-
- '3.11'
13-
- '3.10'
14-
- '3.9'
15-
- '3.8'
11+
- '3.*'
1612
pull_request:
1713
branches:
1814
- 'main'
19-
- '3.12'
20-
- '3.11'
21-
- '3.10'
22-
- '3.9'
23-
- '3.8'
15+
- '3.*'
2416

2517
permissions:
2618
contents: read
@@ -494,6 +486,7 @@ jobs:
494486
config_hash: ${{ needs.check_source.outputs.config_hash }}
495487
options: ./configure --config-cache --with-thread-sanitizer --with-pydebug
496488
suppressions_path: Tools/tsan/supressions.txt
489+
tsan_logs_artifact_name: tsan-logs-default
497490

498491
build_tsan_free_threading:
499492
name: 'Thread sanitizer (free-threading)'
@@ -504,6 +497,7 @@ jobs:
504497
config_hash: ${{ needs.check_source.outputs.config_hash }}
505498
options: ./configure --config-cache --disable-gil --with-thread-sanitizer --with-pydebug
506499
suppressions_path: Tools/tsan/suppressions_free_threading.txt
500+
tsan_logs_artifact_name: tsan-logs-free-threading
507501

508502
# CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
509503
cifuzz:

.github/workflows/jit.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@ on:
55
- '**jit**'
66
- 'Python/bytecodes.c'
77
- 'Python/optimizer*.c'
8+
- '!Python/perf_jit_trampoline.c'
9+
- '!**/*.md'
10+
- '!**/*.ini'
811
push:
912
paths:
1013
- '**jit**'
1114
- 'Python/bytecodes.c'
1215
- 'Python/optimizer*.c'
16+
- '!Python/perf_jit_trampoline.c'
17+
- '!**/*.md'
18+
- '!**/*.ini'
1319
workflow_dispatch:
1420

1521
permissions:

.github/workflows/reusable-tsan.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ on:
1111
description: 'A repo relative path to the suppressions file'
1212
required: true
1313
type: string
14+
tsan_logs_artifact_name:
15+
description: 'Name of the TSAN logs artifact. Must be unique for each job.'
16+
required: true
17+
type: string
1418

1519
jobs:
1620
build_tsan_reusable:
@@ -41,7 +45,7 @@ jobs:
4145
sudo sysctl -w vm.mmap_rnd_bits=28
4246
- name: TSAN Option Setup
4347
run: |
44-
echo "TSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/${{ inputs.suppressions_path }}" >> $GITHUB_ENV
48+
echo "TSAN_OPTIONS=log_path=${GITHUB_WORKSPACE}/tsan_log suppressions=${GITHUB_WORKSPACE}/${{ inputs.suppressions_path }} handle_segv=0" >> $GITHUB_ENV
4549
echo "CC=clang" >> $GITHUB_ENV
4650
echo "CXX=clang++" >> $GITHUB_ENV
4751
- name: Add ccache to PATH
@@ -60,3 +64,13 @@ jobs:
6064
run: make pythoninfo
6165
- name: Tests
6266
run: ./python -m test --tsan -j4
67+
- name: Display TSAN logs
68+
if: always()
69+
run: find ${GITHUB_WORKSPACE} -name 'tsan_log.*' | xargs head -n 1000
70+
- name: Archive TSAN logs
71+
if: always()
72+
uses: actions/upload-artifact@v4
73+
with:
74+
name: ${{ inputs.tsan_logs_artifact_name }}
75+
path: tsan_log.*
76+
if-no-files-found: ignore

Doc/Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ help:
3232
@echo " clean to remove build files"
3333
@echo " venv to create a venv with necessary tools"
3434
@echo " html to make standalone HTML files"
35+
@echo " gettext to generate POT files"
3536
@echo " htmlview to open the index page built by the html target in your browser"
3637
@echo " htmllive to rebuild and reload HTML files in your browser"
3738
@echo " htmlhelp to make HTML files and a HTML help project"
@@ -140,6 +141,11 @@ pydoc-topics: build
140141
@echo "Building finished; now run this:" \
141142
"cp build/pydoc-topics/topics.py ../Lib/pydoc_data/topics.py"
142143

144+
.PHONY: gettext
145+
gettext: BUILDER = gettext
146+
gettext: SPHINXOPTS += '-d build/doctrees-gettext'
147+
gettext: build
148+
143149
.PHONY: htmlview
144150
htmlview: html
145151
$(PYTHON) -c "import os, webbrowser; webbrowser.open('file://' + os.path.realpath('build/html/index.html'))"

Doc/c-api/dict.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ Dictionary Objects
191191
to both *default_value* and *\*result* (if it's not ``NULL``).
192192
These may refer to the same object: in that case you hold two separate
193193
references to it.
194+
194195
.. versionadded:: 3.13
195196
196197

Doc/c-api/object.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Object Protocol
6565
6666
Properly handle returning :c:data:`Py_NotImplemented` from within a C
6767
function (that is, create a new :term:`strong reference`
68-
to NotImplemented and return it).
68+
to :const:`NotImplemented` and return it).
6969
7070
7171
.. c:macro:: Py_PRINT_RAW

Doc/conf.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,8 @@
374374
# Split the index
375375
html_split_index = True
376376

377+
# Split pot files one per reST file
378+
gettext_compact = False
377379

378380
# Options for LaTeX output
379381
# ------------------------
@@ -435,6 +437,10 @@
435437
epub_author = 'Python Documentation Authors'
436438
epub_publisher = 'Python Software Foundation'
437439

440+
# index pages are not valid xhtml
441+
# https://github.com/sphinx-doc/sphinx/issues/12359
442+
epub_use_index = False
443+
438444
# Options for the coverage checker
439445
# --------------------------------
440446

Doc/library/__future__.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
:mod:`__future__` --- Future statement definitions
2-
==================================================
1+
:mod:`!__future__` --- Future statement definitions
2+
===================================================
33

44
.. module:: __future__
55
:synopsis: Future statement definitions

Doc/library/__main__.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
:mod:`__main__` --- Top-level code environment
2-
==============================================
1+
:mod:`!__main__` --- Top-level code environment
2+
===============================================
33

44
.. module:: __main__
55
:synopsis: The environment where top-level code is run. Covers command-line

Doc/library/_thread.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
:mod:`_thread` --- Low-level threading API
2-
==========================================
1+
:mod:`!_thread` --- Low-level threading API
2+
===========================================
33

44
.. module:: _thread
55
:synopsis: Low-level threading API.
@@ -169,14 +169,14 @@ Lock objects have the following methods:
169169
time can acquire a lock --- that's their reason for existence).
170170

171171
If the *blocking* argument is present, the action depends on its
172-
value: if it is False, the lock is only acquired if it can be acquired
173-
immediately without waiting, while if it is True, the lock is acquired
172+
value: if it is false, the lock is only acquired if it can be acquired
173+
immediately without waiting, while if it is true, the lock is acquired
174174
unconditionally as above.
175175

176176
If the floating-point *timeout* argument is present and positive, it
177177
specifies the maximum wait time in seconds before returning. A negative
178178
*timeout* argument specifies an unbounded wait. You cannot specify
179-
a *timeout* if *blocking* is False.
179+
a *timeout* if *blocking* is false.
180180

181181
The return value is ``True`` if the lock is acquired successfully,
182182
``False`` if not.

0 commit comments

Comments
 (0)