Skip to content

Commit 5821c68

Browse files
committed
Merge branch 'main' into specialize-load-method
2 parents 90adc5d + 7fce106 commit 5821c68

File tree

87 files changed

+837
-877
lines changed

Some content is hidden

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

87 files changed

+837
-877
lines changed

.github/workflows/doc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
- name: 'Build HTML documentation'
4949
run: make -C Doc/ PYTHON=../python SPHINXOPTS="-q -W --keep-going -j4" html
5050
- name: 'Upload'
51-
uses: actions/upload-artifact@v2.2.4
51+
uses: actions/upload-artifact@v2.3.1
5252
with:
5353
name: doc-html
5454
path: Doc/build/html

Doc/c-api/exceptions.rst

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,14 @@ For convenience, some of these functions will always return a
253253
.. versionadded:: 3.3
254254
255255
256+
.. c:function:: PyObject* PyErr_SetImportErrorSubclass(PyObject *exception, PyObject *msg, PyObject *name, PyObject *path)
257+
258+
Much like :c:func:`PyErr_SetImportError` but this function allows for
259+
specifying a subclass of :exc:`ImportError` to raise.
260+
261+
.. versionadded:: 3.6
262+
263+
256264
.. c:function:: void PyErr_SyntaxLocationObject(PyObject *filename, int lineno, int col_offset)
257265
258266
Set file, line, and offset information for the current exception. If the
@@ -320,13 +328,6 @@ an error value).
320328
:mod:`warnings` module and the :option:`-W` option in the command line
321329
documentation. There is no C API for warning control.
322330
323-
.. c:function:: PyObject* PyErr_SetImportErrorSubclass(PyObject *exception, PyObject *msg, PyObject *name, PyObject *path)
324-
325-
Much like :c:func:`PyErr_SetImportError` but this function allows for
326-
specifying a subclass of :exc:`ImportError` to raise.
327-
328-
.. versionadded:: 3.6
329-
330331
331332
.. c:function:: int PyErr_WarnExplicitObject(PyObject *category, PyObject *message, PyObject *filename, int lineno, PyObject *module, PyObject *registry)
332333

Doc/c-api/reflection.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Reflection
3131
See also :c:func:`PyThreadState_GetFrame`.
3232
3333
34-
.. c:function:: int PyFrame_GetBack(PyFrameObject *frame)
34+
.. c:function:: PyFrameObject* PyFrame_GetBack(PyFrameObject *frame)
3535
3636
Get the *frame* next outer frame.
3737
@@ -42,7 +42,7 @@ Reflection
4242
.. versionadded:: 3.9
4343
4444
45-
.. c:function:: int PyFrame_GetCode(PyFrameObject *frame)
45+
.. c:function:: PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)
4646
4747
Get the *frame* code.
4848

Doc/c-api/typeobj.rst

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ PyObject Slots
476476
--------------
477477

478478
The type object structure extends the :c:type:`PyVarObject` structure. The
479-
:attr:`ob_size` field is used for dynamic types (created by :func:`type_new`,
479+
:attr:`ob_size` field is used for dynamic types (created by :func:`type_new`,
480480
usually called from a class statement). Note that :c:data:`PyType_Type` (the
481481
metatype) initializes :c:member:`~PyTypeObject.tp_itemsize`, which means that its instances (i.e.
482482
type objects) *must* have the :attr:`ob_size` field.
@@ -2000,6 +2000,17 @@ and :c:type:`PyType_Type` effectively act as defaults.)
20002000
For this field to be taken into account (even through inheritance),
20012001
you must also set the :const:`Py_TPFLAGS_HAVE_FINALIZE` flags bit.
20022002

2003+
Also, note that, in a garbage collected Python,
2004+
:c:member:`~PyTypeObject.tp_dealloc` may be called from
2005+
any Python thread, not just the thread which created the object (if the object
2006+
becomes part of a refcount cycle, that cycle might be collected by a garbage
2007+
collection on any thread). This is not a problem for Python API calls, since
2008+
the thread on which tp_dealloc is called will own the Global Interpreter Lock
2009+
(GIL). However, if the object being destroyed in turn destroys objects from some
2010+
other C or C++ library, care should be taken to ensure that destroying those
2011+
objects on the thread which called tp_dealloc will not violate any assumptions
2012+
of the library.
2013+
20032014
**Inheritance:**
20042015

