Skip to content

Commit fe0bcc3

Browse files
authored
Merge branch 'main' into fix-imap-buffersize-close
2 parents 479b610 + 19270d3 commit fe0bcc3

198 files changed

Lines changed: 3279 additions & 1675 deletions

File tree

Some content is hidden

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

‎.github/CODEOWNERS‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,7 @@ Lib/test/test_*time.py @pganssle @StanFromIreland
432432
Modules/*zoneinfo* @pganssle @StanFromIreland
433433
Modules/*time* @pganssle @StanFromIreland
434434
Python/pytime.c @pganssle @StanFromIreland
435+
Python/_strptime.c @pganssle @StanFromIreland
435436

436437
# Dbm
437438
Doc/library/dbm.rst @corona10 @erlend-aasland @serhiy-storchaka

‎.github/workflows/jit.yml‎

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,24 +87,16 @@ jobs:
8787
./PCbuild/rt.bat ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3
8888
8989
macos:
90-
name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }})
90+
name: aarch64-apple-darwin/clang (${{ matrix.debug && 'Debug' || 'Release' }})
9191

92-
runs-on: ${{ matrix.runner }}
92+
runs-on: macos-26
9393
timeout-minutes: 60
9494
strategy:
9595
fail-fast: false
9696
matrix:
97-
target:
98-
- x86_64-apple-darwin/clang
99-
- aarch64-apple-darwin/clang
10097
debug:
10198
- true
10299
- false
103-
include:
104-
- target: x86_64-apple-darwin/clang
105-
runner: macos-26-intel
106-
- target: aarch64-apple-darwin/clang
107-
runner: macos-26
108100
steps:
109101
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
110102
with:

‎.github/workflows/tail-call.yml‎

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,9 @@ env:
2424

2525
jobs:
2626
macos:
27-
name: ${{ matrix.target }}
28-
runs-on: ${{ matrix.runner }}
27+
name: aarch64-apple-darwin/clang
28+
runs-on: macos-26
2929
timeout-minutes: 60
30-
strategy:
31-
fail-fast: false
32-
matrix:
33-
include:
34-
- target: x86_64-apple-darwin/clang
35-
runner: macos-26-intel
36-
- target: aarch64-apple-darwin/clang
37-
runner: macos-26
3830
steps:
3931
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
4032
with:
@@ -49,7 +41,6 @@ jobs:
4941
- name: Build
5042
run: |
5143
export SDKROOT="$(xcrun --show-sdk-path)"
52-
export PATH="/usr/local/opt/llvm@${{ env.LLVM_VERSION }}/bin:$PATH"
5344
export PATH="/opt/homebrew/opt/llvm@${{ env.LLVM_VERSION }}/bin:$PATH"
5445
CC=clang-${{ env.LLVM_VERSION }} ./configure --with-tail-call-interp
5546
make all --jobs 4

‎.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ Modules/Setup.config
102102
Modules/Setup.local
103103
Modules/Setup.stdlib
104104
Modules/config.c
105+
Modules/config_bootstrap.c
105106
Modules/ld_so_aix
106107
Programs/_freeze_module
107108
Programs/_testembed

‎Doc/c-api/buffer.rst‎

Lines changed: 144 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -284,19 +284,38 @@ The flags that control the logical structure of the memory are listed
284284
in decreasing order of complexity. Note that each flag contains all bits
285285
of the flags below it.
286286

287-
.. tabularcolumns:: |p{0.35\linewidth}|l|l|l|
288-
289-
+-----------------------------+-------+---------+------------+
290-
| Request | shape | strides | suboffsets |
291-
+=============================+=======+=========+============+
292-
| .. c:macro:: PyBUF_INDIRECT | yes | yes | if needed |
293-
+-----------------------------+-------+---------+------------+
294-
| .. c:macro:: PyBUF_STRIDES | yes | yes | NULL |
295-
+-----------------------------+-------+---------+------------+
296-
| .. c:macro:: PyBUF_ND | yes | NULL | NULL |
297-
+-----------------------------+-------+---------+------------+
298-
| .. c:macro:: PyBUF_SIMPLE | NULL | NULL | NULL |
299-
+-----------------------------+-------+---------+------------+
287+
.. stable-abi-note::
288+
289+
These values are available when compiling for the
290+
:ref:`Stable ABI <stable>` since version 3.11.
291+
292+
.. omit-stable-abi-notes::
293+
294+
.. list-table::
295+
:align: left
296+
:widths: auto
297+
:header-rows: 1
298+
299+
* - Request
300+
- shape
301+
- strides
302+
- suboffsets
303+
* - .. c:macro:: PyBUF_INDIRECT
304+
- yes
305+
- yes
306+
- if needed
307+
* - .. c:macro:: PyBUF_STRIDES
308+
- yes
309+
- yes
310+
- NULL
311+
* - .. c:macro:: PyBUF_ND
312+
- yes
313+
- NULL
314+
- NULL
315+
* - .. c:macro:: PyBUF_SIMPLE
316+
- NULL
317+
- NULL
318+
- NULL
300319

301320

302321
.. index:: contiguous, C-contiguous, Fortran contiguous
@@ -308,19 +327,43 @@ C or Fortran :term:`contiguity <contiguous>` can be explicitly requested,
308327
with and without stride information. Without stride information, the buffer
309328
must be C-contiguous.
310329

311-
.. tabularcolumns:: |p{0.35\linewidth}|l|l|l|l|
312-
313-
+-----------------------------------+-------+---------+------------+--------+
314-
| Request | shape | strides | suboffsets | contig |
315-
+===================================+=======+=========+============+========+
316-
| .. c:macro:: PyBUF_C_CONTIGUOUS | yes | yes | NULL | C |
317-
+-----------------------------------+-------+---------+------------+--------+
318-
| .. c:macro:: PyBUF_F_CONTIGUOUS | yes | yes | NULL | F |
319-
+-----------------------------------+-------+---------+------------+--------+
320-
| .. c:macro:: PyBUF_ANY_CONTIGUOUS | yes | yes | NULL | C or F |
321-
+-----------------------------------+-------+---------+------------+--------+
322-
| :c:macro:`PyBUF_ND` | yes | NULL | NULL | C |
323-
+-----------------------------------+-------+---------+------------+--------+
330+
.. stable-abi-note::
331+
332+
These values are available when compiling for the
333+
:ref:`Stable ABI <stable>` since version 3.11.
334+
335+
.. omit-stable-abi-notes::
336+
337+
.. list-table::
338+
:align: left
339+
:widths: auto
340+
:header-rows: 1
341+
342+
* - Request
343+
- shape
344+
- strides
345+
- suboffsets
346+
- contig
347+
* - .. c:macro:: PyBUF_C_CONTIGUOUS
348+
- yes
349+
- yes
350+
- NULL
351+
- C
352+
* - .. c:macro:: PyBUF_F_CONTIGUOUS
353+
- yes
354+
- yes
355+
- NULL
356+
- F
357+
* - .. c:macro:: PyBUF_ANY_CONTIGUOUS
358+
- yes
359+
- yes
360+
- NULL
361+
- C or F
362+
* - :c:macro:`PyBUF_ND`
363+
- yes
364+
- NULL
365+
- NULL
366+
- C
324367

325368

326369
compound requests
@@ -333,27 +376,81 @@ used combinations as single flags.
333376
In the following table *U* stands for undefined contiguity. The consumer would
334377
have to call :c:func:`PyBuffer_IsContiguous` to determine contiguity.
335378

336-
.. tabularcolumns:: |p{0.35\linewidth}|l|l|l|l|l|l|
337-
338-
+-------------------------------+-------+---------+------------+--------+----------+--------+
339-
| Request | shape | strides | suboffsets | contig | readonly | format |
340-
+===============================+=======+=========+============+========+==========+========+
341-
| .. c:macro:: PyBUF_FULL | yes | yes | if needed | U | 0 | yes |
342-
+-------------------------------+-------+---------+------------+--------+----------+--------+
343-
| .. c:macro:: PyBUF_FULL_RO | yes | yes | if needed | U | 1 or 0 | yes |
344-
+-------------------------------+-------+---------+------------+--------+----------+--------+
345-
| .. c:macro:: PyBUF_RECORDS | yes | yes | NULL | U | 0 | yes |
346-
+-------------------------------+-------+---------+------------+--------+----------+--------+
347-
| .. c:macro:: PyBUF_RECORDS_RO | yes | yes | NULL | U | 1 or 0 | yes |
348-
+-------------------------------+-------+---------+------------+--------+----------+--------+
349-
| .. c:macro:: PyBUF_STRIDED | yes | yes | NULL | U | 0 | NULL |
350-
+-------------------------------+-------+---------+------------+--------+----------+--------+
351-
| .. c:macro:: PyBUF_STRIDED_RO | yes | yes | NULL | U | 1 or 0 | NULL |
352-
+-------------------------------+-------+---------+------------+--------+----------+--------+
353-
| .. c:macro:: PyBUF_CONTIG | yes | NULL | NULL | C | 0 | NULL |
354-
+-------------------------------+-------+---------+------------+--------+----------+--------+
355-
| .. c:macro:: PyBUF_CONTIG_RO | yes | NULL | NULL | C | 1 or 0 | NULL |
356-
+-------------------------------+-------+---------+------------+--------+----------+--------+
379+
.. stable-abi-note::
380+
381+
These values are available when compiling for the
382+
:ref:`Stable ABI <stable>` since version 3.11.
383+
384+
.. omit-stable-abi-notes::
385+
386+
.. list-table::
387+
:align: left
388+
:widths: auto
389+
:header-rows: 1
390+
391+
* - Request
392+
- shape
393+
- strides
394+
- suboffsets
395+
- contig
396+
- readonly
397+
- format
398+
* - .. c:macro:: PyBUF_FULL
399+
- yes
400+
- yes
401+
- if needed
402+
- U
403+
- 0
404+
- yes
405+
* - .. c:macro:: PyBUF_FULL_RO
406+
- yes
407+
- yes
408+
- if needed
409+
- U
410+
- 1 or 0
411+
- yes
412+
* - .. c:macro:: PyBUF_RECORDS
413+
- yes
414+
- yes
415+
- NULL
416+
- U
417+
- 0
418+
- yes
419+
* - .. c:macro:: PyBUF_RECORDS_RO
420+
- yes
421+
- yes
422+
- NULL
423+
- U
424+
- 1 or 0
425+
- yes
426+
* - .. c:macro:: PyBUF_STRIDED
427+
- yes
428+
- yes
429+
- NULL
430+
- U
431+
- 0
432+
- NULL
433+
* - .. c:macro:: PyBUF_STRIDED_RO
434+
- yes
435+
- yes
436+
- NULL
437+
- U
438+
- 1 or 0
439+
- NULL
440+
* - .. c:macro:: PyBUF_CONTIG
441+
- yes
442+
- NULL
443+
- NULL
444+
- C
445+
- 0
446+
- NULL
447+
* - .. c:macro:: PyBUF_CONTIG_RO
448+
- yes
449+
- NULL
450+
- NULL
451+
- C
452+
- 1 or 0
453+
- NULL
357454

358455

359456
Complex arrays

‎Doc/c-api/bytes.rst‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ Variant using a pointer to compute the final size::
494494
495495
char *str = PyBytesWriter_GetData(writer);
496496
memcpy(str, "abc", 3);
497-
str += 1;
497+
str += 3;
498498
return PyBytesWriter_FinishWithPointer(writer, str);
499499
}
500500
@@ -543,7 +543,7 @@ Update ``_PyBytes_Resize()`` code
543543
544544
Example of code using the soft deprecated ``_PyBytes_Resize()`` API::
545545
546-
void create_string(Py_ssize_t size)
546+
PyObject* create_string(Py_ssize_t size)
547547
{
548548
PyObject *bytes = PyBytes_FromStringAndSize(NULL, size);
549549
if (bytes == NULL) {
@@ -561,7 +561,7 @@ Example of code using the soft deprecated ``_PyBytes_Resize()`` API::
561561
562562
It can now be updated to::
563563
564-
void create_string(Py_ssize_t size)
564+
PyObject* create_string(Py_ssize_t size)
565565
{
566566
PyBytesWriter *writer = PyBytesWriter_Create(size);
567567
if (writer == NULL) {

‎Doc/c-api/call.rst‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,17 @@ This is a pointer to a function with the following signature:
8181
8282
- *callable* is the object being called.
8383
- *args* is a C array consisting of the positional arguments followed by the
84-
values of the keyword arguments.
85-
This can be *NULL* if there are no arguments.
84+
values of the keyword arguments.
85+
This can be *NULL* if there are no arguments.
8686
- *nargsf* is the number of positional arguments plus possibly the
87-
:c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET` flag.
88-
To get the actual number of positional arguments from *nargsf*,
89-
use :c:func:`PyVectorcall_NARGS`.
87+
:c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET` flag.
88+
To get the actual number of positional arguments from *nargsf*,
89+
use :c:func:`PyVectorcall_NARGS`.
9090
- *kwnames* is a tuple containing the names of the keyword arguments;
91-
in other words, the keys of the kwargs dict.
92-
These names must be strings (instances of ``str`` or a subclass)
93-
and they must be unique.
94-
If there are no keyword arguments, then *kwnames* can instead be *NULL*.
91+
in other words, the keys of the kwargs dict.
92+
These names must be strings (instances of ``str`` or a subclass)
93+
and they must be unique.
94+
If there are no keyword arguments, then *kwnames* can instead be *NULL*.
9595

9696
.. c:macro:: PY_VECTORCALL_ARGUMENTS_OFFSET
9797

‎Doc/c-api/datetime.rst‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ the module initialisation function. The macro puts a pointer to a C structure
1313
into a static variable, :c:data:`PyDateTimeAPI`, that is used by the following
1414
macros.
1515

16-
.. c:macro:: PyDateTime_IMPORT()
16+
.. c:macro:: PyDateTime_IMPORT
1717
1818
Import the datetime C API.
1919

@@ -51,7 +51,7 @@ macros.
5151
.. versionchanged:: 3.15
5252

5353
This variable should not be accessed directly as direct access is not thread-safe.
54-
Use :c:func:`PyDateTime_IMPORT` instead.
54+
Use :c:macro:`PyDateTime_IMPORT` instead.
5555

5656
.. c:type:: PyDateTime_Date
5757

‎Doc/c-api/function.rst‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ There are a few functions specific to Python functions.
193193
194194
.. versionadded:: 3.12
195195
196-
- ``PyFunction_PYFUNC_EVENT_MODIFY_QUALNAME``
196+
- ``PyFunction_EVENT_MODIFY_QUALNAME``
197197
198198
.. versionadded:: 3.15
199199

‎Doc/c-api/gcsupport.rst‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ The :c:member:`~PyTypeObject.tp_traverse` handler must have the following type:
251251
to the handler. The *visit* function must not be called with a ``NULL``
252252
object argument. If *visit* returns a non-zero value, that value should be
253253
returned immediately.
254+
Otherwise, return zero.
254255
255256
A typical :c:member:`!tp_traverse` function calls the :c:func:`Py_VISIT`
256257
convenience macro on each of the instance's members that are Python
@@ -317,6 +318,14 @@ The :c:member:`~PyTypeObject.tp_traverse` handler must have the following type:
317318
For a list of safe functions, see a
318319
:ref:`separate section <duringgc-functions>` below.
319320
321+
If an error occurs during traversal, ignore it and return 0.
322+
If ``tp_traverse`` fails to visit some strong references, garbage reference
323+
cycles involving the skipped references will not be reliably broken,
324+
but correctness won't be affected.
325+
For example, if traversal requires a lock that cannot be acquired promptly,
326+
skip the traversal.
327+
The garbage collector will visit your object again in a future pass.
328+
320329
.. note::
321330
322331
The :c:func:`Py_VISIT` call may be skipped for those members that provably
@@ -362,7 +371,7 @@ implementation must name its arguments exactly *visit* and *arg*:
362371
This corresponds roughly to::
363372
364373
#define Py_VISIT(o) \
365-
if (op) { \
374+
if (o) { \
366375
int visit_result = visit(o, arg); \
367376
if (visit_result != 0) { \
368377
return visit_result; \

0 commit comments

Comments
 (0)