Skip to content

Commit c8ee8c3

Browse files
Merge branch 'main' into venv-use-prog
2 parents 4dc832e + d0eb01c commit c8ee8c3

File tree

109 files changed

+3847
-3426
lines changed

Some content is hidden

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

109 files changed

+3847
-3426
lines changed

Doc/c-api/arg.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
Parsing arguments and building values
66
=====================================
77

8-
These functions are useful when creating your own extensions functions and
8+
These functions are useful when creating your own extension functions and
99
methods. Additional information and examples are available in
1010
:ref:`extending-index`.
1111

Doc/c-api/structures.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ under :ref:`reference counting <countingrefs>`.
6363
See documentation of :c:type:`PyVarObject` above.
6464

6565

66+
.. c:var:: PyTypeObject PyBaseObject_Type
67+
68+
The base class of all other objects, the same as :class:`object` in Python.
69+
70+
6671
.. c:function:: int Py_Is(PyObject *x, PyObject *y)
6772
6873
Test if the *x* object is the *y* object, the same as ``x is y`` in Python.

Doc/c-api/unicode.rst

Lines changed: 120 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ Unicode Type
3131
These are the basic Unicode object types used for the Unicode implementation in
3232
Python:
3333

34+
.. c:var:: PyTypeObject PyUnicode_Type
35+
36+
This instance of :c:type:`PyTypeObject` represents the Python Unicode type. It
37+
is exposed to Python code as :py:class:`str`.
38+
39+
3440
.. c:type:: Py_UCS4
3541
Py_UCS2
3642
Py_UCS1
@@ -42,19 +48,6 @@ Python:
4248
.. versionadded:: 3.3
4349

4450

45-
.. c:type:: Py_UNICODE
46-
47-
This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit type
48-
depending on the platform.
49-
50-
.. versionchanged:: 3.3
51-
In previous versions, this was a 16-bit type or a 32-bit type depending on
52-
whether you selected a "narrow" or "wide" Unicode version of Python at
53-
build time.
54-
55-
.. deprecated-removed:: 3.13 3.15
56-
57-
5851
.. c:type:: PyASCIIObject
5952
PyCompactUnicodeObject
6053
PyUnicodeObject
@@ -66,12 +59,6 @@ Python:
6659
.. versionadded:: 3.3
6760

6861

69-
.. c:var:: PyTypeObject PyUnicode_Type
70-
71-
This instance of :c:type:`PyTypeObject` represents the Python Unicode type. It
72-
is exposed to Python code as ``str``.
73-
74-
7562
The following APIs are C macros and static inlined functions for fast checks and
7663
access to internal read-only data of Unicode objects:
7764