20052016
This field is inherited by subtypes.
@@ -2024,17 +2035,6 @@ and :c:type:`PyType_Type` effectively act as defaults.)
20242035
.. versionadded:: 3.9 (the field exists since 3.8 but it's only used since 3.9)
20252036

20262037

2027-
Also, note that, in a garbage collected Python, :c:member:`~PyTypeObject.tp_dealloc` may be called from
2028-
any Python thread, not just the thread which created the object (if the object
2029-
becomes part of a refcount cycle, that cycle might be collected by a garbage
2030-
collection on any thread). This is not a problem for Python API calls, since
2031-
the thread on which tp_dealloc is called will own the Global Interpreter Lock
2032-
(GIL). However, if the object being destroyed in turn destroys objects from some
2033-
other C or C++ library, care should be taken to ensure that destroying those
2034-
objects on the thread which called tp_dealloc will not violate any assumptions
2035-
of the library.
2036-
2037-
20382038
.. _static-types:
20392039

20402040
Static Types
@@ -2440,7 +2440,8 @@ Async Object Structures
24402440

24412441
PyObject *am_aiter(PyObject *self);
24422442

2443-
Must return an :term:`awaitable` object. See :meth:`__anext__` for details.
2443+
Must return an :term:`asynchronous iterator` object.
2444+
See :meth:`__anext__` for details.
24442445

24452446
This slot may be set to ``NULL`` if an object does not implement
24462447
asynchronous iteration protocol.

Doc/c-api/unicode.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,7 @@ Error handling is set by errors which may also be set to ``NULL`` meaning to use
10031003
the default handling defined for the codec. Default error handling for all
10041004
built-in codecs is "strict" (:exc:`ValueError` is raised).
10051005
1006-
The codecs all use a similar interface. Only deviation from the following
1006+
The codecs all use a similar interface. Only deviations from the following
10071007
generic ones are documented for simplicity.
10081008
10091009
@@ -1171,7 +1171,7 @@ These are the UTF-16 codec APIs:
11711171
``1``, any byte order mark is copied to the output (where it will result in
11721172
either a ``\ufeff`` or a ``\ufffe`` character).
11731173
1174-
After completion, *\*byteorder* is set to the current byte order at the end
1174+
After completion, ``*byteorder`` is set to the current byte order at the end
11751175
of input data.
11761176
11771177
If *byteorder* is ``NULL``, the codec starts in native order mode.
@@ -1302,7 +1302,7 @@ Character Map Codecs
13021302
13031303
This codec is special in that it can be used to implement many different codecs
13041304
(and this is in fact what was done to obtain most of the standard codecs
1305-
included in the :mod:`encodings` package). The codec uses mapping to encode and
1305+
included in the :mod:`encodings` package). The codec uses mappings to encode and
13061306
decode characters. The mapping objects provided must support the
13071307
:meth:`__getitem__` mapping interface; dictionaries and sequences work well.
13081308
@@ -1426,7 +1426,7 @@ They all return ``NULL`` or ``-1`` if an exception occurs.
14261426
.. c:function:: PyObject* PyUnicode_Splitlines(PyObject *s, int keepend)
14271427
14281428
Split a Unicode string at line breaks, returning a list of Unicode strings.
1429-
CRLF is considered to be one line break. If *keepend* is ``0``, the Line break
1429+
CRLF is considered to be one line break. If *keepend* is ``0``, the line break
14301430
characters are not included in the resulting strings.
14311431
14321432

Doc/c-api/veryhigh.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ the same library that the Python runtime is using.
7575
:c:func:`PyRun_SimpleFile`. *filename* is decoded from the filesystem
7676
encoding (:func:`sys.getfilesystemencoding`). If *filename* is ``NULL``, this
7777
function uses ``"???"`` as the filename.
78+
If *closeit* is true, the file is closed before
79+
``PyRun_SimpleFileExFlags()`` returns.
7880
7981
8082
.. c:function:: int PyRun_SimpleString(const char *command)

Doc/library/configparser.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,9 @@ out. Values can also span multiple lines, as long as they are indented deeper
267267
than the first line of the value. Depending on the parser's mode, blank lines
268268
may be treated as parts of multiline values or ignored.
269269

270+
By default, a valid section name can be any string that does not contain '\\n' or ']'.
271+
To change this, see :attr:`ConfigParser.SECTCRE`.
272+
270273
Configuration files may include comments, prefixed by specific
271274
characters (``#`` and ``;`` by default [1]_). Comments may appear on
272275
their own on an otherwise empty line, possibly indented. [1]_

Doc/library/locale.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,8 @@ The :mod:`locale` module defines the following exception and functions:
301301
*language code* and *encoding* may be ``None`` if their values cannot be
302302
determined.
303303

304+
.. deprecated:: 3.11 3.13
305+
304306

305307
.. function:: getlocale(category=LC_CTYPE)
306308

Doc/reference/compound_stmts.rst

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,17 +154,20 @@ The :keyword:`for` statement is used to iterate over the elements of a sequence
154154
(such as a string, tuple or list) or other iterable object:
155155

156156
.. productionlist:: python-grammar
157-
for_stmt: "for" `target_list` "in" `expression_list` ":" `suite`
157+
for_stmt: "for" `target_list` "in" `starred_list` ":" `suite`
158158
: ["else" ":" `suite`]
159159

160160
The expression list is evaluated once; it should yield an iterable object. An
161-
iterator is created for the result of the ``expression_list``. The suite is
162-
then executed once for each item provided by the iterator, in the order returned
163-
by the iterator. Each item in turn is assigned to the target list using the
164-
standard rules for assignments (see :ref:`assignment`), and then the suite is
165-
executed. When the items are exhausted (which is immediately when the sequence
166-
is empty or an iterator raises a :exc:`StopIteration` exception), the suite in
167-
the :keyword:`!else` clause, if present, is executed, and the loop terminates.
161+
iterator is created for the result of the ``starred_list``. The expression
162+
list can contain starred elements (``*x, *y``) that will be unpacked in the
163+
final iterator (as when constructing a ``tuple`` or ``list`` literal). The
164+
suite is then executed once for each item provided by the iterator, in the
165+
order returned by the iterator. Each item in turn is assigned to the target
166+
list using the standard rules for assignments (see :ref:`assignment`), and then
167+
the suite is executed. When the items are exhausted (which is immediately when
168+
the sequence is empty or an iterator raises a :exc:`StopIteration` exception),
169+
the suite in the :keyword:`!else` clause, if present, is executed, and the loop
170+
terminates.
168171

169172
.. index::
170173
statement: break
@@ -196,6 +199,8 @@ the built-in function :func:`range` returns an iterator of integers suitable to
196199
emulate the effect of Pascal's ``for i := a to b do``; e.g., ``list(range(3))``
197200
returns the list ``[0, 1, 2]``.
198201

202+
.. versionchanged:: 3.11
203+
Starred elements are now allowed in the expression list.
199204

200205
.. _try:
201206
.. _except:

Doc/using/windows.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ suppressing the UI in order to change some of the defaults.
129129
To completely hide the installer UI and install Python silently, pass the
130130
``/quiet`` option. To skip past the user interaction but still display
131131
progress and errors, pass the ``/passive`` option. The ``/uninstall``
132-
option may be passed to immediately begin removing Python - no prompt will be
133-
displayed.
132+
option may be passed to immediately begin removing Python - no confirmation
133+
prompt will be displayed.
134134

135135
All other options are passed as ``name=value``, where the value is usually
136136
``0`` to disable a feature, ``1`` to enable a feature, or a path. The full list

Doc/whatsnew/3.11.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,9 @@ traceback. (Contributed by Irit Katriel in :issue:`45607`.)
160160
Other Language Changes
161161
======================
162162

163+
* Starred expressions can be used in :ref:`for statements<for>`. (See
164+
:issue:`46725` for more details.)
165+
163166
* Asynchronous comprehensions are now allowed inside comprehensions in
164167
asynchronous functions. Outer comprehensions implicitly become
165168
asynchronous. (Contributed by Serhiy Storchaka in :issue:`33346`.)
@@ -483,6 +486,12 @@ Deprecated
483486

484487
(Contributed by Hugo van Kemenade in :issue:`45173`.)
485488

489+
* The :func:`locale.getdefaultlocale` function is deprecated and will be
490+
removed in Python 3.13. Use :func:`locale.setlocale`,
491+
:func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>` and
492+
:func:`locale.getlocale` functions instead.
493+
(Contributed by Victor Stinner in :issue:`46659`.)
494+
486495

487496
Removed
488497
=======
@@ -844,6 +853,8 @@ Porting to Python 3.11
844853
use ``PyObject_GetAttrString((PyObject*)frame, "f_locals")``.
845854
* ``f_lasti``: removed,
846855
use ``PyObject_GetAttrString((PyObject*)frame, "f_lasti")``.
856+
Code using ``f_lasti`` with ``PyCode_Addr2Line()`` should use
857+
:c:func:`PyFrame_GetLineNumber` instead.
847858

848859
The following fields were removed entirely, as they were details
849860
of the old implementation:
@@ -1010,3 +1021,7 @@ Removed
10101021
public C API by mistake, it must only be used by Python internally.
10111022
Use the ``PyTypeObject.tp_members`` member instead.
10121023
(Contributed by Victor Stinner in :issue:`40170`.)
1024+
1025+
* Remove the ``HAVE_PY_SET_53BIT_PRECISION`` macro (moved to the internal C
1026+
API).
1027+
(Contributed by Victor Stinner in :issue:`45412`.)

Include/Python.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include "pymacro.h"
4040
#include "pymath.h"
4141
#include "pymem.h"
42+
#include "pybuffer.h"
4243
#include "object.h"
4344
#include "objimpl.h"
4445
#include "typeslots.h"
@@ -50,7 +51,6 @@
5051
#include "longobject.h"
5152
#include "cpython/longintrepr.h"
5253
#include "boolobject.h"
53-
#include "buffer.h"
5454
#include "floatobject.h"
5555
#include "complexobject.h"
5656
#include "rangeobject.h"

Include/cpython/object.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
# error "this header file must not be included directly"
33
#endif
44

5-
#include "buffer.h" // for Py_buffer, included after PyObject has been defined
6-
75
PyAPI_FUNC(void) _Py_NewReference(PyObject *op);
86

97
#ifdef Py_TRACE_REFS

Include/internal/pycore_code.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ typedef struct {
2323

2424
typedef struct {
2525
uint32_t tp_version;
26-
uint32_t dk_version_or_hint;
26+
uint32_t dk_version;
2727
} _PyAttrCache;
2828

2929
typedef struct {

Include/internal/pycore_dtoa.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#ifndef PY_NO_SHORT_FLOAT_REPR
21
#ifdef __cplusplus
32
extern "C" {
43
#endif
@@ -7,6 +6,11 @@ extern "C" {
76
# error "this header requires Py_BUILD_CORE define"
87
#endif
98

9+
#include "pycore_pymath.h" // _PY_SHORT_FLOAT_REPR
10+
11+
12+
#if _PY_SHORT_FLOAT_REPR == 1
13+
1014
/* These functions are used by modules compiled as C extension like math:
1115
they must be exported. */
1216

@@ -17,7 +21,8 @@ PyAPI_FUNC(void) _Py_dg_freedtoa(char *s);
1721
PyAPI_FUNC(double) _Py_dg_stdnan(int sign);
1822
PyAPI_FUNC(double) _Py_dg_infinity(int sign);
1923

24+
#endif // _PY_SHORT_FLOAT_REPR == 1
25+
2026
#ifdef __cplusplus
2127
}
2228
#endif
23-
#endif /* !PY_NO_SHORT_FLOAT_REPR */

0 commit comments

Comments
 (0)