Python 3.12.1

This commit is contained in:
Thomas Wouters 2023-12-07 21:31:58 +01:00
parent c0fc88fa2f
commit 2305ca5144
155 changed files with 1939 additions and 571 deletions

View file

@ -18,12 +18,12 @@
/*--start constants--*/ /*--start constants--*/
#define PY_MAJOR_VERSION 3 #define PY_MAJOR_VERSION 3
#define PY_MINOR_VERSION 12 #define PY_MINOR_VERSION 12
#define PY_MICRO_VERSION 0 #define PY_MICRO_VERSION 1
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
#define PY_RELEASE_SERIAL 0 #define PY_RELEASE_SERIAL 0
/* Version as a string */ /* Version as a string */
#define PY_VERSION "3.12.0+" #define PY_VERSION "3.12.1"
/*--end constants--*/ /*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.

View file

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Autogenerated by Sphinx on Mon Oct 2 13:45:14 2023 # Autogenerated by Sphinx on Thu Dec 7 21:32:35 2023
# as part of the release process. # as part of the release process.
topics = {'assert': 'The "assert" statement\n' topics = {'assert': 'The "assert" statement\n'
'**********************\n' '**********************\n'
@ -864,19 +864,25 @@ topics = {'assert': 'The "assert" statement\n'
'*instance* of the\n' '*instance* of the\n'
' owner class.\n' ' owner class.\n'
'\n' '\n'
'The attribute "__objclass__" is interpreted by the ' 'Instances of descriptors may also have the '
'"inspect" module as\n' '"__objclass__" attribute\n'
'specifying the class where this object was defined ' 'present:\n'
'\n'
'object.__objclass__\n'
'\n'
' The attribute "__objclass__" is interpreted by the '
'"inspect" module\n'
' as specifying the class where this object was defined '
'(setting this\n' '(setting this\n'
'appropriately can assist in runtime introspection of ' ' appropriately can assist in runtime introspection of '
'dynamic class\n' 'dynamic class\n'
'attributes). For callables, it may indicate that an ' ' attributes). For callables, it may indicate that an '
'instance of the\n' 'instance of the\n'
'given type (or a subclass) is expected or required as ' ' given type (or a subclass) is expected or required as '
'the first\n' 'the first\n'
'positional argument (for example, CPython sets this ' ' positional argument (for example, CPython sets this '
'attribute for\n' 'attribute for\n'
'unbound methods that are implemented in C).\n' ' unbound methods that are implemented in C).\n'
'\n' '\n'
'\n' '\n'
'Invoking Descriptors\n' 'Invoking Descriptors\n'
@ -1111,16 +1117,23 @@ topics = {'assert': 'The "assert" statement\n'
'attribute references, which most objects do. This ' 'attribute references, which most objects do. This '
'object is then\n' 'object is then\n'
'asked to produce the attribute whose name is the ' 'asked to produce the attribute whose name is the '
'identifier. This\n' 'identifier. The type\n'
'production can be customized by overriding the ' 'and value produced is determined by the object. '
'"__getattr__()" method.\n' 'Multiple evaluations\n'
'If this attribute is not available, the exception ' 'of the same attribute reference may yield different '
'"AttributeError" is\n' 'objects.\n'
'raised. Otherwise, the type and value of the object ' '\n'
'produced is\n' 'This production can be customized by overriding the\n'
'determined by the object. Multiple evaluations of ' '"__getattribute__()" method or the "__getattr__()" '
'the same attribute\n' 'method. The\n'
'reference may yield different objects.\n', '"__getattribute__()" method is called first and '
'either returns a value\n'
'or raises "AttributeError" if the attribute is not '
'available.\n'
'\n'
'If an "AttributeError" is raised and the object has '
'a "__getattr__()"\n'
'method, that method is called as a fallback.\n',
'augassign': 'Augmented assignment statements\n' 'augassign': 'Augmented assignment statements\n'
'*******************************\n' '*******************************\n'
'\n' '\n'
@ -2812,18 +2825,19 @@ topics = {'assert': 'The "assert" statement\n'
' bindings made during a successful pattern match outlive the\n' ' bindings made during a successful pattern match outlive the\n'
' executed block and can be used after the match statement**.\n' ' executed block and can be used after the match statement**.\n'
'\n' '\n'
' Note:\n' ' Note:\n'
'\n' '\n'
' During failed pattern matches, some subpatterns may ' ' During failed pattern matches, some subpatterns may '
'succeed.\n' 'succeed. Do\n'
' Do not rely on bindings being made for a failed match.\n' ' not rely on bindings being made for a failed match. '
' Conversely, do not rely on variables remaining unchanged ' 'Conversely,\n'
'after\n' ' do not rely on variables remaining unchanged after a '
' a failed match. The exact behavior is dependent on\n' 'failed\n'
' implementation and may vary. This is an intentional ' ' match. The exact behavior is dependent on implementation '
'decision\n' 'and may\n'
' made to allow different implementations to add ' ' vary. This is an intentional decision made to allow '
'optimizations.\n' 'different\n'
' implementations to add optimizations.\n'
'\n' '\n'
'3. If the pattern succeeds, the corresponding guard (if present) ' '3. If the pattern succeeds, the corresponding guard (if present) '
'is\n' 'is\n'
@ -3475,9 +3489,10 @@ topics = {'assert': 'The "assert" statement\n'
'* convert "P1" to a keyword pattern using "CLS.__match_args__"\n' '* convert "P1" to a keyword pattern using "CLS.__match_args__"\n'
'\n' '\n'
'* For each keyword argument "attr=P2":\n' '* For each keyword argument "attr=P2":\n'
' * "hasattr(<subject>, "attr")"\n'
'\n' '\n'
' * "P2" matches "<subject>.attr"\n' ' * "hasattr(<subject>, "attr")"\n'
'\n'
' * "P2" matches "<subject>.attr"\n'
'\n' '\n'
'* … and so on for the corresponding keyword argument/pattern ' '* … and so on for the corresponding keyword argument/pattern '
'pair.\n' 'pair.\n'
@ -4230,30 +4245,30 @@ topics = {'assert': 'The "assert" statement\n'
'[2] In pattern matching, a sequence is defined as one of the\n' '[2] In pattern matching, a sequence is defined as one of the\n'
' following:\n' ' following:\n'
'\n' '\n'
' * a class that inherits from "collections.abc.Sequence"\n' ' * a class that inherits from "collections.abc.Sequence"\n'
'\n' '\n'
' * a Python class that has been registered as\n' ' * a Python class that has been registered as\n'
' "collections.abc.Sequence"\n' ' "collections.abc.Sequence"\n'
'\n' '\n'
' * a builtin class that has its (CPython) ' ' * a builtin class that has its (CPython) '
'"Py_TPFLAGS_SEQUENCE"\n' '"Py_TPFLAGS_SEQUENCE" bit\n'
' bit set\n' ' set\n'
'\n' '\n'
' * a class that inherits from any of the above\n' ' * a class that inherits from any of the above\n'
'\n' '\n'
' The following standard library classes are sequences:\n' ' The following standard library classes are sequences:\n'
'\n' '\n'
' * "array.array"\n' ' * "array.array"\n'
'\n' '\n'
' * "collections.deque"\n' ' * "collections.deque"\n'
'\n' '\n'
' * "list"\n' ' * "list"\n'
'\n' '\n'
' * "memoryview"\n' ' * "memoryview"\n'
'\n' '\n'
' * "range"\n' ' * "range"\n'
'\n' '\n'
' * "tuple"\n' ' * "tuple"\n'
'\n' '\n'
' Note:\n' ' Note:\n'
'\n' '\n'
@ -4264,16 +4279,16 @@ topics = {'assert': 'The "assert" statement\n'
'[3] In pattern matching, a mapping is defined as one of the ' '[3] In pattern matching, a mapping is defined as one of the '
'following:\n' 'following:\n'
'\n' '\n'
' * a class that inherits from "collections.abc.Mapping"\n' ' * a class that inherits from "collections.abc.Mapping"\n'
'\n' '\n'
' * a Python class that has been registered as\n' ' * a Python class that has been registered as\n'
' "collections.abc.Mapping"\n' ' "collections.abc.Mapping"\n'
'\n' '\n'
' * a builtin class that has its (CPython) ' ' * a builtin class that has its (CPython) '
'"Py_TPFLAGS_MAPPING"\n' '"Py_TPFLAGS_MAPPING" bit\n'
' bit set\n' ' set\n'
'\n' '\n'
' * a class that inherits from any of the above\n' ' * a class that inherits from any of the above\n'
'\n' '\n'
' The standard library classes "dict" and ' ' The standard library classes "dict" and '
'"types.MappingProxyType"\n' '"types.MappingProxyType"\n'
@ -6487,18 +6502,17 @@ topics = {'assert': 'The "assert" statement\n'
'\n' '\n'
'The grammar for a replacement field is as follows:\n' 'The grammar for a replacement field is as follows:\n'
'\n' '\n'
' replacement_field ::= "{" [field_name] ["!" ' ' replacement_field ::= "{" [field_name] ["!" conversion] '
'conversion] [":" format_spec] "}"\n' '[":" format_spec] "}"\n'
' field_name ::= arg_name ("." attribute_name | ' ' field_name ::= arg_name ("." attribute_name | "[" '
'"[" element_index "]")*\n' 'element_index "]")*\n'
' arg_name ::= [identifier | digit+]\n' ' arg_name ::= [identifier | digit+]\n'
' attribute_name ::= identifier\n' ' attribute_name ::= identifier\n'
' element_index ::= digit+ | index_string\n' ' element_index ::= digit+ | index_string\n'
' index_string ::= <any source character except ' ' index_string ::= <any source character except "]"> '
'"]"> +\n' '+\n'
' conversion ::= "r" | "s" | "a"\n' ' conversion ::= "r" | "s" | "a"\n'
' format_spec ::= <described in the next ' ' format_spec ::= <described in the next section>\n'
'section>\n'
'\n' '\n'
'In less formal terms, the replacement field can start with ' 'In less formal terms, the replacement field can start with '
'a\n' 'a\n'
@ -6684,43 +6698,37 @@ topics = {'assert': 'The "assert" statement\n'
'The meaning of the various alignment options is as ' 'The meaning of the various alignment options is as '
'follows:\n' 'follows:\n'
'\n' '\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | Option | ' '| Option | '
'Meaning ' 'Meaning '
'|\n' '|\n'
' '
'|===========|============================================================|\n' '|===========|============================================================|\n'
' | "\'<\'" | Forces the field to be left-aligned ' '| "\'<\'" | Forces the field to be left-aligned within '
'within the available |\n' 'the available |\n'
' | | space (this is the default for most ' '| | space (this is the default for most '
'objects). |\n' 'objects). |\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | "\'>\'" | Forces the field to be right-aligned ' '| "\'>\'" | Forces the field to be right-aligned within '
'within the available |\n' 'the available |\n'
' | | space (this is the default for ' '| | space (this is the default for '
'numbers). |\n' 'numbers). |\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | "\'=\'" | Forces the padding to be placed after ' '| "\'=\'" | Forces the padding to be placed after the '
'the sign (if any) |\n' 'sign (if any) |\n'
' | | but before the digits. This is used for ' '| | but before the digits. This is used for '
'printing fields |\n' 'printing fields |\n'
' | | in the form +000000120. This alignment ' '| | in the form +000000120. This alignment '
'option is only |\n' 'option is only |\n'
' | | valid for numeric types. It becomes the ' '| | valid for numeric types. It becomes the '
'default for |\n' 'default for |\n'
' | | numbers when 0 immediately precedes the ' '| | numbers when 0 immediately precedes the '
'field width. |\n' 'field width. |\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | "\'^\'" | Forces the field to be centered within ' '| "\'^\'" | Forces the field to be centered within the '
'the available |\n' 'available |\n'
' | | ' '| | '
'space. ' 'space. '
'|\n' '|\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
'\n' '\n'
'Note that unless a minimum field width is defined, the ' 'Note that unless a minimum field width is defined, the '
@ -6733,30 +6741,25 @@ topics = {'assert': 'The "assert" statement\n'
'be one of\n' 'be one of\n'
'the following:\n' 'the following:\n'
'\n' '\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | Option | ' '| Option | '
'Meaning ' 'Meaning '
'|\n' '|\n'
' '
'|===========|============================================================|\n' '|===========|============================================================|\n'
' | "\'+\'" | indicates that a sign should be used for ' '| "\'+\'" | indicates that a sign should be used for '
'both positive as |\n' 'both positive as |\n'
' | | well as negative ' '| | well as negative '
'numbers. |\n' 'numbers. |\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | "\'-\'" | indicates that a sign should be used ' '| "\'-\'" | indicates that a sign should be used only '
'only for negative |\n' 'for negative |\n'
' | | numbers (this is the default ' '| | numbers (this is the default '
'behavior). |\n' 'behavior). |\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
' | space | indicates that a leading space should be ' '| space | indicates that a leading space should be used '
'used on positive |\n' 'on positive |\n'
' | | numbers, and a minus sign on negative ' '| | numbers, and a minus sign on negative '
'numbers. |\n' 'numbers. |\n'
' '
'+-----------+------------------------------------------------------------+\n' '+-----------+------------------------------------------------------------+\n'
'\n' '\n'
'The "\'z\'" option coerces negative zero floating-point ' 'The "\'z\'" option coerces negative zero floating-point '
@ -10438,19 +10441,25 @@ topics = {'assert': 'The "assert" statement\n'
'of the\n' 'of the\n'
' owner class.\n' ' owner class.\n'
'\n' '\n'
'The attribute "__objclass__" is interpreted by the "inspect" ' 'Instances of descriptors may also have the "__objclass__" '
'module as\n' 'attribute\n'
'specifying the class where this object was defined (setting ' 'present:\n'
'this\n' '\n'
'appropriately can assist in runtime introspection of dynamic ' 'object.__objclass__\n'
'class\n' '\n'
'attributes). For callables, it may indicate that an instance ' ' The attribute "__objclass__" is interpreted by the '
'of the\n' '"inspect" module\n'
'given type (or a subclass) is expected or required as the ' ' as specifying the class where this object was defined '
'(setting this\n'
' appropriately can assist in runtime introspection of '
'dynamic class\n'
' attributes). For callables, it may indicate that an '
'instance of the\n'
' given type (or a subclass) is expected or required as the '
'first\n' 'first\n'
'positional argument (for example, CPython sets this ' ' positional argument (for example, CPython sets this '
'attribute for\n' 'attribute for\n'
'unbound methods that are implemented in C).\n' ' unbound methods that are implemented in C).\n'
'\n' '\n'
'\n' '\n'
'Invoking Descriptors\n' 'Invoking Descriptors\n'
@ -13137,15 +13146,13 @@ topics = {'assert': 'The "assert" statement\n'
'bytes\n' 'bytes\n'
'literals.\n' 'literals.\n'
'\n' '\n'
' Changed in version 3.6: Unrecognized escape sequences produce ' 'Changed in version 3.6: Unrecognized escape sequences produce a\n'
'a\n' '"DeprecationWarning".\n'
' "DeprecationWarning".\n'
'\n' '\n'
' Changed in version 3.12: Unrecognized escape sequences produce ' 'Changed in version 3.12: Unrecognized escape sequences produce a\n'
'a\n' '"SyntaxWarning". In a future Python version they will be '
' "SyntaxWarning". In a future Python version they will be ' 'eventually a\n'
'eventually\n' '"SyntaxError".\n'
' a "SyntaxError".\n'
'\n' '\n'
'Even in a raw literal, quotes can be escaped with a backslash, ' 'Even in a raw literal, quotes can be escaped with a backslash, '
'but the\n' 'but the\n'
@ -14431,43 +14438,106 @@ topics = {'assert': 'The "assert" statement\n'
'code objects are immutable and contain no references (directly or\n' 'code objects are immutable and contain no references (directly or\n'
'indirectly) to mutable objects.\n' 'indirectly) to mutable objects.\n'
'\n' '\n'
'Special read-only attributes: "co_name" gives the function name;\n' '\n'
'"co_qualname" gives the fully qualified function name; ' 'Special read-only attributes\n'
'"co_argcount"\n' '~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
'is the total number of positional arguments (including ' '\n'
'positional-only\n' '+----------------------------------------------------+----------------------------------------------------+\n'
'arguments and arguments with default values); "co_posonlyargcount" ' '| codeobject.co_name | The function '
'is\n' 'name |\n'
'the number of positional-only arguments (including arguments with\n' '+----------------------------------------------------+----------------------------------------------------+\n'
'default values); "co_kwonlyargcount" is the number of keyword-only\n' '| codeobject.co_qualname | The fully '
'arguments (including arguments with default values); "co_nlocals" ' 'qualified function name |\n'
'is\n' '+----------------------------------------------------+----------------------------------------------------+\n'
'the number of local variables used by the function (including\n' '| codeobject.co_argcount | The total '
'arguments); "co_varnames" is a tuple containing the names of the ' 'number of positional *parameters* |\n'
'local\n' '| | (including '
'variables (starting with the argument names); "co_cellvars" is a ' 'positional-only parameters and |\n'
'tuple\n' '| | parameters '
'containing the names of local variables that are referenced by ' 'with default values) that the function |\n'
'nested\n' '| | '
'functions; "co_freevars" is a tuple containing the names of free\n' 'has |\n'
'variables; "co_code" is a string representing the sequence of ' '+----------------------------------------------------+----------------------------------------------------+\n'
'bytecode\n' '| codeobject.co_posonlyargcount | The number '
'instructions; "co_consts" is a tuple containing the literals used ' 'of positional-only *parameters* |\n'
'by\n' '| | (including '
'the bytecode; "co_names" is a tuple containing the names used by ' 'arguments with default values) that the |\n'
'the\n' '| | function '
'bytecode; "co_filename" is the filename from which the code was\n' 'has |\n'
'compiled; "co_firstlineno" is the first line number of the ' '+----------------------------------------------------+----------------------------------------------------+\n'
'function;\n' '| codeobject.co_kwonlyargcount | The number '
'"co_lnotab" is a string encoding the mapping from bytecode offsets ' 'of keyword-only *parameters* (including |\n'
'to\n' '| | arguments '
'line numbers (for details see the source code of the interpreter, ' 'with default values) that the function |\n'
'is\n' '| | '
'deprecated since 3.12 and may be removed in 3.14); "co_stacksize" ' 'has |\n'
'is\n' '+----------------------------------------------------+----------------------------------------------------+\n'
'the required stack size; "co_flags" is an integer encoding a number ' '| codeobject.co_nlocals | The number '
'of\n' 'of local variables used by the function |\n'
'flags for the interpreter.\n' '| | (including '
'parameters) |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_varnames | A "tuple" '
'containing the names of the local |\n'
'| | variables in '
'the function (starting with the |\n'
'| | parameter '
'names) |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_cellvars | A "tuple" '
'containing the names of local variables |\n'
'| | that are '
'referenced by nested functions inside the |\n'
'| | '
'function |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_freevars | A "tuple" '
'containing the names of free variables |\n'
'| | in the '
'function |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_code | A string '
'representing the sequence of *bytecode* |\n'
'| | instructions '
'in the function |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_consts | A "tuple" '
'containing the literals used by the |\n'
'| | *bytecode* '
'in the function |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_names | A "tuple" '
'containing the names used by the |\n'
'| | *bytecode* '
'in the function |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_filename | The name of '
'the file from which the code was |\n'
'| | '
'compiled |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_firstlineno | The line '
'number of the first line of the function |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_lnotab | A string '
'encoding the mapping from *bytecode* |\n'
'| | offsets to '
'line numbers. For details, see the |\n'
'| | source code '
'of the interpreter. Deprecated since |\n'
'| | version '
'3.12: This attribute of code objects is |\n'
'| | deprecated, '
'and may be removed in Python 3.14. |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_stacksize | The required '
'stack size of the code object |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| codeobject.co_flags | An "integer" '
'encoding a number of flags for the |\n'
'| | '
'interpreter. |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'\n' '\n'
'The following flag bits are defined for "co_flags": bit "0x04" is ' 'The following flag bits are defined for "co_flags": bit "0x04" is '
'set\n' 'set\n'
@ -14476,7 +14546,9 @@ topics = {'assert': 'The "assert" statement\n'
'number of positional arguments; bit "0x08" is set if the function ' 'number of positional arguments; bit "0x08" is set if the function '
'uses\n' 'uses\n'
'the "**keywords" syntax to accept arbitrary keyword arguments; bit\n' 'the "**keywords" syntax to accept arbitrary keyword arguments; bit\n'
'"0x20" is set if the function is a generator.\n' '"0x20" is set if the function is a generator. See Code Objects Bit\n'
'Flags for details on the semantics of each flags that might be\n'
'present.\n'
'\n' '\n'
'Future feature declarations ("from __future__ import division") ' 'Future feature declarations ("from __future__ import division") '
'also\n' 'also\n'
@ -14495,16 +14567,19 @@ topics = {'assert': 'The "assert" statement\n'
'is the documentation string of the function, or "None" if ' 'is the documentation string of the function, or "None" if '
'undefined.\n' 'undefined.\n'
'\n' '\n'
'\n'
'The "co_positions()" method\n'
'~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
'\n'
'codeobject.co_positions()\n' 'codeobject.co_positions()\n'
'\n' '\n'
' Returns an iterable over the source code positions of each ' ' Returns an iterable over the source code positions of each\n'
'bytecode\n' ' *bytecode* instruction in the code object.\n'
' instruction in the code object.\n'
'\n' '\n'
' The iterator returns tuples containing the "(start_line, ' ' The iterator returns "tuple"s containing the "(start_line,\n'
'end_line,\n' ' end_line, start_column, end_column)". The *i-th* tuple '
' start_column, end_column)". The *i-th* tuple corresponds to the\n' 'corresponds\n'
' position of the source code that compiled to the *i-th*\n' ' to the position of the source code that compiled to the *i-th*\n'
' instruction. Column information is 0-indexed utf-8 byte offsets ' ' instruction. Column information is 0-indexed utf-8 byte offsets '
'on\n' 'on\n'
' the given source line.\n' ' the given source line.\n'
@ -14551,42 +14626,95 @@ topics = {'assert': 'The "assert" statement\n'
'objects (see below), and are also passed to registered trace\n' 'objects (see below), and are also passed to registered trace\n'
'functions.\n' 'functions.\n'
'\n' '\n'
'Special read-only attributes: "f_back" is to the previous stack '
'frame\n'
'(towards the caller), or "None" if this is the bottom stack frame;\n'
'"f_code" is the code object being executed in this frame; '
'"f_locals"\n'
'is the dictionary used to look up local variables; "f_globals" is '
'used\n'
'for global variables; "f_builtins" is used for built-in '
'(intrinsic)\n'
'names; "f_lasti" gives the precise instruction (this is an index '
'into\n'
'the bytecode string of the code object).\n'
'\n' '\n'
'Accessing "f_code" raises an auditing event "object.__getattr__" ' 'Special read-only attributes\n'
'with\n' '~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
'arguments "obj" and ""f_code"".\n'
'\n' '\n'
'Special writable attributes: "f_trace", if not "None", is a ' '+----------------------------------------------------+----------------------------------------------------+\n'
'function\n' '| frame.f_back | Points to '
'called for various events during code execution (this is used by ' 'the previous stack frame (towards the |\n'
'the\n' '| | caller), or '
'debugger). Normally an event is triggered for each new source line ' '"None" if this is the bottom stack |\n'
'-\n' '| | '
'this can be disabled by setting "f_trace_lines" to "False".\n' 'frame |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| frame.f_code | The code '
'object being executed in this frame. |\n'
'| | Accessing '
'this attribute raises an auditing event |\n'
'| | '
'"object.__getattr__" with arguments "obj" and |\n'
'| | '
'""f_code"". |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| frame.f_locals | The '
'dictionary used by the frame to look up local |\n'
'| | '
'variables |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| frame.f_globals | The '
'dictionary used by the frame to look up global |\n'
'| | '
'variables |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| frame.f_builtins | The '
'dictionary used by the frame to look up built- |\n'
'| | in '
'(intrinsic) names |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| frame.f_lasti | The “precise '
'instruction” of the frame object |\n'
'| | (this is an '
'index into the *bytecode* string of |\n'
'| | the code '
'object) |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'\n' '\n'
'Implementations *may* allow per-opcode events to be requested by\n'
'setting "f_trace_opcodes" to "True". Note that this may lead to\n'
'undefined interpreter behaviour if exceptions raised by the trace\n'
'function escape to the function being traced.\n'
'\n' '\n'
'"f_lineno" is the current line number of the frame — writing to ' 'Special writable attributes\n'
'this\n' '~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
'from within a trace function jumps to the given line (only for the\n' '\n'
'bottom-most frame). A debugger can implement a Jump command (aka ' '+----------------------------------------------------+----------------------------------------------------+\n'
'Set\n' '| frame.f_trace | If not '
'Next Statement) by writing to f_lineno.\n' '"None", this is a function called for |\n'
'| | various '
'events during code execution (this is used |\n'
'| | by '
'debuggers). Normally an event is triggered for |\n'
'| | each new '
'source line (see "f_trace_lines"). |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| frame.f_trace_lines | Set this '
'attribute to "False" to disable |\n'
'| | triggering a '
'tracing event for each source line. |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| frame.f_trace_opcodes | Set this '
'attribute to "True" to allow per-opcode |\n'
'| | events to be '
'requested. Note that this may lead to |\n'
'| | undefined '
'interpreter behaviour if exceptions |\n'
'| | raised by '
'the trace function escape to the |\n'
'| | function '
'being traced. |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'| frame.f_lineno | The current '
'line number of the frame writing to |\n'
'| | this from '
'within a trace function jumps to the |\n'
'| | given line '
'(only for the bottom-most frame). A |\n'
'| | debugger can '
'implement a Jump command (aka Set |\n'
'| | Next '
'Statement) by writing to this attribute. |\n'
'+----------------------------------------------------+----------------------------------------------------+\n'
'\n'
'\n'
'Frame object methods\n'
'~~~~~~~~~~~~~~~~~~~~\n'
'\n' '\n'
'Frame objects support one method:\n' 'Frame objects support one method:\n'
'\n' '\n'
@ -14594,7 +14722,7 @@ topics = {'assert': 'The "assert" statement\n'
'\n' '\n'
' This method clears all references to local variables held by ' ' This method clears all references to local variables held by '
'the\n' 'the\n'
' frame. Also, if the frame belonged to a generator, the ' ' frame. Also, if the frame belonged to a *generator*, the '
'generator\n' 'generator\n'
' is finalized. This helps break reference cycles involving ' ' is finalized. This helps break reference cycles involving '
'frame\n' 'frame\n'
@ -15167,21 +15295,23 @@ topics = {'assert': 'The "assert" statement\n'
'\n' '\n'
'Keys views are set-like since their entries are unique and ' 'Keys views are set-like since their entries are unique and '
'*hashable*.\n' '*hashable*.\n'
'If all values are hashable, so that "(key, value)" pairs are ' 'Items views also have set-like operations since the (key, '
'unique\n' 'value) pairs\n'
'and hashable, then the items view is also set-like. (Values ' 'are unique and the keys are hashable. If all values in an '
'views are\n' 'items view\n'
'not treated as set-like since the entries are generally not ' 'are hashable as well, then the items view can interoperate '
'unique.)\n' 'with other\n'
'For set-like views, all of the operations defined for the ' 'sets. (Values views are not treated as set-like since the '
'abstract\n' 'entries are\n'
'base class "collections.abc.Set" are available (for example, ' 'generally not unique.) For set-like views, all of the '
'"==",\n' 'operations\n'
'"<", or "^"). While using set operators, set-like views ' 'defined for the abstract base class "collections.abc.Set" '
'accept any\n' 'are\n'
'iterable as the other operand, unlike sets which only accept ' 'available (for example, "==", "<", or "^"). While using '
'sets as\n' 'set\n'
'the input.\n' 'operators, set-like views accept any iterable as the other '
'operand,\n'
'unlike sets which only accept sets as the input.\n'
'\n' '\n'
'An example of dictionary view usage:\n' 'An example of dictionary view usage:\n'
'\n' '\n'

1594
Misc/NEWS.d/3.12.1.rst Normal file

File diff suppressed because it is too large Load diff

View file

@ -1 +0,0 @@
Fix compile error when building with recent versions of libedit.

View file

@ -1,3 +0,0 @@
"make check-clean-src" now also checks if the "python" program is found in
the source directory: fail with an error if it does exist. Patch by Victor
Stinner.

View file

@ -1 +0,0 @@
For wasi-threads, memory is now exported to fix compatibility issues with some wasm runtimes.

View file

@ -1,5 +0,0 @@
Add ``Tools/build/regen-configure.sh`` script to regenerate the ``configure``
with an Ubuntu container image. The ``quay.io/tiran/cpython_autoconf:271``
container image (`tiran/cpython_autoconf
<https://github.com/tiran/cpython_autoconf>`_) is no longer used. Patch by
Victor Stinner.

View file

@ -1,5 +0,0 @@
:c:func:`PyImport_GetImporter` now sets RuntimeError if it fails to get
:data:`sys.path_hooks` or :data:`sys.path_importer_cache` or they are not
list and dict correspondingly. Previously it could return NULL without
setting error in obscure cases, crash or raise SystemError if these
attributes have wrong type.

View file

@ -1,2 +0,0 @@
Fix support of format units "es", "et", "es#", and "et#" in nested tuples in
:c:func:`PyArg_ParseTuple`-like functions.

View file

@ -1,2 +0,0 @@
Fix redundant declarations in the public C API. Declare PyBool_Type and
PyLong_Type only once. Patch by Victor Stinner.

View file

@ -1,3 +0,0 @@
Statically allocated string objects are now interned globally instead of
per-interpreter. This fixes a situation where such a string would only be
interned in a single interpreter. Normal string objects are unaffected.

View file

@ -1,3 +0,0 @@
Improve syntax error for non-ASCII character that follows a numerical
literal. It now points on the invalid non-ASCII character, not on the valid
numerical literal.

View file

@ -1 +0,0 @@
Use the base opcode when comparing code objects to avoid interference from instrumentation

View file

@ -1 +0,0 @@
Fix bug where the C traceback display drops notes from :exc:`SyntaxError`.

View file

@ -1 +0,0 @@
Fix a SystemError in ``__repr__`` of symtable entry object.

View file

@ -1,2 +0,0 @@
Fix possible memory leak in :opcode:`BUILD_MAP`.

View file

@ -1,2 +0,0 @@
Fix crash when compiling an invalid AST involving a named (walrus)
expression.

View file

@ -1,3 +0,0 @@
Fix some tokens in the grammar that were incorrectly marked as soft
keywords. Also fix some repeated rule names and ensure that repeated rules
are not allowed. Patch by Pablo Galindo

View file

@ -1,4 +0,0 @@
The main thread no longer exits prematurely when a subinterpreter
is cleaned up during runtime finalization. The bug was a problem
particularly because, when triggered, the Python process would
always return with a 0 exitcode, even if it failed.

View file

@ -1,3 +0,0 @@
Subinterpreters now correctly handle the case where they have threads
running in the background. Before, such threads would interfere with
cleaning up and destroying them, as well as prevent running another script.

View file

@ -1 +0,0 @@
``sys.path[0]`` is now set correctly for subinterpreters.

View file

@ -1,2 +0,0 @@
Fix the compiler's redundant NOP detection algorithm to skip over NOPs with
no line number when looking for the next instruction's lineno.

View file

@ -1 +0,0 @@
Fix missing error checks for calls to ``PyList_Append`` in ``_PyEval_MatchClass``.

View file

@ -1,3 +0,0 @@
Correctly identify the format spec in f-strings (with single or triple
quotes) that have multiple lines in the expression part and include a
formatting spec. Patch by Pablo Galindo

View file

@ -1,3 +0,0 @@
Guard ``assert(tstate->thread_id > 0)`` with ``#ifndef HAVE_PTHREAD_STUBS``.
This allows for for pydebug builds to work under WASI which (currently)
lacks thread support.

View file

@ -1 +0,0 @@
Add ``PY_THROW`` to :func:`sys.setprofile` events

View file

@ -1,3 +0,0 @@
Fix regression in Python 3.12 where :meth:`types.CodeType.replace` would
produce a broken code object if called on a module or class code object that
contains a comprehension. Patch by Jelle Zijlstra.

View file

@ -1,2 +0,0 @@
Fix incorrect error message for invalid argument unpacking. Patch by Pablo
Galindo

View file

@ -1,2 +0,0 @@
Fix crash when :class:`typing.TypeVar` is constructed with a keyword
argument. Patch by Jelle Zijlstra.

View file

@ -1 +0,0 @@
Fixed crash due to improperly initialized static :exc:`MemoryError` in subinterpreter.

View file

@ -1,2 +0,0 @@
Fix error messages for indented blocks with functions and classes with
generic type parameters. Patch by Pablo Galindo

View file

@ -1 +0,0 @@
Fix a regression that prevented jumping across ``is None`` and ``is not None`` when debugging. Patch by Savannah Ostrowski.

View file

@ -1,2 +0,0 @@
Fix a bug that was causing :exc:`SyntaxWarning` to appear twice when parsing
if invalid syntax is encountered later. Patch by Pablo galindo

View file

@ -1,3 +0,0 @@
Fix an issue in the :mod:`codeop` that was causing :exc:`SyntaxError`
exceptions raised in the presence of invalid syntax to not contain precise
error messages. Patch by Pablo Galindo

View file

@ -1 +0,0 @@
Fix a bug where ``iso2022_jp_3`` and ``iso2022_jp_2004`` codecs read out of bounds

View file

@ -1,2 +0,0 @@
Speed up :obj:`Traceback` object creation by lazily compute the line number.
Patch by Pablo Galindo

View file

@ -1,2 +0,0 @@
Fix runtime crash when some error happens in opcode
``LOAD_FROM_DICT_OR_DEREF``.

View file

@ -1,2 +0,0 @@
Change docstrings of :attr:`~object.__dict__` and
:attr:`~object.__weakref__`.

View file

@ -1 +0,0 @@
Don't include comments in f-string debug expressions. Patch by Pablo Galindo

View file

@ -1,2 +0,0 @@
Avoid undefined behaviour when using the perf trampolines by not freeing the
code arenas until shutdown. Patch by Pablo Galindo

View file

@ -1,2 +0,0 @@
Fix error positions for decoded strings with backwards tokenize errors.
Patch by Pablo Galindo

View file

@ -1,2 +0,0 @@
Fix an error that was causing the parser to try to overwrite tokenizer
errors. Patch by pablo Galindo

View file

@ -1,3 +0,0 @@
Change coro.cr_frame/gen.gi_frame to return ``None`` after the coroutine/generator has been closed.
This fixes a bug where :func:`~inspect.getcoroutinestate` and :func:`~inspect.getgeneratorstate`
return the wrong state for a closed coroutine/generator.

View file

@ -1 +0,0 @@
Stopped erroneously deleting a ``LOAD_NULL`` bytecode instruction when optimized twice.

View file

@ -1,4 +0,0 @@
Workaround a bug in Apple's macOS platform zlib library where
:func:`zlib.crc32` and :func:`binascii.crc32` could produce incorrect results
on multi-gigabyte inputs. Including when using :mod:`zipfile` on zips
containing large data.

View file

@ -1 +0,0 @@
Fixes a bug where a bytearray object could be cleared while iterating over an argument in the ``bytearray.join()`` method that could result in reading memory after it was freed.

View file

@ -1 +0,0 @@
Fix None.__ne__(None) returning NotImplemented instead of False

View file

@ -1 +0,0 @@
:mod:`dis` module command-line interface is now mentioned in documentation.

View file

@ -1 +0,0 @@
Relocate ``smtpd`` deprecation notice to its own section rather than under ``locale`` in What's New in Python 3.12 document

View file

@ -1,4 +0,0 @@
Add docstrings to the IDLE debugger module. Fix two bugs:
initialize Idb.botframe (should be in Bdb); in Idb.in_rpc_code,
check whether prev_frame is None before trying to use it.
Greatly expand test_debugger.

View file

@ -1,2 +0,0 @@
The :meth:`ssl.SSLSocket.recv_into` method no longer requires the *buffer*
argument to implement ``__len__`` and supports buffers with arbitrary item size.

View file

@ -1,2 +0,0 @@
Fixed memory leaks of :class:`pickle.Pickler` and :class:`pickle.Unpickler` involving cyclic references via the
internal memo mapping.

View file

@ -1,3 +0,0 @@
The :func:`shutil.rmtree` function now ignores errors when calling
:func:`os.close` when *ignore_errors* is ``True``, and
:func:`os.close` no longer retried after error.

View file

@ -1,4 +0,0 @@
On Windows, ``tempfile.TemporaryDirectory`` previously masked a
``PermissionError`` with ``NotADirectoryError`` during directory cleanup. It
now correctly raises ``PermissionError`` if errors are not ignored. Patch by
Andrei Kulakov and Ken Jin.

View file

@ -1,4 +0,0 @@
:mod:`zipinfo` now supports the full range of values in the TZ string
determined by RFC 8536 and detects all invalid formats.
Both Python and C implementations now raise exceptions of the same
type on invalid data.

View file

@ -1 +0,0 @@
Omit the interface scope from an IPv6 address when used as Host header by :mod:`http.client`.

View file

@ -1,2 +0,0 @@
Fix a bug in :class:`tempfile.TemporaryDirectory` cleanup, which now no longer
dereferences symlinks when working around file system permission errors.

View file

@ -1,2 +0,0 @@
:class:`unittest.TestLoader` no longer loads test cases from exact
:class:`unittest.TestCase` and :class:`unittest.FunctionTestCase` classes.

View file

@ -1 +0,0 @@
Fix returning of empty byte strings after seek in zipfile module

View file

@ -1,2 +0,0 @@
Fix exit code for ``unittest`` if all tests are skipped.
Patch by Egor Eliseev.

View file

@ -1 +0,0 @@
Fix concurrent.futures.ProcessPoolExecutor deadlock

View file

@ -1 +0,0 @@
Improved error handling in :mod:`pdb` command line interface, making it produce more concise error messages.

View file

@ -1,4 +0,0 @@
Fix :func:`_thread.start_new_thread` race condition. If a thread is created
during Python finalization, the newly spawned thread now exits immediately
instead of trying to access freed memory and lead to a crash. Patch by
Victor Stinner.

View file

@ -1,4 +0,0 @@
Attempts to pickle or create a shallow or deep copy of :mod:`codecs` streams
now raise a TypeError. Previously, copying failed with a RecursionError,
while pickling produced wrong results that eventually caused unpickling
to fail with a RecursionError.

View file

@ -1,5 +0,0 @@
Fix a race condition in ``concurrent.futures``. When a process in the
process pool was terminated abruptly (while the future was running or
pending), close the connection write end. If the call queue is blocked on
sending bytes to a worker process, closing the connection write end interrupts
the send, so the queue can be closed. Patch by Victor Stinner.

View file

@ -1 +0,0 @@
The :mod:`pdb` ``alias`` command now prevents registering aliases without arguments.

View file

@ -1,4 +0,0 @@
Fix :func:`os.stat` and :meth:`os.DirEntry.stat`: check for exceptions.
Previously, on Python built in debug mode, these functions could trigger a
fatal Python error (and abort the process) when a function succeeded with an
exception set. Patch by Victor Stinner.

View file

@ -1 +0,0 @@
Avoid deadlocking on a reentrant call to the multiprocessing resource tracker. Such a reentrant call, though unlikely, can happen if a GC pass invokes the finalizer for a multiprocessing object such as SemLock.

View file

@ -1,2 +0,0 @@
Fix possible reference leaks and crash when re-enter the ``__next__()`` method of
:class:`itertools.pairwise`.

View file

@ -1,3 +0,0 @@
:func:`shutil.which` will prefer files with an extension in ``PATHEXT`` if the given mode includes ``os.X_OK`` on win32.
If no ``PATHEXT`` match is found, a file without an extension in ``PATHEXT`` can be returned.
This change will have :func:`shutil.which` act more similarly to previous behavior in Python 3.11.

View file

@ -1,2 +0,0 @@
Ensure the signature of :func:`os.path.isdir` is identical on all platforms.
Patch by Amin Alaee.

View file

@ -1,4 +0,0 @@
:mod:`concurrent.futures`: The *executor manager thread* now catches exceptions
when adding an item to the *call queue*. During Python finalization, creating a
new thread can now raise :exc:`RuntimeError`. Catch the exception and call
``terminate_broken()`` in this case. Patch by Victor Stinner.

View file

@ -1,2 +0,0 @@
Fix :func:`reprlib.recursive_repr` not copying ``__type_params__`` from
decorated function.

View file

@ -1,3 +0,0 @@
Improve errors for unsupported look-behind patterns. Now re.error is raised
instead of OverflowError or RuntimeError for too large width of look-behind
pattern.

View file

@ -1,3 +0,0 @@
:mod:`re` functions such as :func:`re.findall`, :func:`re.split`,
:func:`re.search` and :func:`re.sub` which perform short repeated matches
can now be interrupted by user.

View file

@ -1,3 +0,0 @@
Fixed an issue that caused :meth:`KqueueSelector.select` to not return all
the ready events in some cases when a file descriptor is registered for both
read and write.

View file

@ -1,5 +0,0 @@
On Windows, multiprocessing ``Popen.terminate()`` now catchs
:exc:`PermissionError` and get the process exit code. If the process is
still running, raise again the :exc:`PermissionError`. Otherwise, the
process terminated as expected: store its exit code. Patch by Victor
Stinner.

View file

@ -1 +0,0 @@
Add ``__reduce__`` method to :class:`IPv6Address` in order to keep ``scope_id``

View file

@ -1,2 +0,0 @@
Fix a Python 3.12 regression in the import time of :mod:`random`. Patch by Alex
Waygood.

View file

@ -1,2 +0,0 @@
Fix :func:`termios.tcsetattr` bug that was overwritting existing errors
during parsing integers from ``term`` list.

View file

@ -1,3 +0,0 @@
:func:`~contextlib.contextmanager` and
:func:`~contextlib.asynccontextmanager` context managers now close an invalid
underlying generator object that yields more then one value.

View file

@ -1,2 +0,0 @@
Ensure that :func:`select.kqueue` objects correctly appear as closed in
forked children, to prevent operations on an invalid file descriptor.

View file

@ -1,3 +0,0 @@
Deprecation warning about non-integer number in :mod:`gettext` now alwais
refers to the line in the user code where gettext function or method is
used. Previously it could refer to a line in ``gettext`` code.

View file

@ -1 +0,0 @@
Prevent :mod:`pdb` from crashing when trying to display undisplayable objects

View file

@ -1,3 +0,0 @@
Fix a bug in :meth:`!_sre.compile` where :exc:`TypeError`
would be overwritten by :exc:`OverflowError` when
the *code* argument was a list of non-ints.

View file

@ -1,4 +0,0 @@
Fix :func:`tty.setraw` and :func:`tty.setcbreak`: previously they returned
partially modified list of the original tty attributes.
:func:`tty.cfmakeraw` and :func:`tty.cfmakecbreak` now make a copy of the
list of special characters before modifying it.

View file

@ -1,4 +0,0 @@
Fix a couple of issues in :meth:`pathlib.PurePath.with_name`: a single dot
was incorrectly considered a valid name, and in :class:`PureWindowsPath`, a
name with an NTFS alternate data stream, like ``a:b``, was incorrectly
considered invalid.

View file

@ -1 +0,0 @@
Make turtledemo run without default root enabled.

View file

@ -1,3 +0,0 @@
Fix invalid state handling in :class:`asyncio.TaskGroup` and
:class:`asyncio.Timeout`. They now raise proper RuntimeError if they are
improperly used and are left in consistent state after this.

View file

@ -1 +0,0 @@
Fix :mod:`doctest` output comparison for exceptions with notes.

View file

@ -1 +0,0 @@
Postpone removal version for locale.getdefaultlocale() to Python 3.15.

View file

@ -1,2 +0,0 @@
Fix crash in :meth:`io.BytesIO.getbuffer` called repeatedly for empty
BytesIO.

View file

@ -1 +0,0 @@
Fix :mod:`_blake2` not checking for errors when initializing.

View file

@ -1 +0,0 @@
Add error checking during :mod:`!_socket` module init.

View file

@ -1 +0,0 @@
Fix :mod:`time` not checking for errors when initializing.

View file

@ -1,6 +0,0 @@
Another attempt at fixing :func:`asyncio.Server.wait_closed()`. It now
blocks until both conditions are true: the server is closed, *and* there
are no more active connections. (This means that in some cases where in
3.12.0 this function would *incorrectly* have returned immediately,
it will now block; in particular, when there are no active connections
but the server hasn't been closed yet.)

View file

@ -1,6 +0,0 @@
Fix the behavior of :mod:`tkinter` widget's ``unbind()`` method with two
arguments. Previously, ``widget.unbind(sequence, funcid)`` destroyed the
current binding for *sequence*, leaving *sequence* unbound, and deleted the
*funcid* command. Now it removes only *funcid* from the binding for
*sequence*, keeping other commands, and deletes the *funcid* command. It
leaves *sequence* unbound only if *funcid* was the last bound command.

View file

@ -1,4 +0,0 @@
Remove mention of not supported "vsapi" element type in
:meth:`tkinter.ttk.Style.element_create`. Add tests for ``element_create()``
and other ``ttk.Style`` methods. Add examples for ``element_create()`` in
the documentation.

View file

@ -1 +0,0 @@
Fixed typo in :func:`math.sumprod`.

View file

@ -1 +0,0 @@
Added :func:`io.text_encoding()`, :data:`io.DEFAULT_BUFFER_SIZE`, and :class:`io.IncrementalNewlineDecoder` to ``io.__all__``.

Some files were not shown because too many files have changed in this diff Show more