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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy