Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
192 commits
Select commit Hold shift + click to select a range
3de7cc1
Pre-commit: Drop specific language version and bump hooks (#128801)
ZeroIntensity Jan 18, 2025
fba475a
gh-121542: Document trailing newline behavior in `set_content()` (#12…
ZeroIntensity Jan 18, 2025
e8092e5
gh-128998: Fix indentation of numbered list and literal block (#128999)
rffontenelle Jan 18, 2025
61b35f7
gh-128991: Release the enter frame reference within bdb callback (#12…
gaogaotiantian Jan 18, 2025
5aaf416
gh-80222: Fix email address header folding with long quoted-string (#…
medmunds Jan 19, 2025
6c52ada
gh-100239: Handle NaN and zero division in guards for `BINARY_OP_EXTE…
Eclips4 Jan 19, 2025
d57b2d8
gh-77782: Postpone Py_VerboseFlag removal to Python 3.15 (#129024)
vstinner Jan 19, 2025
bbeb219
Complete doc of pending C API removals in Python 3.15 (#129032)
vstinner Jan 19, 2025
c9c9fcb
gh-118761: Improve the import time of ``gettext`` (#128898)
eli-schwartz Jan 20, 2025
3b6a27c
gh-118761: Redudce the import time of ``optparse`` (#128899)
eli-schwartz Jan 20, 2025
bca35f0
gh-129020: Remove ambiguous sentence from `tokenize.untokenize` docs …
tomasr8 Jan 20, 2025
d46b577
GH-125722: Increase minimum supported Sphinx to 8.1.3 (#128922)
AA-Turner Jan 20, 2025
4967fa6
GH-125722: Use long options for Sphinx (#129039)
AA-Turner Jan 20, 2025
887f2bc
gh-71339: Use assertIsSubclass() and assertNotIsSubclass() in test_co…
serhiy-storchaka Jan 20, 2025
89c401f
gh-71339: Use new assertion methods in test_functools (GH-128829)
serhiy-storchaka Jan 20, 2025
da122b5
gh-71339: Improve error report for types in assertHasAttr() and asser…
serhiy-storchaka Jan 20, 2025
36aaf41
gh-71339: Use new assertion methods in test_abc (GH-128826)
serhiy-storchaka Jan 20, 2025
485d2e8
gh-71339: Use assertIsSubclass() and assertNotIsSubclass() in test_de…
serhiy-storchaka Jan 20, 2025
c463270
gh-71339: Use new assertion methods in test_traceback (GH-128848)
serhiy-storchaka Jan 20, 2025
07c3518
gh-129033: Remove _Py_InitializeMain() function (#129034)
vstinner Jan 20, 2025
9b1c181
Fix a typo in `syslog`'s error message (#129029)
tomasr8 Jan 20, 2025
a429159
Reorganize the PyInitConfig documentation (#129047)
vstinner Jan 20, 2025
6f167d7
gh-128595: Default to stdout isatty for colour detection instead of s…
hugovk Jan 20, 2025
c6b570e
gh-71339: Use new assertion methods in `test_asyncio` (#129051)
serhiy-storchaka Jan 20, 2025
4d0a659
gh-128360: Add `_Py_AssertHoldsTstate` as assertion for holding a thr…
ZeroIntensity Jan 20, 2025
537296c
gh-111178: Generate correct signature for most self converters (#128447)
erlend-aasland Jan 20, 2025
a30277a
gh-71339: Use new assertion methods in test_capi (GH-129053)
serhiy-storchaka Jan 20, 2025
da0f47c
gh-111178: Regen clinic and fix exceptions.c post gh-128447 (#129060)
erlend-aasland Jan 20, 2025
59fcae7
Remove duplicated dict keys in `test_{embed,long}.py` fixtures (#128727)
picnixz Jan 20, 2025
df66ff1
gh-128978: Fix a `NameError` in `sysconfig.expand_makefile_vars` (#12…
picnixz Jan 20, 2025
38c3cf6
gh-71339: Use new assertion methods in test_ctypes (GH-129054)
serhiy-storchaka Jan 20, 2025
573c181
Add Configuration Options table to PyInitConfig API doc (#129062)
vstinner Jan 20, 2025
8ceb6cb
gh-129033: Remove _PyInterpreterState_SetConfig() function (#129048)
vstinner Jan 20, 2025
e1fa2fc
gh-129044: Update glossary entry for 'loader' to reflect current impo…
nikalinov Jan 20, 2025
f0f7b97
GH-128939: Refactor JIT optimize structs (GH-128940)
markshannon Jan 20, 2025
e792f4b
Docs C API: Clarify what happens when null bytes are passed to `PyUni…
ZeroIntensity Jan 20, 2025
6e02096
gh-118915: C API: Document compiler flag macros (GH-129028)
ZeroIntensity Jan 20, 2025
6c914bf
Move to public Linux arm64 hosted runners (#128964)
diegorusso Jan 20, 2025
38a9956
gh-128308: pass `**kwargs` to asyncio task_factory (#128768)
graingert Jan 20, 2025
0a6412f
GH-129064: deprecate sysconfig.expand_makefile_vars (#129082)
FFY00 Jan 20, 2025
ab61d3f
GH-128914: Remove conditional stack effects from `bytecodes.c` and th…
markshannon Jan 20, 2025
ed6934e
gh-128588: gh-128550: remove eager tasks optimization that missed and…
graingert Jan 20, 2025
dda02eb
GH-128131: Completely support random read access of uncompressed unen…
5ec1cff Jan 20, 2025
5d57959
gh-91279: ZipFile.writestr now respect SOURCE_DATE_EPOCH (#124435)
Wulian233 Jan 20, 2025
da36bcc
doc: fix venv creating for the local Python using uv (#129094)
FFY00 Jan 20, 2025
382340d
doc: add social cards generation support in sphinxext-opengraph (#129…
FFY00 Jan 20, 2025
5ed5572
gh-111178: fix UBSan failures in `Modules/_multiprocessing/semaphore.…
picnixz Jan 20, 2025
e52ab56
GH-92897: schedule the check_home deprecation to 3.15 (#129102)
FFY00 Jan 20, 2025
f3980af
Add Adam Turner to CODEOWNERS (#129104)
AA-Turner Jan 20, 2025
e54ac3b
GH-121970: Extract ``changes`` into a new extension (#129105)
AA-Turner Jan 20, 2025
e65a1eb
Revert "doc: add social cards generation support in sphinxext-opengra…
AA-Turner Jan 20, 2025
417f7a9
gh-128595: Fix `test__colorize` unexpected keyword argument 'file' on…
hugovk Jan 21, 2025
da310d2
Docs: fix typo in `Doc/howto/mro.rst` (GH-129095)
smelnikov Jan 21, 2025
f7cc7d2
gh-71339: Use new assertion methods in test_import and test_importlib…
serhiy-storchaka Jan 21, 2025
7239da7
GH-127953: Make line number lookup O(1) regardless of the size of the…
markshannon Jan 21, 2025
d3b1bb2
gh-128156: Guard use of `ffi_type_complex_double` on macOS system lib…
encukou Jan 21, 2025
f5b6356
GH-128563: Add new frame owner type for interpreter entry frames (GH-…
markshannon Jan 21, 2025
bf150f6
gh-126349: test_turtle: Add cleanup to avoid reference leaks (GH-129079)
encukou Jan 21, 2025
36f341c
gh-127787: allow retrieving the clipped slice length in `_PyUnicodeEr…
picnixz Jan 21, 2025
fafc618
gh-111178: fix UBSan failures in `Modules/_ctypes` (#129071)
picnixz Jan 21, 2025
80189ff
Remove PyInit__imp() function (#129125)
vstinner Jan 21, 2025
01de4af
gh-126925: Make PyConfig.use_system_logger read-only (#129124)
vstinner Jan 21, 2025
6a0f915
gh-129064: Fix RST markup for the NEWS and What's New entries (#129131)
picnixz Jan 21, 2025
31f149d
gh-128679: Use _PyThreadState_GET() in tracemalloc.c (#129126)
vstinner Jan 21, 2025
5809b25
gh-128563: Move lltrace into the frame struct (GH-129113)
Fidget-Spinner Jan 21, 2025
4b37a6b
gh-71339: Fix an order-dependent failure in test_unittest (GH-129133)
serhiy-storchaka Jan 21, 2025
13475e0
gh-128889: Zero out memory ctypes for generated struct layout tests (…
encukou Jan 21, 2025
05d12ee
gh-127873: Only check `sys.flags.ignore_environment` for `PYTHON*` en…
hugovk Jan 21, 2025
3d7c0e5
gh-129141: Fix build on gcc-9.4.0 (GH-129142)
mdboom Jan 21, 2025
01d9150
GH-128520: Make `pathlib._abc.WritablePath` a sibling of `ReadablePat…
barneygale Jan 21, 2025
a4760ef
gh-128720: Fix doc inacurracy about __main__.__file__ existence in th…
wimglenn Jan 21, 2025
7ad793e
gh-125553: Fix backslash continuation in `untokenize` (#126010)
tomasr8 Jan 21, 2025
6105846
gh-122845: fix parameter_list_starargs in function definition pseudo-…
skirpichev Jan 21, 2025
f18b226
gh-126172: Fix a misleading statement in PYTHON_BASIC_REPL documentat…
mkashirin Jan 21, 2025
d147e5e
gh-126332: Fix pyrepl crash for double ctrl-z in line overflow (#126650)
eendebakpt Jan 21, 2025
5a9afe2
gh-123024: Correctly prepare/restore around help and show-history com…
lysnikolaou Jan 21, 2025
29caec6
gh-118878: Pyrepl: show completions menu below the current line (#118…
danielhollas Jan 21, 2025
01bcf13
GH-121970: Extract ``pydoc_topics`` into a new extension (#129116)
AA-Turner Jan 21, 2025
767cf70
gh-129093: Fix f-string debug text sometimes getting cut off when exp…
tomasr8 Jan 22, 2025
86c1a60
gh-128563: Move GO_TO_INSTRUCTION and PREDICT to cases generator (GH-…
Fidget-Spinner Jan 22, 2025
edf8033
gh-128902: Fix check for fallthrough attribute support (#128903)
jmroot Jan 22, 2025
a65f802
gh-61103: Add What's New entry for complex types in ctypes (GH-129129)
encukou Jan 22, 2025
470a0a6
GH-128682: Change a couple of functions to only steal references on s…
markshannon Jan 22, 2025
9012fa7
gh-128863: Deprecate private C API functions (#128864)
vstinner Jan 22, 2025
a9f5edb
gh-129158: Ensure we restore unix_events.can_use_pidfd after Subproce…
pablogsal Jan 22, 2025
a16ded1
gh-128894: Fix `TracebackException._format_syntax_error` on custom `S…
sobolevn Jan 22, 2025
24c84d8
gh-128770: fix ResourceWarning in test_pyrepl (#128906)
graingert Jan 22, 2025
8e20e42
gh-125723: Fix crash with f_locals when generator frame outlive thei…
efimov-mikhail Jan 22, 2025
2ed5ee9
gh-129158: Fix unwanted trailing whitespace in test_asyncio.test_subp…
ambv Jan 22, 2025
ba9a4b6
gh-128636: Fix crash in PyREPL when `os.environ` is overwritten with …
tomasr8 Jan 22, 2025
60a3a0d
gh-124363: Treat debug expressions in f-string as raw strings (#128399)
pablogsal Jan 22, 2025
1885988
GH-91048: Add utils for capturing async call stack for asyncio progra…
1st1 Jan 22, 2025
67d804b
GH-91048: Don't attempt to run on FreeBSD (#129189)
ambv Jan 22, 2025
fc6d4b7
gh-129192: Use `EnvironmentVarGuard` to restore environment variables…
Eclips4 Jan 22, 2025
298dda5
Add colour to GitHub Actions output (#129196)
hugovk Jan 22, 2025
960936f
gh-128627: Emscripten: Fix address calculation for wasm-gc trampoline…
hoodmane Jan 23, 2025
719c9dd
gh-119182: Use public PyUnicodeWriter in time_strftime() (#129207)
vstinner Jan 23, 2025
327a257
gh-119182: Use public PyUnicodeWriter in wrap_strftime() (#129206)
vstinner Jan 23, 2025
8eb9e76
gh-119182: Use public PyUnicodeWriter in ast_unparse.c (#129208)
vstinner Jan 23, 2025
0093a31
gh-119182: Use public PyUnicodeWriter in Python-ast.c (#129209)
vstinner Jan 23, 2025
1d485db
gh-128863: Deprecate _PyLong_Sign() function (#129176)
vstinner Jan 23, 2025
d7d066c
gh-127936, PEP 757: Convert marshal module to use import/export API f…
skirpichev Jan 23, 2025
a10f993
Revert "GH-128914: Remove conditional stack effects from `bytecodes.c…
colesbury Jan 23, 2025
70dcc84
gh-126004: Fix positions handling in `codecs.xmlcharrefreplace_errors…
picnixz Jan 23, 2025
225296c
gh-126004: Fix positions handling in `codecs.replace_errors` (#127674)
picnixz Jan 23, 2025
46c7e13
gh-129185: Fix PyTraceMalloc_Untrack() at Python exit (#129191)
vstinner Jan 23, 2025
e579cdb
gh-129185: Remove internal TRACE_RAW_MALLOC macro (#129218)
vstinner Jan 23, 2025
5c9a63f
gh-128863: Deprecate _PyLong_New() function (#129212)
skirpichev Jan 23, 2025
25a614a
gh-126004: Fix positions handling in `codecs.backslashreplace_errors`…
picnixz Jan 23, 2025
75f59bb
gh-101410: support custom messages for domain errors in the math modu…
skirpichev Jan 23, 2025
ab353b3
gh-129149: Add fast path in PYLONG_FROM_UINT macro for compact intege…
srinivasreddy Jan 23, 2025
a95dca7
gh-118761: Improve import time for `pstats` and `zipfile` (#128981)
picnixz Jan 23, 2025
b23b27b
gh-128690: Update test_embed for getpath.py exec_prefix change (#129137)
vstinner Jan 23, 2025
cf0b2da
gh-126004: Remove redundant safeguards for codecs handlers tests (#12…
picnixz Jan 23, 2025
ec91e1c
gh-128479: fix asyncio staggered race leaking tasks, and logging unha…
graingert Jan 23, 2025
0b15d9c
gh-128330: Terminal control characters should be restored on repl exi…
citrus-it Jan 23, 2025
c05a851
gh-91048: Improve example in `asyncio-graph.rst` doc (#129224)
sobolevn Jan 23, 2025
dbb25ce
gh-71339: Use new assertion methods in test_idle (#129213)
terryjreedy Jan 23, 2025
fc3d400
gh-91048: Also clear and set ts->asyncio_running_task with eager task…
ambv Jan 23, 2025
bab8918
gh-109975: Add list of 3.13 removed library replacements (#127816)
youknowone Jan 23, 2025
732670d
gh-119182: Use public PyUnicodeWriter in stringio.c (#129243)
vstinner Jan 23, 2025
36bb229
gh-129173: Use `_PyUnicodeError_GetParams` in `PyCodec_IgnoreErrors` …
picnixz Jan 24, 2025
c005ea4
gh-129185: Use PyMutex in tracemalloc (#129246)
vstinner Jan 24, 2025
6e63c47
gh-119182: Use public PyUnicodeWriter in _json.c (#129249)
vstinner Jan 24, 2025
3d8fc8b
gh-127937: Convert decimal to use PEP 757 import API (#127925)
skirpichev Jan 24, 2025
233fd00
gh-128863: Deprecate _PyLong_FromDigits() function (#127939)
skirpichev Jan 24, 2025
fc6bc1e
gh-129185: Simplify PyTraceMalloc_Track() (#129256)
vstinner Jan 24, 2025
8e0b360
gh-128002: use `_PyObject_SetMaybeWeakref` when creating tasks in asy…
kumaraditya303 Jan 24, 2025
7907203
Improve tests for _colorize.can_colorize() (#129234)
serhiy-storchaka Jan 24, 2025
e635bf2
gh-128002: fix `test_all_tasks_different_thread` in asyncio (#129267)
kumaraditya303 Jan 24, 2025
3a3a6b8
gh-129223: Do not allow the compiler to optimise away symbols for deb…
pablogsal Jan 24, 2025
9abbb58
gh-112713 : Add support for 'partitioned' attribute in http.cookies (…
giles-v Jan 24, 2025
f10b7b2
gh-111178: fix UBSan failures in `Modules/cjkcodecs/multibytecodec.c`…
picnixz Jan 25, 2025
d40692d
GH-125722: Remove Sphinx patches (#129277)
AA-Turner Jan 25, 2025
a580838
gh-129248: Filter out the iOS log prefix from testbed runner output. …
freakboy3742 Jan 25, 2025
cc4f0a2
Replace `strict_concatenate = True` with `extra_checks = True` (#126391)
sobolevn Jan 25, 2025
8fecb9f
Remove unused DPRINTF in ceval.c (GH-129282)
chris-eibl Jan 25, 2025
9682a88
gh-126022: make license.rst consistent with LICENSE (#128516)
partev Jan 25, 2025
9e52e55
gh-129244: Remove workaround for MSVC compiler crash (#129263)
mdboom Jan 25, 2025
c39ae89
gh-128799: Add frame of except* to traceback when wrapping a naked ex…
iritkatriel Jan 25, 2025
e119526
gh-126022: make license.rst consistent with LICENSE: fix underline (#…
hugovk Jan 25, 2025
7a54a65
gh-129271: Fix reference leak with unicode writer in fast path in the…
pablogsal Jan 25, 2025
be98fda
gh-129223: Raise KeyError in search_map_for_section() if not found (#…
vstinner Jan 25, 2025
3f2cfd0
gh-128421: make exception group methods thread safe (#129298)
kumaraditya303 Jan 25, 2025
0ef8d47
GH-121970: Remove pyspecific ``PyDecoratorMixin`` patches (#129306)
AA-Turner Jan 26, 2025
1ed4487
gh-129205: Add os.readinto() API for reading data into a caller provi…
cmaloney Jan 26, 2025
a156b19
gh-126022: Remove zope.org from the permitted linkcheck redirects (#1…
partev Jan 26, 2025
fccbfc4
gh-129195: use `future_add_to_awaited_by/future_discard_from_awaited_…
graingert Jan 26, 2025
b543b32
gh-123987: Fix NotADirectoryError in NamespaceReader when sentinel pr…
jaraco Jan 26, 2025
5d9b620
gh-126107: Remove copyright block from Modules/config.c.in (#126982)
donbarbos Jan 26, 2025
914c232
gh-127096: Do not recreate unnamed section on every read in ConfigPar…
PalmtopTiger Jan 26, 2025
a8dc6d6
gh-115911: Ignore PermissionError during import from cwd (#116131)
moreati Jan 26, 2025
a49225c
gh-129156: Fix variable quoting in `android-env.sh` script (#129321)
zanieb Jan 27, 2025
7d27561
gh-124703: Do not raise an exception when quitting pdb (#124704)
gaogaotiantian Jan 27, 2025
87fb8b1
gh-128563: Move labels in ceval.c to bytecodes.c (GH-129112)
Fidget-Spinner Jan 27, 2025
11148e9
gh-102471: Credit Sergey B Kirpichev for PEP 757 (#129338)
vstinner Jan 27, 2025
7ec1742
gh-102471: Change PyLongWriter_Discard(NULL) to do nothing (#129339)
vstinner Jan 27, 2025
3fb5f6e
gh-128509: Add `PyUnstable_IsImmortal` for finding immortal objects (…
ZeroIntensity Jan 27, 2025
735f25c
gh-119511: Fix a potential denial of service in imaplib (#119514)
serhiy-storchaka Jan 27, 2025
922cfec
gh-111178: fix UBSan failures in `Modules/{blake2,md5,sha1,sha2,sha3}…
picnixz Jan 27, 2025
6bb03c7
gh-111178: fix UBSan failures in `Modules/socketmodule.c` (GH-128249)
picnixz Jan 27, 2025
ced296d
gh-111178: fix UBSan failures in `Python/traceback.c` (GH-128259)
picnixz Jan 27, 2025
d6f010d
gh-111178: fix UBSan failures in `Modules/_decimal` (GH-129074)
picnixz Jan 27, 2025
9546fe2
gh-129061: Fix `FORCE_COLOR` and `NO_COLOR` when empty strings (#129140)
hugovk Jan 27, 2025
a5075cd
gh-119786: Fix small typo in AST to CFG to bytecode section in compil…
sergey-miryanov Jan 27, 2025
d8e16ef
Cleanup What's New in Python 3.14 (C API changes) (#129341)
vstinner Jan 27, 2025
8ec76d9
gh-128427: Add `uuid.NIL` and `uuid.MAX` (#128429)
ngnpope Jan 27, 2025
75b4962
GH-128914: Remove all but one conditional stack effects (GH-129226)
markshannon Jan 27, 2025
8a5a18a
gh-129205: Modernize test_eintr (#129316)
vstinner Jan 27, 2025
a6a8c6f
gh-128954: Reorder _PyInterpreterFrame fields for reduced memory usag…
colesbury Jan 27, 2025
379ab85
gh-129346: Handle allocation errors for SQLite aggregate context (#12…
erlend-aasland Jan 27, 2025
1c3bb20
gh-85046: Document errno constants (#126420)
rruuaanng Jan 28, 2025
8e57877
gh-127146: Update test skips for Emscripten 4.0.1 (#129375)
hoodmane Jan 28, 2025
4d0d24f
gh-112064: Fix incorrect handling of negative read sizes in `HTTPResp…
manushkin Jan 28, 2025
180ee43
gh-129005: Avoid copy in _pyio.FileIO.readinto() (#129324)
cmaloney Jan 28, 2025
7dd0a7e
gh-129408: http: Fix typo 'RFF' to RFC' in documentation (#129411)
Mulugruntz Jan 28, 2025
d23f570
gh-128844: Make `_Py_TryIncref` public as an unstable API. (#128926)
colesbury Jan 28, 2025
a4459c3
GH-127381: pathlib ABCs: remove `JoinablePath.match()` (#129147)
barneygale Jan 28, 2025
64c417d
gh-112075: Remove critical section in dict.get (gh-129336)
eendebakpt Jan 28, 2025
7893908
gh-127146: Skip test_readinto_non_blocking on Emscripten (#129421)
hoodmane Jan 28, 2025
5c930a2
gh-115999: Enable free-threaded specialization of LOAD_CONST (#129365)
Yhg1s Jan 29, 2025
828b276
GH-126599: Remove the PyOptimizer API (GH-129194)
brandtbucher Jan 29, 2025
41ad2bb
GH-128563: Don't leave frame->lltrace uninitialized (GH-129417)
brandtbucher Jan 29, 2025
1a80214
gh-126703: Add freelists for list and tuple iterators (GH-128592)
eendebakpt Jan 29, 2025
03d9cdb
Merge TSAN test matrices in CI (#123278)
webknjaz Jan 29, 2025
4815131
gh-100239: specialize bitwise logical binary ops on ints (#128927)
iritkatriel Jan 29, 2025
97b0ef0
gh-129409: Fix Integer overflow - SEGV while writing data more than …
srinivasreddy Jan 29, 2025
c67afb5
CI: Change job name to 'build arm64' on Windows (#129434)
hugovk Jan 29, 2025
25cf79a
gh-129345: null check for indent syslogmodule (#129348)
wooffie Jan 29, 2025
3a974e3
gh-129296: Fix `pyatomic.h` include paths (#129320)
zanieb Jan 29, 2025
a292216
gh-127119: Faster check for small ints in long_dealloc (GH-127620)
eendebakpt Jan 29, 2025
5ff2fbc
gh-129236: Use `stackpointer` in free threaded GC (#129240)
colesbury Jan 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 15 additions & 3 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
# https://git-scm.com/docs/gitignore#_pattern_format

# GitHub
.github/** @ezio-melotti @hugovk
.github/** @ezio-melotti @hugovk @AA-Turner

# pre-commit
.pre-commit-config.yaml @hugovk @AlexWaygood
.ruff.toml @hugovk @AlexWaygood
.ruff.toml @hugovk @AlexWaygood @AA-Turner

# Build system
configure* @erlend-aasland @corona10
Expand Down Expand Up @@ -56,6 +56,14 @@ Tools/c-analyzer/ @ericsnowcurrently
# dbm
**/*dbm* @corona10 @erlend-aasland @serhiy-storchaka

# Doc/ tools
Doc/conf.py @AA-Turner @hugovk
Doc/Makefile @AA-Turner @hugovk
Doc/make.bat @AA-Turner @hugovk
Doc/requirements.txt @AA-Turner @hugovk
Doc/_static/** @AA-Turner @hugovk
Doc/tools/** @AA-Turner @hugovk

# runtime state/lifecycle
**/*pylifecycle* @ericsnowcurrently
**/*pystate* @ericsnowcurrently
Expand Down Expand Up @@ -293,6 +301,10 @@ Lib/configparser.py @jaraco
Lib/test/test_configparser.py @jaraco

# Doc sections
Doc/reference/ @willingc
Doc/reference/ @willingc @AA-Turner

**/*weakref* @kumaraditya303

# Colorize
Lib/_colorize.py @hugovk
Lib/test/test__colorize.py @hugovk
4 changes: 2 additions & 2 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
self-hosted-runner:
labels: ["ubuntu-24.04-aarch64", "windows-aarch64"]
labels: ["windows-aarch64"]

config-variables: null

paths:
.github/workflows/**/*.yml:
ignore:
- 1st argument of function call is not assignable
- SC2(015|038|086|091|097|098|129|155)
- SC2(015|038|086|091|097|098|129|155)
37 changes: 14 additions & 23 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}-reusable
cancel-in-progress: true

env:
FORCE_COLOR: 1

jobs:
check_source:
name: Change detection
Expand Down Expand Up @@ -244,17 +247,13 @@ jobs:
- true
os:
- ubuntu-24.04
- ubuntu-24.04-aarch64
is-fork: # only used for the exclusion trick
- ${{ github.repository_owner != 'python' }}
- ubuntu-24.04-arm
exclude:
- os: ubuntu-24.04-aarch64
is-fork: true
# Do not test BOLT with free-threading, to conserve resources
- bolt: true
free-threading: true
# BOLT currently crashes during instrumentation on aarch64
- os: ubuntu-24.04-aarch64
- os: ubuntu-24.04-arm
bolt: true
uses: ./.github/workflows/reusable-ubuntu.yml
with:
Expand Down Expand Up @@ -513,26 +512,20 @@ jobs:
run: xvfb-run make ci

build_tsan:
name: 'Thread sanitizer'
needs: check_source
if: needs.check_source.outputs.run_tests == 'true'
uses: ./.github/workflows/reusable-tsan.yml
with:
config_hash: ${{ needs.check_source.outputs.config_hash }}
options: ./configure --config-cache --with-thread-sanitizer --with-pydebug
suppressions_path: Tools/tsan/supressions.txt
tsan_logs_artifact_name: tsan-logs-default

build_tsan_free_threading:
name: 'Thread sanitizer (free-threading)'
name: >-
Thread sanitizer
${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
needs: check_source
if: needs.check_source.outputs.run_tests == 'true'
strategy:
matrix:
free-threading:
- false
- true
uses: ./.github/workflows/reusable-tsan.yml
with:
config_hash: ${{ needs.check_source.outputs.config_hash }}
options: ./configure --config-cache --disable-gil --with-thread-sanitizer --with-pydebug
suppressions_path: Tools/tsan/suppressions_free_threading.txt
tsan_logs_artifact_name: tsan-logs-free-threading
free-threading: ${{ matrix.free-threading }}

# CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
cifuzz:
Expand Down Expand Up @@ -592,7 +585,6 @@ jobs:
- test_hypothesis
- build_asan
- build_tsan
- build_tsan_free_threading
- cifuzz

runs-on: ubuntu-latest
Expand Down Expand Up @@ -626,7 +618,6 @@ jobs:
build_windows,
build_asan,
build_tsan,
build_tsan_free_threading,
'
|| ''
}}
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/jit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

env:
FORCE_COLOR: 1

jobs:
interpreter:
name: Interpreter (Debug)
Expand Down Expand Up @@ -83,8 +86,7 @@ jobs:
runner: ubuntu-24.04
- target: aarch64-unknown-linux-gnu/gcc
architecture: aarch64
# Forks don't have access to our paid AArch64 runners. These jobs are skipped below:
runner: ${{ github.repository_owner == 'python' && 'ubuntu-24.04-aarch64' || 'ubuntu-24.04' }}
runner: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -123,8 +125,7 @@ jobs:
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3

- name: Native Linux
# Forks don't have access to our paid AArch64 runners. Skip those:
if: runner.os == 'Linux' && (matrix.architecture == 'x86_64' || github.repository_owner == 'python')
if: runner.os == 'Linux'
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
Expand Down
26 changes: 3 additions & 23 deletions .github/workflows/reusable-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ jobs:
continue-on-error: true
run: |
set -Eeuo pipefail
# Build docs with the '-n' (nit-picky) option; write warnings to file
make -C Doc/ PYTHON=../python SPHINXOPTS="-q -n -W --keep-going -w sphinx-warnings.txt" html
# Build docs with the nit-picky option; write warnings to file
make -C Doc/ PYTHON=../python SPHINXOPTS="--quiet --nitpicky --fail-on-warning --keep-going --warning-file sphinx-warnings.txt" html
- name: 'Check warnings'
if: github.event_name == 'pull_request'
run: |
Expand All @@ -76,26 +76,6 @@ jobs:
--fail-if-improved \
--fail-if-new-news-nit

# This build doesn't use problem matchers or check annotations
build_doc_oldest_supported_sphinx:
name: 'Docs (Oldest Sphinx)'
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: 'Set up Python'
uses: actions/setup-python@v5
with:
python-version: '3.13' # known to work with Sphinx 7.2.6
cache: 'pip'
cache-dependency-path: 'Doc/requirements-oldest-sphinx.txt'
- name: 'Install build dependencies'
run: make -C Doc/ venv REQUIREMENTS="requirements-oldest-sphinx.txt"
- name: 'Build HTML documentation'
run: make -C Doc/ SPHINXOPTS="-q" SPHINXERRORHANDLING="-W --keep-going" html

# Run "doctest" on HEAD as new syntax doesn't exist in the latest stable release
doctest:
name: 'Doctest'
Expand All @@ -121,4 +101,4 @@ jobs:
run: make -C Doc/ PYTHON=../python venv
# Use "xvfb-run" since some doctest tests open GUI windows
- name: 'Run documentation doctest'
run: xvfb-run make -C Doc/ PYTHON=../python SPHINXERRORHANDLING="-W --keep-going" doctest
run: xvfb-run make -C Doc/ PYTHON=../python SPHINXERRORHANDLING="--fail-on-warning --keep-going" doctest
3 changes: 3 additions & 0 deletions .github/workflows/reusable-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ on:
required: true
type: string

env:
FORCE_COLOR: 1

jobs:
build_macos:
name: build and test (${{ inputs.os }})
Expand Down
42 changes: 25 additions & 17 deletions .github/workflows/reusable-tsan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,20 @@ on:
config_hash:
required: true
type: string
options:
required: true
type: string
suppressions_path:
description: 'A repo relative path to the suppressions file'
required: true
type: string
tsan_logs_artifact_name:
description: 'Name of the TSAN logs artifact. Must be unique for each job.'
required: true
type: string
free-threading:
description: Whether to use free-threaded mode
required: false
type: boolean
default: false

env:
FORCE_COLOR: 1

jobs:
build_tsan_reusable:
name: 'Thread sanitizer'
runs-on: ubuntu-24.04
timeout-minutes: 60
env:
OPTIONS: ${{ inputs.options }}
SUPPRESSIONS_PATH: ${{ inputs.suppressions_path }}
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -52,7 +46,11 @@ jobs:
sudo sysctl -w vm.mmap_rnd_bits=28
- name: TSAN Option Setup
run: |
echo "TSAN_OPTIONS=log_path=${GITHUB_WORKSPACE}/tsan_log suppressions=${GITHUB_WORKSPACE}/${SUPPRESSIONS_PATH} handle_segv=0" >> "$GITHUB_ENV"
echo "TSAN_OPTIONS=log_path=${GITHUB_WORKSPACE}/tsan_log suppressions=${GITHUB_WORKSPACE}/Tools/tsan/suppressions${{
fromJSON(inputs.free-threading)
&& '_free_threading'
|| ''
}}.txt handle_segv=0" >> "$GITHUB_ENV"
echo "CC=clang" >> "$GITHUB_ENV"
echo "CXX=clang++" >> "$GITHUB_ENV"
- name: Add ccache to PATH
Expand All @@ -64,7 +62,12 @@ jobs:
save: ${{ github.event_name == 'push' }}
max-size: "200M"
- name: Configure CPython
run: "${OPTIONS}"
run: >-
./configure
--config-cache
--with-thread-sanitizer
--with-pydebug
${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
- name: Build CPython
run: make -j4
- name: Display build info
Expand All @@ -78,6 +81,11 @@ jobs:
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.tsan_logs_artifact_name }}
name: >-
tsan-logs-${{
fromJSON(inputs.free-threading)
&& 'free-threading'
|| 'default'
}}
path: tsan_log.*
if-no-files-found: ignore
4 changes: 3 additions & 1 deletion .github/workflows/reusable-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,15 @@ on:
required: true
type: string

env:
FORCE_COLOR: 1

jobs:
build_ubuntu_reusable:
name: build and test (${{ inputs.os }})
timeout-minutes: 60
runs-on: ${{ inputs.os }}
env:
FORCE_COLOR: 1
OPENSSL_VER: 3.0.15
PYTHONSTRICTEXTENSIONBUILD: 1
TERM: linux
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/reusable-wasi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ on:
required: true
type: string

env:
FORCE_COLOR: 1

jobs:
build_wasi_reusable:
name: 'build and test'
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/reusable-windows-msi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ on:
permissions:
contents: read

env:
FORCE_COLOR: 1

jobs:
build:
name: installer for ${{ inputs.arch }}
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/reusable-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@ on:
default: false

env:
FORCE_COLOR: 1
IncludeUwp: >-
true

jobs:
build:
name: 'build and test (${{ inputs.arch }})'
name: ${{ inputs.arch == 'arm64' && 'build' || 'build and test' }} (${{ inputs.arch }})
runs-on: ${{ inputs.os }}
timeout-minutes: 60
env:
Expand Down
10 changes: 4 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.2
rev: v0.9.1
hooks:
- id: ruff
name: Run Ruff (lint) on Doc/
Expand Down Expand Up @@ -29,12 +29,10 @@ repos:
- id: black
name: Run Black on Tools/build/check_warnings.py
files: ^Tools/build/check_warnings.py
language_version: python3.12
args: [--line-length=79]
- id: black
name: Run Black on Tools/jit/
files: ^Tools/jit/
language_version: python3.12

- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
Expand All @@ -51,19 +49,19 @@ repos:
types_or: [c, inc, python, rst]

- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.30.0
rev: 0.31.0
hooks:
- id: check-dependabot
- id: check-github-workflows
- id: check-readthedocs

- repo: https://github.com/rhysd/actionlint
rev: v1.7.4
rev: v1.7.7
hooks:
- id: actionlint

- repo: https://github.com/woodruffw/zizmor-pre-commit
rev: v0.8.0
rev: v1.1.1
hooks:
- id: zizmor

Expand Down
Loading
Loading