Skip to content

Commit aab946e

Browse files
committed
Merge branch 'main' into gh-124878-tstate-refcount
2 parents f9e5173 + cc17307 commit aab946e

Some content is hidden

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

62 files changed

+1654
-632
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ jobs:
185185
needs: build-context
186186
if: fromJSON(needs.build-context.outputs.run-windows-msi)
187187
strategy:
188+
fail-fast: false
188189
matrix:
189190
arch:
190191
- x86
@@ -236,6 +237,7 @@ jobs:
236237
needs: build-context
237238
if: needs.build-context.outputs.run-tests == 'true'
238239
strategy:
240+
fail-fast: false
239241
matrix:
240242
bolt:
241243
- false
@@ -452,6 +454,7 @@ jobs:
452454
needs: build-context
453455
if: needs.build-context.outputs.run-tests == 'true'
454456
strategy:
457+
fail-fast: false
455458
matrix:
456459
os: [ubuntu-24.04]
457460
env:
@@ -515,6 +518,7 @@ jobs:
515518
needs: build-context
516519
if: needs.build-context.outputs.run-tests == 'true'
517520
strategy:
521+
fail-fast: false
518522
matrix:
519523
free-threading:
520524
- false

.github/workflows/jit.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ jobs:
139139
runs-on: ubuntu-24.04
140140
timeout-minutes: 90
141141
strategy:
142+
fail-fast: false
142143
matrix:
143144
llvm:
144145
- 19

.github/workflows/project-updater.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
runs-on: ubuntu-latest
1616
timeout-minutes: 10
1717
strategy:
18+
fail-fast: false
1819
matrix:
1920
include:
2021
# if an issue has any of these labels, it will be added

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/socket.rst

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,19 @@ created. Socket addresses are represented as follows:
137137
- :const:`AF_BLUETOOTH` supports the following protocols and address
138138
formats:
139139

140-
- :const:`BTPROTO_L2CAP` accepts ``(bdaddr, psm)`` where ``bdaddr`` is
141-
the Bluetooth address as a string and ``psm`` is an integer.
140+
- :const:`BTPROTO_L2CAP` accepts a tuple
141+
``(bdaddr, psm[, cid[, bdaddr_type]])`` where:
142+
143+
- ``bdaddr`` is a string specifying the Bluetooth address.
144+
- ``psm`` is an integer specifying the Protocol/Service Multiplexer.
145+
- ``cid`` is an optional integer specifying the Channel Identifier.
146+
If not given, defaults to zero.
147+
- ``bdaddr_type`` is an optional integer specifying the address type;
148+
one of :const:`BDADDR_BREDR` (default), :const:`BDADDR_LE_PUBLIC`,
149+
:const:`BDADDR_LE_RANDOM`.
150+
151+
.. versionchanged:: next
152+
Added ``cid`` and ``bdaddr_type`` fields.
142153

143154
- :const:`BTPROTO_RFCOMM` accepts ``(bdaddr, channel)`` where ``bdaddr``
144155
is the Bluetooth address as a string and ``channel`` is an integer.
@@ -626,6 +637,14 @@ Constants
626637
This constant contains a boolean value which indicates if IPv6 is supported on
627638
this platform.
628639

640+
.. data:: AF_BLUETOOTH
641+
BTPROTO_L2CAP
642+
BTPROTO_RFCOMM
643+
BTPROTO_HCI
644+
BTPROTO_SCO
645+
646+
Integer constants for use with Bluetooth addresses.
647+
629648
.. data:: BDADDR_ANY
630649
BDADDR_LOCAL
631650

@@ -634,6 +653,15 @@ Constants
634653
any address when specifying the binding socket with
635654
:const:`BTPROTO_RFCOMM`.
636655

656+
.. data:: BDADDR_BREDR
657+
BDADDR_LE_PUBLIC
658+
BDADDR_LE_RANDOM
659+
660+
These constants describe the Bluetooth address type when binding or
661+
connecting a :const:`BTPROTO_L2CAP` socket.
662+
663+
.. versionadded:: next
664+
637665
.. data:: HCI_FILTER
638666
HCI_TIME_STAMP
639667
HCI_DATA_DIR

Doc/library/xmlrpc.client.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ between conformable Python objects and XML on the wire.
6161
The *headers* parameter is an optional sequence of HTTP headers to send with
6262
each request, expressed as a sequence of 2-tuples representing the header
6363
name and value. (e.g. ``[('Header-Name', 'value')]``).
64+
If an HTTPS URL is provided, *context* may be :class:`ssl.SSLContext`
65+
and configures the SSL settings of the underlying HTTPS connection.
6466
The obsolete *use_datetime* flag is similar to *use_builtin_types* but it
6567
applies only to date/time values.
6668

@@ -75,9 +77,7 @@ between conformable Python objects and XML on the wire.
7577
portion will be base64-encoded as an HTTP 'Authorization' header, and sent to
7678
the remote server as part of the connection process when invoking an XML-RPC
7779
method. You only need to use this if the remote server requires a Basic
78-
Authentication user and password. If an HTTPS URL is provided, *context* may
79-
be :class:`ssl.SSLContext` and configures the SSL settings of the underlying
80-
HTTPS connection.
80+
Authentication user and password.
8181

8282
The returned instance is a proxy object with methods that can be used to invoke
8383
corresponding RPC calls on the remote server. If the remote server supports the

0 commit comments

Comments
 (0)