@@ -87,16 +74,6 @@ access to internal read-only data of Unicode objects:
8774
subtype. This function always succeeds.
8875
8976
90-
.. c:function:: int PyUnicode_READY(PyObject *unicode)
91-
92-
Returns ``0``. This API is kept only for backward compatibility.
93-
94-
.. versionadded:: 3.3
95-
96-
.. deprecated:: 3.10
97-
This API does nothing since Python 3.12.
98-
99-
10077
.. c:function:: Py_ssize_t PyUnicode_GET_LENGTH(PyObject *unicode)
10178
10279
Return the length of the Unicode string, in code points. *unicode* has to be a
@@ -149,12 +126,16 @@ access to internal read-only data of Unicode objects:
149126
.. c:function:: void PyUnicode_WRITE(int kind, void *data, \
150127
Py_ssize_t index, Py_UCS4 value)
151128
152-
Write into a canonical representation *data* (as obtained with
153-
:c:func:`PyUnicode_DATA`). This function performs no sanity checks, and is
154-
intended for usage in loops. The caller should cache the *kind* value and
155-
*data* pointer as obtained from other calls. *index* is the index in
156-
the string (starts at 0) and *value* is the new code point value which should
157-
be written to that location.
129+
Write the code point *value* to the given zero-based *index* in a string.
130+
131+
The *kind* value and *data* pointer must have been obtained from a
132+
string using :c:func:`PyUnicode_KIND` and :c:func:`PyUnicode_DATA`
133+
respectively. You must hold a reference to that string while calling
134+
:c:func:`!PyUnicode_WRITE`. All requirements of
135+
:c:func:`PyUnicode_WriteChar` also apply.
136+
137+
The function performs no checks for any of its requirements,
138+
and is intended for usage in loops.
158139
159140
.. versionadded:: 3.3
160141
@@ -196,6 +177,14 @@ access to internal read-only data of Unicode objects:
196177
is not ready.
197178
198179
180+
.. c:function:: unsigned int PyUnicode_IS_ASCII(PyObject *unicode)
181+
182+
Return true if the string only contains ASCII characters.
183+
Equivalent to :py:meth:`str.isascii`.
184+
185+
.. versionadded:: 3.2
186+
187+
199188
Unicode Character Properties
200189
""""""""""""""""""""""""""""
201190
@@ -330,11 +319,29 @@ APIs:
330319
to be placed in the string. As an approximation, it can be rounded up to the
331320
nearest value in the sequence 127, 255, 65535, 1114111.
332321
333-
This is the recommended way to allocate a new Unicode object. Objects
334-
created using this function are not resizable.
335-
336322
On error, set an exception and return ``NULL``.
337323
324+
After creation, the string can be filled by :c:func:`PyUnicode_WriteChar`,
325+
:c:func:`PyUnicode_CopyCharacters`, :c:func:`PyUnicode_Fill`,
326+
:c:func:`PyUnicode_WRITE` or similar.
327+
Since strings are supposed to be immutable, take care to not “use” the
328+
result while it is being modified. In particular, before it's filled
329+
with its final contents, a string:
330+
331+
- must not be hashed,
332+
- must not be :c:func:`converted to UTF-8 <PyUnicode_AsUTF8AndSize>`,
333+
or another non-"canonical" representation,
334+
- must not have its reference count changed,
335+
- must not be shared with code that might do one of the above.
336+
337+
This list is not exhaustive. Avoiding these uses is your responsibility;
338+
Python does not always check these requirements.
339+
340+
To avoid accidentally exposing a partially-written string object, prefer
341+
using the :c:type:`PyUnicodeWriter` API, or one of the ``PyUnicode_From*``
342+
functions below.
343+
344+
338345
.. versionadded:: 3.3
339346
340347
@@ -636,6 +643,9 @@ APIs:
636643
possible. Returns ``-1`` and sets an exception on error, otherwise returns
637644
the number of copied characters.
638645
646+
The string must not have been “used” yet.
647+
See :c:func:`PyUnicode_New` for details.
648+
639649
.. versionadded:: 3.3
640650
641651
@@ -648,6 +658,9 @@ APIs:
648658
Fail if *fill_char* is bigger than the string maximum character, or if the
649659
string has more than 1 reference.
650660
661+
The string must not have been “used” yet.
662+
See :c:func:`PyUnicode_New` for details.
663+
651664
Return the number of written character, or return ``-1`` and raise an
652665
exception on error.
653666
@@ -657,15 +670,16 @@ APIs:
657670
.. c:function:: int PyUnicode_WriteChar(PyObject *unicode, Py_ssize_t index, \
658671
Py_UCS4 character)
659672
660-
Write a character to a string. The string must have been created through
661-
:c:func:`PyUnicode_New`. Since Unicode strings are supposed to be immutable,
662-
the string must not be shared, or have been hashed yet.
673+
Write a *character* to the string *unicode* at the zero-based *index*.
674+
Return ``0`` on success, ``-1`` on error with an exception set.
663675
664676
This function checks that *unicode* is a Unicode object, that the index is
665-
not out of bounds, and that the object can be modified safely (i.e. that it
666-
its reference count is one).
677+
not out of bounds, and that the object's reference count is one).
678+
See :c:func:`PyUnicode_WRITE` for a version that skips these checks,
679+
making them your responsibility.
667680
668-
Return ``0`` on success, ``-1`` on error with an exception set.
681+
The string must not have been “used” yet.
682+
See :c:func:`PyUnicode_New` for details.
669683
670684
.. versionadded:: 3.3
671685
@@ -1649,6 +1663,20 @@ They all return ``NULL`` or ``-1`` if an exception occurs.
16491663
Strings interned this way are made :term:`immortal`.
16501664
16511665
1666+
.. c:function:: unsigned int PyUnicode_CHECK_INTERNED(PyObject *str)
1667+
1668+
Return a non-zero value if *str* is interned, zero if not.
1669+
The *str* argument must be a string; this is not checked.
1670+
This function always succeeds.
1671+
1672+
.. impl-detail::
1673+
1674+
A non-zero return value may carry additional information
1675+
about *how* the string is interned.
1676+
The meaning of such non-zero values, as well as each specific string's
1677+
intern-related details, may change between CPython versions.
1678+
1679+
16521680
PyUnicodeWriter
16531681
^^^^^^^^^^^^^^^
16541682
@@ -1769,8 +1797,8 @@ object.
17691797
*size* is the string length in bytes. If *size* is equal to ``-1``, call
17701798
``strlen(str)`` to get the string length.
17711799
1772-
*errors* is an error handler name, such as ``"replace"``. If *errors* is
1773-
``NULL``, use the strict error handler.
1800+
*errors* is an :ref:`error handler <error-handlers>` name, such as
1801+
``"replace"``. If *errors* is ``NULL``, use the strict error handler.
17741802
17751803
If *consumed* is not ``NULL``, set *\*consumed* to the number of decoded
17761804
bytes on success.
@@ -1781,3 +1809,49 @@ object.
17811809
On error, set an exception, leave the writer unchanged, and return ``-1``.
17821810
17831811
See also :c:func:`PyUnicodeWriter_WriteUTF8`.
1812+
1813+
Deprecated API
1814+
^^^^^^^^^^^^^^
1815+
1816+
The following API is deprecated.
1817+
1818+
.. c:type:: Py_UNICODE
1819+
1820+
This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit type
1821+
depending on the platform.
1822+
Please use :c:type:`wchar_t` directly instead.
1823+
1824+
.. versionchanged:: 3.3
1825+
In previous versions, this was a 16-bit type or a 32-bit type depending on
1826+
whether you selected a "narrow" or "wide" Unicode version of Python at
1827+
build time.
1828+
1829+
.. deprecated-removed:: 3.13 3.15
1830+
1831+
1832+
.. c:function:: int PyUnicode_READY(PyObject *unicode)
1833+
1834+
Do nothing and return ``0``.
1835+
This API is kept only for backward compatibility, but there are no plans
1836+
to remove it.
1837+
1838+
.. versionadded:: 3.3
1839+
1840+
.. deprecated:: 3.10
1841+
This API does nothing since Python 3.12.
1842+
Previously, this needed to be called for each string created using
1843+
the old API (:c:func:`!PyUnicode_FromUnicode` or similar).
1844+
1845+
1846+
.. c:function:: unsigned int PyUnicode_IS_READY(PyObject *unicode)
1847+
1848+
Do nothing and return ``1``.
1849+
This API is kept only for backward compatibility, but there are no plans
1850+
to remove it.
1851+
1852+
.. versionadded:: 3.3
1853+
1854+
.. deprecated:: next
1855+
This API does nothing since Python 3.12.
1856+
Previously, this could be called to check if
1857+
:c:func:`PyUnicode_READY` is necessary.

Doc/conf.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
'glossary_search',
3131
'grammar_snippet',
3232
'implementation_detail',
33+
'issue_role',
3334
'lexers',
3435
'misc_news',
3536
'pydoc_topics',

Doc/library/collections.rst

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -748,8 +748,8 @@ stack manipulations such as ``dup``, ``drop``, ``swap``, ``over``, ``pick``,
748748
returns or raises is then returned or raised by :meth:`~object.__getitem__`.
749749

750750
Note that :meth:`__missing__` is *not* called for any operations besides
751-
:meth:`~object.__getitem__`. This means that :meth:`get` will, like normal
752-
dictionaries, return ``None`` as a default rather than using
751+
:meth:`~object.__getitem__`. This means that :meth:`~dict.get` will, like
752+
normal dictionaries, return ``None`` as a default rather than using
753753
:attr:`default_factory`.
754754

755755

@@ -849,8 +849,9 @@ they add the ability to access fields by name instead of position index.
849849
Returns a new tuple subclass named *typename*. The new subclass is used to
850850
create tuple-like objects that have fields accessible by attribute lookup as
851851
well as being indexable and iterable. Instances of the subclass also have a
852-
helpful docstring (with typename and field_names) and a helpful :meth:`__repr__`
853-
method which lists the tuple contents in a ``name=value`` format.
852+
helpful docstring (with *typename* and *field_names*) and a helpful
853+
:meth:`~object.__repr__` method which lists the tuple contents in a ``name=value``
854+
format.
854855

855856
The *field_names* are a sequence of strings such as ``['x', 'y']``.
856857
Alternatively, *field_names* can be a single string with each fieldname
@@ -894,10 +895,10 @@ they add the ability to access fields by name instead of position index.
894895
Added the *module* parameter.
895896

896897
.. versionchanged:: 3.7
897-
Removed the *verbose* parameter and the :attr:`_source` attribute.
898+
Removed the *verbose* parameter and the :attr:`!_source` attribute.
898899

899900
.. versionchanged:: 3.7
900-
Added the *defaults* parameter and the :attr:`_field_defaults`
901+
Added the *defaults* parameter and the :attr:`~somenamedtuple._field_defaults`
901902
attribute.
902903

903904
.. doctest::
@@ -1109,7 +1110,7 @@ Some differences from :class:`dict` still remain:
11091110
A regular :class:`dict` can emulate the order sensitive equality test with
11101111
``p == q and all(k1 == k2 for k1, k2 in zip(p, q))``.
11111112

1112-
* The :meth:`popitem` method of :class:`OrderedDict` has a different
1113+
* The :meth:`~OrderedDict.popitem` method of :class:`OrderedDict` has a different
11131114
signature. It accepts an optional argument to specify which item is popped.
11141115

11151116
A regular :class:`dict` can emulate OrderedDict's ``od.popitem(last=True)``
@@ -1119,7 +1120,7 @@ Some differences from :class:`dict` still remain:
11191120
with ``(k := next(iter(d)), d.pop(k))`` which will return and remove the
11201121
leftmost (first) item if it exists.
11211122

1122-
* :class:`OrderedDict` has a :meth:`move_to_end` method to efficiently
1123+
* :class:`OrderedDict` has a :meth:`~OrderedDict.move_to_end` method to efficiently
11231124
reposition an element to an endpoint.
11241125

11251126
A regular :class:`dict` can emulate OrderedDict's ``od.move_to_end(k,
@@ -1130,7 +1131,7 @@ Some differences from :class:`dict` still remain:
11301131
OrderedDict's ``od.move_to_end(k, last=False)`` which moves the key
11311132
and its associated value to the leftmost (first) position.
11321133

1133-
* Until Python 3.8, :class:`dict` lacked a :meth:`__reversed__` method.
1134+
* Until Python 3.8, :class:`dict` lacked a :meth:`~object.__reversed__` method.
11341135

11351136

11361137
.. class:: OrderedDict([items])
@@ -1185,7 +1186,7 @@ anywhere a regular dictionary is used.
11851186

11861187
.. versionchanged:: 3.6
11871188
With the acceptance of :pep:`468`, order is retained for keyword arguments
1188-
passed to the :class:`OrderedDict` constructor and its :meth:`update`
1189+
passed to the :class:`OrderedDict` constructor and its :meth:`~dict.update`
11891190
method.
11901191

11911192
.. versionchanged:: 3.9

Doc/library/concurrent.futures.rst

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,30 @@ to a :class:`ProcessPoolExecutor` will result in deadlock.
415415
require the *fork* start method for :class:`ProcessPoolExecutor` you must
416416
explicitly pass ``mp_context=multiprocessing.get_context("fork")``.
417417

418+
.. method:: terminate_workers()
419+
420+
Attempt to terminate all living worker processes immediately by calling
421+
:meth:`Process.terminate <multiprocessing.Process.terminate>` on each of them.
422+
Internally, it will also call :meth:`Executor.shutdown` to ensure that all
423+
other resources associated with the executor are freed.
424+
425+
After calling this method the caller should no longer submit tasks to the
426+
executor.
427+
428+
.. versionadded:: next
429+
430+
.. method:: kill_workers()
431+
432+
Attempt to kill all living worker processes immediately by calling
433+
:meth:`Process.kill <multiprocessing.Process.kill>` on each of them.
434+
Internally, it will also call :meth:`Executor.shutdown` to ensure that all
435+
other resources associated with the executor are freed.
436+
437+
After calling this method the caller should no longer submit tasks to the
438+
executor.
439+
440+
.. versionadded:: next
441+
418442
.. _processpoolexecutor-example:
419443

420444
ProcessPoolExecutor Example

0 commit comments

Comments
 (0)