]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Python 3.12.0rc2 v3.12.0rc2
authorThomas Wouters <thomas@python.org>
Tue, 5 Sep 2023 21:55:58 +0000 (23:55 +0200)
committerThomas Wouters <thomas@python.org>
Tue, 5 Sep 2023 21:57:19 +0000 (23:57 +0200)
52 files changed:
Include/patchlevel.h
Lib/pydoc_data/topics.py
Misc/NEWS.d/3.12.0rc2.rst [new file with mode: 0644]
Misc/NEWS.d/next/Build/2023-08-09-17-05-33.gh-issue-107814.c0Oapq.rst [deleted file]
Misc/NEWS.d/next/Build/2023-09-02-18-04-15.gh-issue-63760.r8hJ6q.rst [deleted file]
Misc/NEWS.d/next/C API/2023-08-10-11-12-25.gh-issue-107810.oJ40Qx.rst [deleted file]
Misc/NEWS.d/next/C API/2023-08-13-12-33-00.gh-issue-107915.jQ0wOi.rst [deleted file]
Misc/NEWS.d/next/C API/2023-08-14-10-59-03.gh-issue-107916.KH4Muo.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-07-25-22-35-35.gh-issue-77377.EHAbXx.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-02-12-24-51.gh-issue-107080.PNolFU.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-04-21-25-26.gh-issue-107724.EbBXMr.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-10-17-36-27.gh-issue-91051.LfaeNW.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-13-17-18-22.gh-issue-108390.TkBccC.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-21-21-13-30.gh-issue-107901.hszvdk.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-25-14-51-06.gh-issue-106176.D1EA2a.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-26-04-33-18.gh-issue-108487.aUFxqf.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-29-17-53-12.gh-issue-108654.jbkDVo.rst [deleted file]
Misc/NEWS.d/next/Core and Builtins/2023-08-30-15-41-47.gh-issue-108520.u0ZGP_.rst [deleted file]
Misc/NEWS.d/next/Documentation/2023-05-29-14-10-24.gh-issue-105052.MGFwbm.rst [deleted file]
Misc/NEWS.d/next/Library/2022-11-26-22-05-22.gh-issue-99203.j0DUae.rst [deleted file]
Misc/NEWS.d/next/Library/2023-03-14-01-19-57.gh-issue-100061.CiXJYn.rst [deleted file]
Misc/NEWS.d/next/Library/2023-07-07-14-52-31.gh-issue-106052.ak8nbs.rst [deleted file]
Misc/NEWS.d/next/Library/2023-07-31-07-36-24.gh-issue-107396.3_Kh6D.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-05-05-10-41.gh-issue-106684.P9zRXb.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-06-15-29-00.gh-issue-100814.h195gW.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-07-14-12-07.gh-issue-107715.238r2f.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-09-13-49-37.gh-issue-107805.ezem0k.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-10-17-36-22.gh-issue-107845.dABiMJ.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-14-11-18-13.gh-issue-107913.4ooY6i.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-14-23-11-11.gh-issue-106242.71HMym.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-15-18-20-00.gh-issue-107963.20g5BG.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-17-12-59-35.gh-issue-108083.9J7UcT.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-17-14-45-25.gh-issue-105736.NJsH7r.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-22-17-27-12.gh-issue-108111.N7a4u_.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-22-22-29-42.gh-issue-64662.jHl_Bt.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-26-08-38-57.gh-issue-108295.Pn0QRM.rst [deleted file]
Misc/NEWS.d/next/Library/2023-08-30-20-10-28.gh-issue-108682.c2gzLQ.rst [deleted file]
Misc/NEWS.d/next/Library/2023-09-03-04-37-52.gh-issue-108469.kusj40.rst [deleted file]
Misc/NEWS.d/next/Security/2023-08-05-03-51-05.gh-issue-107774.VPjaTR.rst [deleted file]
Misc/NEWS.d/next/Security/2023-08-22-17-39-12.gh-issue-108310.fVM3sg.rst [deleted file]
Misc/NEWS.d/next/Tests/2023-07-24-16-56-59.gh-issue-107178.Gq1usE.rst [deleted file]
Misc/NEWS.d/next/Tests/2023-08-23-04-08-18.gh-issue-105776.oE6wp_.rst [deleted file]
Misc/NEWS.d/next/Tests/2023-08-24-04-23-35.gh-issue-108388.mr0MeE.rst [deleted file]
Misc/NEWS.d/next/Tests/2023-08-24-06-10-36.gh-issue-108388.YCVB0D.rst [deleted file]
Misc/NEWS.d/next/Tests/2023-09-04-15-18-14.gh-issue-89392.8A4T5p.rst [deleted file]
Misc/NEWS.d/next/Tools-Demos/2023-08-07-16-30-48.gh-issue-95065.-im4R5.rst [deleted file]
Misc/NEWS.d/next/Tools-Demos/2023-08-12-13-18-15.gh-issue-107565.Tv22Ne.rst [deleted file]
Misc/NEWS.d/next/Windows/2023-07-18-13-01-26.gh-issue-106844.mci4xO.rst [deleted file]
Misc/NEWS.d/next/Windows/2023-08-22-00-36-57.gh-issue-106242.q24ITw.rst [deleted file]
Misc/NEWS.d/next/Windows/2023-09-05-10-08-47.gh-issue-107565.CIMftz.rst [deleted file]
Misc/NEWS.d/next/macOS/2023-08-12-13-33-57.gh-issue-107565.SJwqf4.rst [deleted file]
README.rst

index 29a87c5a3f5ef6e482a9ddeffca610f7da570c07..5fd803e587f4dc274b13510547051183eb3a243c 100644 (file)
 #define PY_MINOR_VERSION        12
 #define PY_MICRO_VERSION        0
 #define PY_RELEASE_LEVEL        PY_RELEASE_LEVEL_GAMMA
-#define PY_RELEASE_SERIAL       1
+#define PY_RELEASE_SERIAL       2
 
 /* Version as a string */
-#define PY_VERSION              "3.12.0rc1+"
+#define PY_VERSION              "3.12.0rc2"
 /*--end constants--*/
 
 /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
index 8d19a85963fe4373d25423b0e9482b5638e1d0bd..3436f03b47e4ec185fe9b67af73cab680927133e 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Autogenerated by Sphinx on Sat Aug  5 14:10:40 2023
+# Autogenerated by Sphinx on Tue Sep  5 23:56:33 2023
 # as part of the release process.
 topics = {'assert': 'The "assert" statement\n'
            '**********************\n'
@@ -1006,9 +1006,7 @@ topics = {'assert': 'The "assert" statement\n'
                      'for each\n'
                      '   instance.\n'
                      '\n'
-                     '\n'
-                     'Notes on using *__slots__*\n'
-                     '--------------------------\n'
+                     'Notes on using *__slots__*:\n'
                      '\n'
                      '* When inheriting from a class without *__slots__*, the '
                      '"__dict__" and\n'
@@ -10581,9 +10579,7 @@ topics = {'assert': 'The "assert" statement\n'
                  'each\n'
                  '   instance.\n'
                  '\n'
-                 '\n'
-                 'Notes on using *__slots__*\n'
-                 '~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
+                 'Notes on using *__slots__*:\n'
                  '\n'
                  '* When inheriting from a class without *__slots__*, the '
                  '"__dict__" and\n'
@@ -13544,1156 +13540,1185 @@ topics = {'assert': 'The "assert" statement\n'
           'definition\n'
           'may change in the future.\n'
           '\n'
+          '\n'
           'None\n'
-          '   This type has a single value.  There is a single object with '
-          'this\n'
-          '   value. This object is accessed through the built-in name "None". '
-          'It\n'
-          '   is used to signify the absence of a value in many situations, '
-          'e.g.,\n'
-          '   it is returned from functions that don’t explicitly return\n'
-          '   anything. Its truth value is false.\n'
+          '====\n'
+          '\n'
+          'This type has a single value.  There is a single object with this\n'
+          'value. This object is accessed through the built-in name "None". It '
+          'is\n'
+          'used to signify the absence of a value in many situations, e.g., it '
+          'is\n'
+          'returned from functions that don’t explicitly return anything. Its\n'
+          'truth value is false.\n'
+          '\n'
           '\n'
           'NotImplemented\n'
-          '   This type has a single value.  There is a single object with '
-          'this\n'
-          '   value. This object is accessed through the built-in name\n'
-          '   "NotImplemented". Numeric methods and rich comparison methods\n'
-          '   should return this value if they do not implement the operation '
-          'for\n'
-          '   the operands provided.  (The interpreter will then try the\n'
-          '   reflected operation, or some other fallback, depending on the\n'
-          '   operator.)  It should not be evaluated in a boolean context.\n'
+          '==============\n'
           '\n'
-          '   See Implementing the arithmetic operations for more details.\n'
+          'This type has a single value.  There is a single object with this\n'
+          'value. This object is accessed through the built-in name\n'
+          '"NotImplemented". Numeric methods and rich comparison methods '
+          'should\n'
+          'return this value if they do not implement the operation for the\n'
+          'operands provided.  (The interpreter will then try the reflected\n'
+          'operation, or some other fallback, depending on the operator.)  It\n'
+          'should not be evaluated in a boolean context.\n'
+          '\n'
+          'See Implementing the arithmetic operations for more details.\n'
+          '\n'
+          'Changed in version 3.9: Evaluating "NotImplemented" in a boolean\n'
+          'context is deprecated. While it currently evaluates as true, it '
+          'will\n'
+          'emit a "DeprecationWarning". It will raise a "TypeError" in a '
+          'future\n'
+          'version of Python.\n'
           '\n'
-          '   Changed in version 3.9: Evaluating "NotImplemented" in a '
-          'boolean\n'
-          '   context is deprecated. While it currently evaluates as true, it\n'
-          '   will emit a "DeprecationWarning". It will raise a "TypeError" in '
-          'a\n'
-          '   future version of Python.\n'
           '\n'
           'Ellipsis\n'
-          '   This type has a single value.  There is a single object with '
-          'this\n'
-          '   value. This object is accessed through the literal "..." or the\n'
-          '   built-in name "Ellipsis".  Its truth value is true.\n'
+          '========\n'
+          '\n'
+          'This type has a single value.  There is a single object with this\n'
+          'value. This object is accessed through the literal "..." or the '
+          'built-\n'
+          'in name "Ellipsis".  Its truth value is true.\n'
+          '\n'
           '\n'
           '"numbers.Number"\n'
-          '   These are created by numeric literals and returned as results '
-          'by\n'
-          '   arithmetic operators and arithmetic built-in functions.  '
-          'Numeric\n'
-          '   objects are immutable; once created their value never changes.\n'
-          '   Python numbers are of course strongly related to mathematical\n'
-          '   numbers, but subject to the limitations of numerical '
-          'representation\n'
-          '   in computers.\n'
-          '\n'
-          '   The string representations of the numeric classes, computed by\n'
-          '   "__repr__()" and "__str__()", have the following properties:\n'
-          '\n'
-          '   * They are valid numeric literals which, when passed to their '
+          '================\n'
+          '\n'
+          'These are created by numeric literals and returned as results by\n'
+          'arithmetic operators and arithmetic built-in functions.  Numeric\n'
+          'objects are immutable; once created their value never changes.  '
+          'Python\n'
+          'numbers are of course strongly related to mathematical numbers, '
+          'but\n'
+          'subject to the limitations of numerical representation in '
+          'computers.\n'
+          '\n'
+          'The string representations of the numeric classes, computed by\n'
+          '"__repr__()" and "__str__()", have the following properties:\n'
+          '\n'
+          '* They are valid numeric literals which, when passed to their '
           'class\n'
-          '     constructor, produce an object having the value of the '
-          'original\n'
-          '     numeric.\n'
+          '  constructor, produce an object having the value of the original\n'
+          '  numeric.\n'
           '\n'
-          '   * The representation is in base 10, when possible.\n'
+          '* The representation is in base 10, when possible.\n'
           '\n'
-          '   * Leading zeros, possibly excepting a single zero before a '
-          'decimal\n'
-          '     point, are not shown.\n'
+          '* Leading zeros, possibly excepting a single zero before a decimal\n'
+          '  point, are not shown.\n'
           '\n'
-          '   * Trailing zeros, possibly excepting a single zero after a '
-          'decimal\n'
-          '     point, are not shown.\n'
+          '* Trailing zeros, possibly excepting a single zero after a decimal\n'
+          '  point, are not shown.\n'
           '\n'
-          '   * A sign is shown only when the number is negative.\n'
+          '* A sign is shown only when the number is negative.\n'
           '\n'
-          '   Python distinguishes between integers, floating point numbers, '
-          'and\n'
-          '   complex numbers:\n'
+          'Python distinguishes between integers, floating point numbers, and\n'
+          'complex numbers:\n'
           '\n'
-          '   "numbers.Integral"\n'
-          '      These represent elements from the mathematical set of '
-          'integers\n'
-          '      (positive and negative).\n'
           '\n'
-          '      There are two types of integers:\n'
+          '"numbers.Integral"\n'
+          '------------------\n'
           '\n'
-          '      Integers ("int")\n'
-          '         These represent numbers in an unlimited range, subject to\n'
-          '         available (virtual) memory only.  For the purpose of '
-          'shift\n'
-          '         and mask operations, a binary representation is assumed, '
-          'and\n'
-          '         negative numbers are represented in a variant of 2’s\n'
-          '         complement which gives the illusion of an infinite string '
-          'of\n'
-          '         sign bits extending to the left.\n'
+          'These represent elements from the mathematical set of integers\n'
+          '(positive and negative).\n'
           '\n'
-          '      Booleans ("bool")\n'
-          '         These represent the truth values False and True.  The two\n'
-          '         objects representing the values "False" and "True" are '
-          'the\n'
-          '         only Boolean objects. The Boolean type is a subtype of '
+          'Note:\n'
+          '\n'
+          '  The rules for integer representation are intended to give the '
+          'most\n'
+          '  meaningful interpretation of shift and mask operations involving\n'
+          '  negative integers.\n'
+          '\n'
+          'There are two types of integers:\n'
+          '\n'
+          'Integers ("int")\n'
+          '   These represent numbers in an unlimited range, subject to '
+          'available\n'
+          '   (virtual) memory only.  For the purpose of shift and mask\n'
+          '   operations, a binary representation is assumed, and negative\n'
+          '   numbers are represented in a variant of 2’s complement which '
+          'gives\n'
+          '   the illusion of an infinite string of sign bits extending to '
           'the\n'
-          '         integer type, and Boolean values behave like the values 0 '
-          'and\n'
-          '         1, respectively, in almost all contexts, the exception '
-          'being\n'
-          '         that when converted to a string, the strings ""False"" or\n'
-          '         ""True"" are returned, respectively.\n'
+          '   left.\n'
+          '\n'
+          'Booleans ("bool")\n'
+          '   These represent the truth values False and True.  The two '
+          'objects\n'
+          '   representing the values "False" and "True" are the only Boolean\n'
+          '   objects. The Boolean type is a subtype of the integer type, and\n'
+          '   Boolean values behave like the values 0 and 1, respectively, in\n'
+          '   almost all contexts, the exception being that when converted to '
+          'a\n'
+          '   string, the strings ""False"" or ""True"" are returned,\n'
+          '   respectively.\n'
           '\n'
-          '      The rules for integer representation are intended to give '
+          '\n'
+          '"numbers.Real" ("float")\n'
+          '------------------------\n'
+          '\n'
+          'These represent machine-level double precision floating point '
+          'numbers.\n'
+          'You are at the mercy of the underlying machine architecture (and C '
+          'or\n'
+          'Java implementation) for the accepted range and handling of '
+          'overflow.\n'
+          'Python does not support single-precision floating point numbers; '
           'the\n'
-          '      most meaningful interpretation of shift and mask operations\n'
-          '      involving negative integers.\n'
-          '\n'
-          '   "numbers.Real" ("float")\n'
-          '      These represent machine-level double precision floating '
-          'point\n'
-          '      numbers. You are at the mercy of the underlying machine\n'
-          '      architecture (and C or Java implementation) for the accepted\n'
-          '      range and handling of overflow. Python does not support '
-          'single-\n'
-          '      precision floating point numbers; the savings in processor '
-          'and\n'
-          '      memory usage that are usually the reason for using these are\n'
-          '      dwarfed by the overhead of using objects in Python, so there '
-          'is\n'
-          '      no reason to complicate the language with two kinds of '
-          'floating\n'
-          '      point numbers.\n'
-          '\n'
-          '   "numbers.Complex" ("complex")\n'
-          '      These represent complex numbers as a pair of machine-level\n'
-          '      double precision floating point numbers.  The same caveats '
-          'apply\n'
-          '      as for floating point numbers. The real and imaginary parts '
-          'of a\n'
-          '      complex number "z" can be retrieved through the read-only\n'
-          '      attributes "z.real" and "z.imag".\n'
+          'savings in processor and memory usage that are usually the reason '
+          'for\n'
+          'using these are dwarfed by the overhead of using objects in Python, '
+          'so\n'
+          'there is no reason to complicate the language with two kinds of\n'
+          'floating point numbers.\n'
+          '\n'
+          '\n'
+          '"numbers.Complex" ("complex")\n'
+          '-----------------------------\n'
+          '\n'
+          'These represent complex numbers as a pair of machine-level double\n'
+          'precision floating point numbers.  The same caveats apply as for\n'
+          'floating point numbers. The real and imaginary parts of a complex\n'
+          'number "z" can be retrieved through the read-only attributes '
+          '"z.real"\n'
+          'and "z.imag".\n'
+          '\n'
           '\n'
           'Sequences\n'
-          '   These represent finite ordered sets indexed by non-negative\n'
-          '   numbers. The built-in function "len()" returns the number of '
-          'items\n'
-          '   of a sequence. When the length of a sequence is *n*, the index '
+          '=========\n'
+          '\n'
+          'These represent finite ordered sets indexed by non-negative '
+          'numbers.\n'
+          'The built-in function "len()" returns the number of items of a\n'
+          'sequence. When the length of a sequence is *n*, the index set '
+          'contains\n'
+          'the numbers 0, 1, …, *n*-1.  Item *i* of sequence *a* is selected '
+          'by\n'
+          '"a[i]".\n'
+          '\n'
+          'Sequences also support slicing: "a[i:j]" selects all items with '
+          'index\n'
+          '*k* such that *i* "<=" *k* "<" *j*.  When used as an expression, a\n'
+          'slice is a sequence of the same type.  This implies that the index '
           'set\n'
-          '   contains the numbers 0, 1, …, *n*-1.  Item *i* of sequence *a* '
-          'is\n'
-          '   selected by "a[i]".\n'
+          'is renumbered so that it starts at 0.\n'
           '\n'
-          '   Sequences also support slicing: "a[i:j]" selects all items with\n'
-          '   index *k* such that *i* "<=" *k* "<" *j*.  When used as an\n'
-          '   expression, a slice is a sequence of the same type.  This '
-          'implies\n'
-          '   that the index set is renumbered so that it starts at 0.\n'
+          'Some sequences also support “extended slicing” with a third “step”\n'
+          'parameter: "a[i:j:k]" selects all items of *a* with index *x* where '
+          '"x\n'
+          '= i + n*k", *n* ">=" "0" and *i* "<=" *x* "<" *j*.\n'
           '\n'
-          '   Some sequences also support “extended slicing” with a third '
-          '“step”\n'
-          '   parameter: "a[i:j:k]" selects all items of *a* with index *x* '
-          'where\n'
-          '   "x = i + n*k", *n* ">=" "0" and *i* "<=" *x* "<" *j*.\n'
+          'Sequences are distinguished according to their mutability:\n'
           '\n'
-          '   Sequences are distinguished according to their mutability:\n'
           '\n'
-          '   Immutable sequences\n'
-          '      An object of an immutable sequence type cannot change once it '
-          'is\n'
-          '      created.  (If the object contains references to other '
-          'objects,\n'
-          '      these other objects may be mutable and may be changed; '
-          'however,\n'
-          '      the collection of objects directly referenced by an '
-          'immutable\n'
-          '      object cannot change.)\n'
+          'Immutable sequences\n'
+          '-------------------\n'
           '\n'
-          '      The following types are immutable sequences:\n'
+          'An object of an immutable sequence type cannot change once it is\n'
+          'created.  (If the object contains references to other objects, '
+          'these\n'
+          'other objects may be mutable and may be changed; however, the\n'
+          'collection of objects directly referenced by an immutable object\n'
+          'cannot change.)\n'
           '\n'
-          '      Strings\n'
-          '         A string is a sequence of values that represent Unicode '
-          'code\n'
-          '         points. All the code points in the range "U+0000 - '
-          'U+10FFFF"\n'
-          '         can be represented in a string.  Python doesn’t have a '
-          'char\n'
-          '         type; instead, every code point in the string is '
-          'represented\n'
-          '         as a string object with length "1".  The built-in '
-          'function\n'
-          '         "ord()" converts a code point from its string form to an\n'
-          '         integer in the range "0 - 10FFFF"; "chr()" converts an\n'
-          '         integer in the range "0 - 10FFFF" to the corresponding '
-          'length\n'
-          '         "1" string object. "str.encode()" can be used to convert '
-          'a\n'
-          '         "str" to "bytes" using the given text encoding, and\n'
-          '         "bytes.decode()" can be used to achieve the opposite.\n'
+          'The following types are immutable sequences:\n'
           '\n'
-          '      Tuples\n'
-          '         The items of a tuple are arbitrary Python objects. Tuples '
-          'of\n'
-          '         two or more items are formed by comma-separated lists of\n'
-          '         expressions.  A tuple of one item (a ‘singleton’) can be\n'
-          '         formed by affixing a comma to an expression (an expression '
-          'by\n'
-          '         itself does not create a tuple, since parentheses must be\n'
-          '         usable for grouping of expressions).  An empty tuple can '
+          'Strings\n'
+          '   A string is a sequence of values that represent Unicode code\n'
+          '   points. All the code points in the range "U+0000 - U+10FFFF" can '
           'be\n'
-          '         formed by an empty pair of parentheses.\n'
-          '\n'
-          '      Bytes\n'
-          '         A bytes object is an immutable array.  The items are '
-          '8-bit\n'
-          '         bytes, represented by integers in the range 0 <= x < 256.\n'
-          '         Bytes literals (like "b\'abc\'") and the built-in '
-          '"bytes()"\n'
-          '         constructor can be used to create bytes objects.  Also, '
-          'bytes\n'
-          '         objects can be decoded to strings via the "decode()" '
-          'method.\n'
+          '   represented in a string.  Python doesn’t have a char type; '
+          'instead,\n'
+          '   every code point in the string is represented as a string '
+          'object\n'
+          '   with length "1".  The built-in function "ord()" converts a code\n'
+          '   point from its string form to an integer in the range "0 - '
+          '10FFFF";\n'
+          '   "chr()" converts an integer in the range "0 - 10FFFF" to the\n'
+          '   corresponding length "1" string object. "str.encode()" can be '
+          'used\n'
+          '   to convert a "str" to "bytes" using the given text encoding, '
+          'and\n'
+          '   "bytes.decode()" can be used to achieve the opposite.\n'
           '\n'
-          '   Mutable sequences\n'
-          '      Mutable sequences can be changed after they are created.  '
-          'The\n'
-          '      subscription and slicing notations can be used as the target '
+          'Tuples\n'
+          '   The items of a tuple are arbitrary Python objects. Tuples of two '
+          'or\n'
+          '   more items are formed by comma-separated lists of expressions.  '
+          'A\n'
+          '   tuple of one item (a ‘singleton’) can be formed by affixing a '
+          'comma\n'
+          '   to an expression (an expression by itself does not create a '
+          'tuple,\n'
+          '   since parentheses must be usable for grouping of expressions).  '
+          'An\n'
+          '   empty tuple can be formed by an empty pair of parentheses.\n'
+          '\n'
+          'Bytes\n'
+          '   A bytes object is an immutable array.  The items are 8-bit '
+          'bytes,\n'
+          '   represented by integers in the range 0 <= x < 256.  Bytes '
+          'literals\n'
+          '   (like "b\'abc\'") and the built-in "bytes()" constructor can be '
+          'used\n'
+          '   to create bytes objects.  Also, bytes objects can be decoded to\n'
+          '   strings via the "decode()" method.\n'
+          '\n'
+          '\n'
+          'Mutable sequences\n'
+          '-----------------\n'
+          '\n'
+          'Mutable sequences can be changed after they are created.  The\n'
+          'subscription and slicing notations can be used as the target of\n'
+          'assignment and "del" (delete) statements.\n'
+          '\n'
+          'Note:\n'
+          '\n'
+          '  The "collections" and "array" module provide additional examples '
           'of\n'
-          '      assignment and "del" (delete) statements.\n'
+          '  mutable sequence types.\n'
           '\n'
-          '      There are currently two intrinsic mutable sequence types:\n'
+          'There are currently two intrinsic mutable sequence types:\n'
           '\n'
-          '      Lists\n'
-          '         The items of a list are arbitrary Python objects.  Lists '
-          'are\n'
-          '         formed by placing a comma-separated list of expressions '
-          'in\n'
-          '         square brackets. (Note that there are no special cases '
-          'needed\n'
-          '         to form lists of length 0 or 1.)\n'
+          'Lists\n'
+          '   The items of a list are arbitrary Python objects.  Lists are '
+          'formed\n'
+          '   by placing a comma-separated list of expressions in square\n'
+          '   brackets. (Note that there are no special cases needed to form\n'
+          '   lists of length 0 or 1.)\n'
           '\n'
-          '      Byte Arrays\n'
-          '         A bytearray object is a mutable array. They are created '
-          'by\n'
-          '         the built-in "bytearray()" constructor.  Aside from being\n'
-          '         mutable (and hence unhashable), byte arrays otherwise '
-          'provide\n'
-          '         the same interface and functionality as immutable "bytes"\n'
-          '         objects.\n'
+          'Byte Arrays\n'
+          '   A bytearray object is a mutable array. They are created by the\n'
+          '   built-in "bytearray()" constructor.  Aside from being mutable '
+          '(and\n'
+          '   hence unhashable), byte arrays otherwise provide the same '
+          'interface\n'
+          '   and functionality as immutable "bytes" objects.\n'
           '\n'
-          '      The extension module "array" provides an additional example '
-          'of a\n'
-          '      mutable sequence type, as does the "collections" module.\n'
           '\n'
           'Set types\n'
-          '   These represent unordered, finite sets of unique, immutable\n'
-          '   objects. As such, they cannot be indexed by any subscript. '
-          'However,\n'
-          '   they can be iterated over, and the built-in function "len()"\n'
-          '   returns the number of items in a set. Common uses for sets are '
-          'fast\n'
-          '   membership testing, removing duplicates from a sequence, and\n'
-          '   computing mathematical operations such as intersection, union,\n'
-          '   difference, and symmetric difference.\n'
-          '\n'
-          '   For set elements, the same immutability rules apply as for\n'
-          '   dictionary keys. Note that numeric types obey the normal rules '
-          'for\n'
-          '   numeric comparison: if two numbers compare equal (e.g., "1" and\n'
-          '   "1.0"), only one of them can be contained in a set.\n'
+          '=========\n'
+          '\n'
+          'These represent unordered, finite sets of unique, immutable '
+          'objects.\n'
+          'As such, they cannot be indexed by any subscript. However, they can '
+          'be\n'
+          'iterated over, and the built-in function "len()" returns the number '
+          'of\n'
+          'items in a set. Common uses for sets are fast membership testing,\n'
+          'removing duplicates from a sequence, and computing mathematical\n'
+          'operations such as intersection, union, difference, and symmetric\n'
+          'difference.\n'
+          '\n'
+          'For set elements, the same immutability rules apply as for '
+          'dictionary\n'
+          'keys. Note that numeric types obey the normal rules for numeric\n'
+          'comparison: if two numbers compare equal (e.g., "1" and "1.0"), '
+          'only\n'
+          'one of them can be contained in a set.\n'
           '\n'
-          '   There are currently two intrinsic set types:\n'
+          'There are currently two intrinsic set types:\n'
           '\n'
-          '   Sets\n'
-          '      These represent a mutable set. They are created by the '
+          'Sets\n'
+          '   These represent a mutable set. They are created by the built-in\n'
+          '   "set()" constructor and can be modified afterwards by several\n'
+          '   methods, such as "add()".\n'
+          '\n'
+          'Frozen sets\n'
+          '   These represent an immutable set.  They are created by the '
           'built-in\n'
-          '      "set()" constructor and can be modified afterwards by '
-          'several\n'
-          '      methods, such as "add()".\n'
-          '\n'
-          '   Frozen sets\n'
-          '      These represent an immutable set.  They are created by the\n'
-          '      built-in "frozenset()" constructor.  As a frozenset is '
-          'immutable\n'
-          '      and *hashable*, it can be used again as an element of '
-          'another\n'
-          '      set, or as a dictionary key.\n'
+          '   "frozenset()" constructor.  As a frozenset is immutable and\n'
+          '   *hashable*, it can be used again as an element of another set, '
+          'or\n'
+          '   as a dictionary key.\n'
+          '\n'
           '\n'
           'Mappings\n'
-          '   These represent finite sets of objects indexed by arbitrary '
-          'index\n'
-          '   sets. The subscript notation "a[k]" selects the item indexed by '
+          '========\n'
+          '\n'
+          'These represent finite sets of objects indexed by arbitrary index\n'
+          'sets. The subscript notation "a[k]" selects the item indexed by '
           '"k"\n'
-          '   from the mapping "a"; this can be used in expressions and as '
-          'the\n'
-          '   target of assignments or "del" statements. The built-in '
-          'function\n'
-          '   "len()" returns the number of items in a mapping.\n'
+          'from the mapping "a"; this can be used in expressions and as the\n'
+          'target of assignments or "del" statements. The built-in function\n'
+          '"len()" returns the number of items in a mapping.\n'
           '\n'
-          '   There is currently a single intrinsic mapping type:\n'
+          'There is currently a single intrinsic mapping type:\n'
           '\n'
-          '   Dictionaries\n'
-          '      These represent finite sets of objects indexed by nearly\n'
-          '      arbitrary values.  The only types of values not acceptable '
-          'as\n'
-          '      keys are values containing lists or dictionaries or other\n'
-          '      mutable types that are compared by value rather than by '
-          'object\n'
-          '      identity, the reason being that the efficient implementation '
-          'of\n'
-          '      dictionaries requires a key’s hash value to remain constant.\n'
-          '      Numeric types used for keys obey the normal rules for '
-          'numeric\n'
-          '      comparison: if two numbers compare equal (e.g., "1" and '
-          '"1.0")\n'
-          '      then they can be used interchangeably to index the same\n'
-          '      dictionary entry.\n'
-          '\n'
-          '      Dictionaries preserve insertion order, meaning that keys will '
-          'be\n'
-          '      produced in the same order they were added sequentially over '
-          'the\n'
-          '      dictionary. Replacing an existing key does not change the '
-          'order,\n'
-          '      however removing a key and re-inserting it will add it to '
+          '\n'
+          'Dictionaries\n'
+          '------------\n'
+          '\n'
+          'These represent finite sets of objects indexed by nearly arbitrary\n'
+          'values.  The only types of values not acceptable as keys are '
+          'values\n'
+          'containing lists or dictionaries or other mutable types that are\n'
+          'compared by value rather than by object identity, the reason being\n'
+          'that the efficient implementation of dictionaries requires a key’s\n'
+          'hash value to remain constant. Numeric types used for keys obey '
           'the\n'
-          '      end instead of keeping its old place.\n'
+          'normal rules for numeric comparison: if two numbers compare equal\n'
+          '(e.g., "1" and "1.0") then they can be used interchangeably to '
+          'index\n'
+          'the same dictionary entry.\n'
           '\n'
-          '      Dictionaries are mutable; they can be created by the "{...}"\n'
-          '      notation (see section Dictionary displays).\n'
+          'Dictionaries preserve insertion order, meaning that keys will be\n'
+          'produced in the same order they were added sequentially over the\n'
+          'dictionary. Replacing an existing key does not change the order,\n'
+          'however removing a key and re-inserting it will add it to the end\n'
+          'instead of keeping its old place.\n'
           '\n'
-          '      The extension modules "dbm.ndbm" and "dbm.gnu" provide\n'
-          '      additional examples of mapping types, as does the '
-          '"collections"\n'
-          '      module.\n'
+          'Dictionaries are mutable; they can be created by the "{...}" '
+          'notation\n'
+          '(see section Dictionary displays).\n'
+          '\n'
+          'The extension modules "dbm.ndbm" and "dbm.gnu" provide additional\n'
+          'examples of mapping types, as does the "collections" module.\n'
+          '\n'
+          'Changed in version 3.7: Dictionaries did not preserve insertion '
+          'order\n'
+          'in versions of Python before 3.6. In CPython 3.6, insertion order '
+          'was\n'
+          'preserved, but it was considered an implementation detail at that '
+          'time\n'
+          'rather than a language guarantee.\n'
           '\n'
-          '      Changed in version 3.7: Dictionaries did not preserve '
-          'insertion\n'
-          '      order in versions of Python before 3.6. In CPython 3.6,\n'
-          '      insertion order was preserved, but it was considered an\n'
-          '      implementation detail at that time rather than a language\n'
-          '      guarantee.\n'
           '\n'
           'Callable types\n'
-          '   These are the types to which the function call operation (see\n'
-          '   section Calls) can be applied:\n'
+          '==============\n'
+          '\n'
+          'These are the types to which the function call operation (see '
+          'section\n'
+          'Calls) can be applied:\n'
           '\n'
-          '   User-defined functions\n'
-          '      A user-defined function object is created by a function\n'
-          '      definition (see section Function definitions).  It should be\n'
-          '      called with an argument list containing the same number of '
-          'items\n'
-          '      as the function’s formal parameter list.\n'
           '\n'
-          '      Special attributes:\n'
+          'User-defined functions\n'
+          '----------------------\n'
+          '\n'
+          'A user-defined function object is created by a function definition\n'
+          '(see section Function definitions).  It should be called with an\n'
+          'argument list containing the same number of items as the '
+          'function’s\n'
+          'formal parameter list.\n'
+          '\n'
+          'Special attributes:\n'
           '\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | Attribute                 | Meaning                         '
+          '| Attribute                 | Meaning                         '
           '|             |\n'
-          '      '
           '|===========================|=================================|=============|\n'
-          '      | "__doc__"                 | The function’s documentation    '
-          'Writable    |\n'
-          '      |                           | string, or "None" if            '
+          '| "__doc__"                 | The function’s documentation    | '
+          'Writable    |\n'
+          '|                           | string, or "None" if            '
           '|             |\n'
-          '      |                           | unavailable; not inherited by   '
+          '|                           | unavailable; not inherited by   '
           '|             |\n'
-          '      |                           | subclasses.                     '
+          '|                           | subclasses.                     '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__name__"                | The function’s name.            '
-          '| Writable    |\n'
-          '      '
+          '| "__name__"                | The function’s name.            | '
+          'Writable    |\n'
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__qualname__"            | The function’s *qualified       '
-          'Writable    |\n'
-          '      |                           | name*.  New in version 3.3.     '
+          '| "__qualname__"            | The function’s *qualified       | '
+          'Writable    |\n'
+          '|                           | name*.  New in version 3.3.     '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__module__"              | The name of the module the      '
-          'Writable    |\n'
-          '      |                           | function was defined in, or     '
+          '| "__module__"              | The name of the module the      | '
+          'Writable    |\n'
+          '|                           | function was defined in, or     '
           '|             |\n'
-          '      |                           | "None" if unavailable.          '
+          '|                           | "None" if unavailable.          '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__defaults__"            | A tuple containing default      '
-          'Writable    |\n'
-          '      |                           | argument values for those       '
+          '| "__defaults__"            | A tuple containing default      | '
+          'Writable    |\n'
+          '|                           | argument values for those       '
           '|             |\n'
-          '      |                           | arguments that have defaults,   '
+          '|                           | arguments that have defaults,   '
           '|             |\n'
-          '      |                           | or "None" if no arguments have  '
+          '|                           | or "None" if no arguments have  '
           '|             |\n'
-          '      |                           | a default value.                '
+          '|                           | a default value.                '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__code__"                | The code object representing    '
-          'Writable    |\n'
-          '      |                           | the compiled function body.     '
+          '| "__code__"                | The code object representing    | '
+          'Writable    |\n'
+          '|                           | the compiled function body.     '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__globals__"             | A reference to the dictionary   '
-          'Read-only   |\n'
-          '      |                           | that holds the function’s       '
+          '| "__globals__"             | A reference to the dictionary   | '
+          'Read-only   |\n'
+          '|                           | that holds the function’s       '
           '|             |\n'
-          '      |                           | global variables — the global   '
+          '|                           | global variables — the global   '
           '|             |\n'
-          '      |                           | namespace of the module in      '
+          '|                           | namespace of the module in      '
           '|             |\n'
-          '      |                           | which the function was defined. '
+          '|                           | which the function was defined. '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__dict__"                | The namespace supporting        '
-          'Writable    |\n'
-          '      |                           | arbitrary function attributes.  '
+          '| "__dict__"                | The namespace supporting        | '
+          'Writable    |\n'
+          '|                           | arbitrary function attributes.  '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__closure__"             | "None" or a tuple of cells that '
-          'Read-only   |\n'
-          '      |                           | contain bindings for the        '
+          '| "__closure__"             | "None" or a tuple of cells that | '
+          'Read-only   |\n'
+          '|                           | contain bindings for the        '
           '|             |\n'
-          '      |                           | function’s free variables. See  '
+          '|                           | function’s free variables. See  '
           '|             |\n'
-          '      |                           | below for information on the    '
+          '|                           | below for information on the    '
           '|             |\n'
-          '      |                           | "cell_contents" attribute.      '
+          '|                           | "cell_contents" attribute.      '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__annotations__"         | A dict containing annotations   '
-          '| Writable    |\n'
-          '      |                           | of parameters.  The keys of the '
+          '| "__annotations__"         | A dict containing annotations   | '
+          'Writable    |\n'
+          '|                           | of parameters.  The keys of the '
+          '|             |\n'
+          '|                           | dict are the parameter names,   '
           '|             |\n'
-          '      |                           | dict are the parameter names,   '
+          '|                           | and "\'return\'" for the return   '
           '|             |\n'
-          '      |                           | and "\'return\'" for the '
-          'return   |             |\n'
-          '      |                           | annotation, if provided.  For   '
+          '|                           | annotation, if provided.  For   '
           '|             |\n'
-          '      |                           | more information on working     '
+          '|                           | more information on working     '
           '|             |\n'
-          '      |                           | with this attribute, see        '
+          '|                           | with this attribute, see        '
           '|             |\n'
-          '      |                           | Annotations Best Practices.     '
+          '|                           | Annotations Best Practices.     '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__kwdefaults__"          | A dict containing defaults for  '
-          'Writable    |\n'
-          '      |                           | keyword-only parameters.        '
+          '| "__kwdefaults__"          | A dict containing defaults for  | '
+          'Writable    |\n'
+          '|                           | keyword-only parameters.        '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__type_params__"         | A tuple containing the type     '
-          'Writable    |\n'
-          '      |                           | parameters of a generic         '
+          '| "__type_params__"         | A tuple containing the type     | '
+          'Writable    |\n'
+          '|                           | parameters of a generic         '
           '|             |\n'
-          '      |                           | function.                       '
+          '|                           | function.                       '
           '|             |\n'
-          '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '\n'
-          '      Most of the attributes labelled “Writable” check the type of '
-          'the\n'
-          '      assigned value.\n'
+          'Most of the attributes labelled “Writable” check the type of the\n'
+          'assigned value.\n'
           '\n'
-          '      Function objects also support getting and setting arbitrary\n'
-          '      attributes, which can be used, for example, to attach '
-          'metadata\n'
-          '      to functions.  Regular attribute dot-notation is used to get '
-          'and\n'
-          '      set such attributes. *Note that the current implementation '
-          'only\n'
-          '      supports function attributes on user-defined functions. '
-          'Function\n'
-          '      attributes on built-in functions may be supported in the\n'
-          '      future.*\n'
-          '\n'
-          '      A cell object has the attribute "cell_contents". This can be\n'
-          '      used to get the value of the cell, as well as set the value.\n'
-          '\n'
-          '      Additional information about a function’s definition can be\n'
-          '      retrieved from its code object; see the description of '
-          'internal\n'
-          '      types below. The "cell" type can be accessed in the "types"\n'
-          '      module.\n'
-          '\n'
-          '   Instance methods\n'
-          '      An instance method object combines a class, a class instance '
-          'and\n'
-          '      any callable object (normally a user-defined function).\n'
-          '\n'
-          '      Special read-only attributes: "__self__" is the class '
-          'instance\n'
-          '      object, "__func__" is the function object; "__doc__" is the\n'
-          '      method’s documentation (same as "__func__.__doc__"); '
-          '"__name__"\n'
-          '      is the method name (same as "__func__.__name__"); '
-          '"__module__"\n'
-          '      is the name of the module the method was defined in, or '
-          '"None"\n'
-          '      if unavailable.\n'
+          'Function objects also support getting and setting arbitrary\n'
+          'attributes, which can be used, for example, to attach metadata to\n'
+          'functions.  Regular attribute dot-notation is used to get and set '
+          'such\n'
+          'attributes. *Note that the current implementation only supports\n'
+          'function attributes on user-defined functions. Function attributes '
+          'on\n'
+          'built-in functions may be supported in the future.*\n'
           '\n'
-          '      Methods also support accessing (but not setting) the '
-          'arbitrary\n'
-          '      function attributes on the underlying function object.\n'
+          'A cell object has the attribute "cell_contents". This can be used '
+          'to\n'
+          'get the value of the cell, as well as set the value.\n'
           '\n'
-          '      User-defined method objects may be created when getting an\n'
-          '      attribute of a class (perhaps via an instance of that class), '
-          'if\n'
-          '      that attribute is a user-defined function object or a class\n'
-          '      method object.\n'
-          '\n'
-          '      When an instance method object is created by retrieving a '
-          'user-\n'
-          '      defined function object from a class via one of its '
-          'instances,\n'
-          '      its "__self__" attribute is the instance, and the method '
-          'object\n'
-          '      is said to be bound.  The new method’s "__func__" attribute '
-          'is\n'
-          '      the original function object.\n'
+          'Additional information about a function’s definition can be '
+          'retrieved\n'
+          'from its code object; see the description of internal types below. '
+          'The\n'
+          '"cell" type can be accessed in the "types" module.\n'
           '\n'
-          '      When an instance method object is created by retrieving a '
-          'class\n'
-          '      method object from a class or instance, its "__self__" '
-          'attribute\n'
-          '      is the class itself, and its "__func__" attribute is the\n'
-          '      function object underlying the class method.\n'
           '\n'
-          '      When an instance method object is called, the underlying\n'
-          '      function ("__func__") is called, inserting the class '
-          'instance\n'
-          '      ("__self__") in front of the argument list.  For instance, '
-          'when\n'
-          '      "C" is a class which contains a definition for a function '
-          '"f()",\n'
-          '      and "x" is an instance of "C", calling "x.f(1)" is equivalent '
-          'to\n'
-          '      calling "C.f(x, 1)".\n'
+          'Instance methods\n'
+          '----------------\n'
           '\n'
-          '      When an instance method object is derived from a class '
+          'An instance method object combines a class, a class instance and '
+          'any\n'
+          'callable object (normally a user-defined function).\n'
+          '\n'
+          'Special read-only attributes: "__self__" is the class instance '
+          'object,\n'
+          '"__func__" is the function object; "__doc__" is the method’s\n'
+          'documentation (same as "__func__.__doc__"); "__name__" is the '
           'method\n'
-          '      object, the “class instance” stored in "__self__" will '
-          'actually\n'
-          '      be the class itself, so that calling either "x.f(1)" or '
-          '"C.f(1)"\n'
-          '      is equivalent to calling "f(C,1)" where "f" is the '
-          'underlying\n'
-          '      function.\n'
-          '\n'
-          '      Note that the transformation from function object to '
-          'instance\n'
-          '      method object happens each time the attribute is retrieved '
-          'from\n'
-          '      the instance.  In some cases, a fruitful optimization is to\n'
-          '      assign the attribute to a local variable and call that local\n'
-          '      variable. Also notice that this transformation only happens '
-          'for\n'
-          '      user-defined functions; other callable objects (and all non-\n'
-          '      callable objects) are retrieved without transformation.  It '
-          'is\n'
-          '      also important to note that user-defined functions which are\n'
-          '      attributes of a class instance are not converted to bound\n'
-          '      methods; this *only* happens when the function is an '
+          'name (same as "__func__.__name__"); "__module__" is the name of '
+          'the\n'
+          'module the method was defined in, or "None" if unavailable.\n'
+          '\n'
+          'Methods also support accessing (but not setting) the arbitrary\n'
+          'function attributes on the underlying function object.\n'
+          '\n'
+          'User-defined method objects may be created when getting an '
+          'attribute\n'
+          'of a class (perhaps via an instance of that class), if that '
           'attribute\n'
-          '      of the class.\n'
+          'is a user-defined function object or a class method object.\n'
           '\n'
-          '   Generator functions\n'
-          '      A function or method which uses the "yield" statement (see\n'
-          '      section The yield statement) is called a *generator '
-          'function*.\n'
-          '      Such a function, when called, always returns an *iterator*\n'
-          '      object which can be used to execute the body of the '
-          'function:\n'
-          '      calling the iterator’s "iterator.__next__()" method will '
-          'cause\n'
-          '      the function to execute until it provides a value using the\n'
-          '      "yield" statement.  When the function executes a "return"\n'
-          '      statement or falls off the end, a "StopIteration" exception '
-          'is\n'
-          '      raised and the iterator will have reached the end of the set '
+          'When an instance method object is created by retrieving a '
+          'user-defined\n'
+          'function object from a class via one of its instances, its '
+          '"__self__"\n'
+          'attribute is the instance, and the method object is said to be '
+          'bound.\n'
+          'The new method’s "__func__" attribute is the original function '
+          'object.\n'
+          '\n'
+          'When an instance method object is created by retrieving a class '
+          'method\n'
+          'object from a class or instance, its "__self__" attribute is the '
+          'class\n'
+          'itself, and its "__func__" attribute is the function object '
+          'underlying\n'
+          'the class method.\n'
+          '\n'
+          'When an instance method object is called, the underlying function\n'
+          '("__func__") is called, inserting the class instance ("__self__") '
+          'in\n'
+          'front of the argument list.  For instance, when "C" is a class '
+          'which\n'
+          'contains a definition for a function "f()", and "x" is an instance '
           'of\n'
-          '      values to be returned.\n'
-          '\n'
-          '   Coroutine functions\n'
-          '      A function or method which is defined using "async def" is\n'
-          '      called a *coroutine function*.  Such a function, when '
-          'called,\n'
-          '      returns a *coroutine* object.  It may contain "await"\n'
-          '      expressions, as well as "async with" and "async for" '
-          'statements.\n'
-          '      See also the Coroutine Objects section.\n'
-          '\n'
-          '   Asynchronous generator functions\n'
-          '      A function or method which is defined using "async def" and\n'
-          '      which uses the "yield" statement is called a *asynchronous\n'
-          '      generator function*.  Such a function, when called, returns '
-          'an\n'
-          '      *asynchronous iterator* object which can be used in an '
-          '"async\n'
-          '      for" statement to execute the body of the function.\n'
+          '"C", calling "x.f(1)" is equivalent to calling "C.f(x, 1)".\n'
           '\n'
-          '      Calling the asynchronous iterator’s "aiterator.__anext__" '
+          'When an instance method object is derived from a class method '
+          'object,\n'
+          'the “class instance” stored in "__self__" will actually be the '
+          'class\n'
+          'itself, so that calling either "x.f(1)" or "C.f(1)" is equivalent '
+          'to\n'
+          'calling "f(C,1)" where "f" is the underlying function.\n'
+          '\n'
+          'Note that the transformation from function object to instance '
           'method\n'
-          '      will return an *awaitable* which when awaited will execute '
+          'object happens each time the attribute is retrieved from the '
+          'instance.\n'
+          'In some cases, a fruitful optimization is to assign the attribute '
+          'to a\n'
+          'local variable and call that local variable. Also notice that this\n'
+          'transformation only happens for user-defined functions; other '
+          'callable\n'
+          'objects (and all non-callable objects) are retrieved without\n'
+          'transformation.  It is also important to note that user-defined\n'
+          'functions which are attributes of a class instance are not '
+          'converted\n'
+          'to bound methods; this *only* happens when the function is an\n'
+          'attribute of the class.\n'
+          '\n'
+          '\n'
+          'Generator functions\n'
+          '-------------------\n'
+          '\n'
+          'A function or method which uses the "yield" statement (see section '
+          'The\n'
+          'yield statement) is called a *generator function*.  Such a '
+          'function,\n'
+          'when called, always returns an *iterator* object which can be used '
+          'to\n'
+          'execute the body of the function:  calling the iterator’s\n'
+          '"iterator.__next__()" method will cause the function to execute '
           'until\n'
-          '      it provides a value using the "yield" expression.  When the\n'
-          '      function executes an empty "return" statement or falls off '
+          'it provides a value using the "yield" statement.  When the '
+          'function\n'
+          'executes a "return" statement or falls off the end, a '
+          '"StopIteration"\n'
+          'exception is raised and the iterator will have reached the end of '
           'the\n'
-          '      end, a "StopAsyncIteration" exception is raised and the\n'
-          '      asynchronous iterator will have reached the end of the set '
-          'of\n'
-          '      values to be yielded.\n'
+          'set of values to be returned.\n'
           '\n'
-          '   Built-in functions\n'
-          '      A built-in function object is a wrapper around a C function.\n'
-          '      Examples of built-in functions are "len()" and "math.sin()"\n'
-          '      ("math" is a standard built-in module). The number and type '
-          'of\n'
-          '      the arguments are determined by the C function. Special '
-          'read-\n'
-          '      only attributes: "__doc__" is the function’s documentation\n'
-          '      string, or "None" if unavailable; "__name__" is the '
-          'function’s\n'
-          '      name; "__self__" is set to "None" (but see the next item);\n'
-          '      "__module__" is the name of the module the function was '
-          'defined\n'
-          '      in or "None" if unavailable.\n'
           '\n'
-          '   Built-in methods\n'
-          '      This is really a different disguise of a built-in function, '
-          'this\n'
-          '      time containing an object passed to the C function as an\n'
-          '      implicit extra argument.  An example of a built-in method is\n'
-          '      "alist.append()", assuming *alist* is a list object. In this\n'
-          '      case, the special read-only attribute "__self__" is set to '
+          'Coroutine functions\n'
+          '-------------------\n'
+          '\n'
+          'A function or method which is defined using "async def" is called '
+          'a\n'
+          '*coroutine function*.  Such a function, when called, returns a\n'
+          '*coroutine* object.  It may contain "await" expressions, as well '
+          'as\n'
+          '"async with" and "async for" statements. See also the Coroutine\n'
+          'Objects section.\n'
+          '\n'
+          '\n'
+          'Asynchronous generator functions\n'
+          '--------------------------------\n'
+          '\n'
+          'A function or method which is defined using "async def" and which '
+          'uses\n'
+          'the "yield" statement is called a *asynchronous generator '
+          'function*.\n'
+          'Such a function, when called, returns an *asynchronous iterator*\n'
+          'object which can be used in an "async for" statement to execute '
           'the\n'
-          '      object denoted by *alist*.\n'
+          'body of the function.\n'
           '\n'
-          '   Classes\n'
-          '      Classes are callable.  These objects normally act as '
-          'factories\n'
-          '      for new instances of themselves, but variations are possible '
-          'for\n'
-          '      class types that override "__new__()".  The arguments of the\n'
-          '      call are passed to "__new__()" and, in the typical case, to\n'
-          '      "__init__()" to initialize the new instance.\n'
+          'Calling the asynchronous iterator’s "aiterator.__anext__" method '
+          'will\n'
+          'return an *awaitable* which when awaited will execute until it\n'
+          'provides a value using the "yield" expression.  When the function\n'
+          'executes an empty "return" statement or falls off the end, a\n'
+          '"StopAsyncIteration" exception is raised and the asynchronous '
+          'iterator\n'
+          'will have reached the end of the set of values to be yielded.\n'
+          '\n'
+          '\n'
+          'Built-in functions\n'
+          '------------------\n'
+          '\n'
+          'A built-in function object is a wrapper around a C function.  '
+          'Examples\n'
+          'of built-in functions are "len()" and "math.sin()" ("math" is a\n'
+          'standard built-in module). The number and type of the arguments '
+          'are\n'
+          'determined by the C function. Special read-only attributes: '
+          '"__doc__"\n'
+          'is the function’s documentation string, or "None" if unavailable;\n'
+          '"__name__" is the function’s name; "__self__" is set to "None" '
+          '(but\n'
+          'see the next item); "__module__" is the name of the module the\n'
+          'function was defined in or "None" if unavailable.\n'
+          '\n'
+          '\n'
+          'Built-in methods\n'
+          '----------------\n'
+          '\n'
+          'This is really a different disguise of a built-in function, this '
+          'time\n'
+          'containing an object passed to the C function as an implicit extra\n'
+          'argument.  An example of a built-in method is "alist.append()",\n'
+          'assuming *alist* is a list object. In this case, the special '
+          'read-only\n'
+          'attribute "__self__" is set to the object denoted by *alist*.\n'
+          '\n'
+          '\n'
+          'Classes\n'
+          '-------\n'
+          '\n'
+          'Classes are callable.  These objects normally act as factories for '
+          'new\n'
+          'instances of themselves, but variations are possible for class '
+          'types\n'
+          'that override "__new__()".  The arguments of the call are passed '
+          'to\n'
+          '"__new__()" and, in the typical case, to "__init__()" to '
+          'initialize\n'
+          'the new instance.\n'
+          '\n'
+          '\n'
+          'Class Instances\n'
+          '---------------\n'
+          '\n'
+          'Instances of arbitrary classes can be made callable by defining a\n'
+          '"__call__()" method in their class.\n'
           '\n'
-          '   Class Instances\n'
-          '      Instances of arbitrary classes can be made callable by '
-          'defining\n'
-          '      a "__call__()" method in their class.\n'
           '\n'
           'Modules\n'
-          '   Modules are a basic organizational unit of Python code, and are\n'
-          '   created by the import system as invoked either by the "import"\n'
-          '   statement, or by calling functions such as\n'
-          '   "importlib.import_module()" and built-in "__import__()".  A '
-          'module\n'
-          '   object has a namespace implemented by a dictionary object (this '
-          'is\n'
-          '   the dictionary referenced by the "__globals__" attribute of\n'
-          '   functions defined in the module).  Attribute references are\n'
-          '   translated to lookups in this dictionary, e.g., "m.x" is '
-          'equivalent\n'
-          '   to "m.__dict__["x"]". A module object does not contain the code\n'
-          '   object used to initialize the module (since it isn’t needed '
-          'once\n'
-          '   the initialization is done).\n'
+          '=======\n'
+          '\n'
+          'Modules are a basic organizational unit of Python code, and are\n'
+          'created by the import system as invoked either by the "import"\n'
+          'statement, or by calling functions such as '
+          '"importlib.import_module()"\n'
+          'and built-in "__import__()".  A module object has a namespace\n'
+          'implemented by a dictionary object (this is the dictionary '
+          'referenced\n'
+          'by the "__globals__" attribute of functions defined in the '
+          'module).\n'
+          'Attribute references are translated to lookups in this dictionary,\n'
+          'e.g., "m.x" is equivalent to "m.__dict__["x"]". A module object '
+          'does\n'
+          'not contain the code object used to initialize the module (since '
+          'it\n'
+          'isn’t needed once the initialization is done).\n'
+          '\n'
+          'Attribute assignment updates the module’s namespace dictionary, '
+          'e.g.,\n'
+          '"m.x = 1" is equivalent to "m.__dict__["x"] = 1".\n'
           '\n'
-          '   Attribute assignment updates the module’s namespace dictionary,\n'
-          '   e.g., "m.x = 1" is equivalent to "m.__dict__["x"] = 1".\n'
+          'Predefined (writable) attributes:\n'
           '\n'
-          '   Predefined (writable) attributes:\n'
+          '   "__name__"\n'
+          '      The module’s name.\n'
           '\n'
-          '      "__name__"\n'
-          '         The module’s name.\n'
+          '   "__doc__"\n'
+          '      The module’s documentation string, or "None" if unavailable.\n'
           '\n'
-          '      "__doc__"\n'
-          '         The module’s documentation string, or "None" if '
-          'unavailable.\n'
+          '   "__file__"\n'
+          '      The pathname of the file from which the module was loaded, if '
+          'it\n'
+          '      was loaded from a file. The "__file__" attribute may be '
+          'missing\n'
+          '      for certain types of modules, such as C modules that are\n'
+          '      statically linked into the interpreter.  For extension '
+          'modules\n'
+          '      loaded dynamically from a shared library, it’s the pathname '
+          'of\n'
+          '      the shared library file.\n'
           '\n'
-          '      "__file__"\n'
-          '         The pathname of the file from which the module was loaded, '
-          'if\n'
-          '         it was loaded from a file. The "__file__" attribute may '
-          'be\n'
-          '         missing for certain types of modules, such as C modules '
-          'that\n'
-          '         are statically linked into the interpreter.  For '
-          'extension\n'
-          '         modules loaded dynamically from a shared library, it’s '
-          'the\n'
-          '         pathname of the shared library file.\n'
-          '\n'
-          '      "__annotations__"\n'
-          '         A dictionary containing *variable annotations* collected\n'
-          '         during module body execution.  For best practices on '
-          'working\n'
-          '         with "__annotations__", please see Annotations Best\n'
-          '         Practices.\n'
-          '\n'
-          '   Special read-only attribute: "__dict__" is the module’s '
-          'namespace\n'
-          '   as a dictionary object.\n'
-          '\n'
-          '   **CPython implementation detail:** Because of the way CPython\n'
-          '   clears module dictionaries, the module dictionary will be '
-          'cleared\n'
-          '   when the module falls out of scope even if the dictionary still '
-          'has\n'
-          '   live references.  To avoid this, copy the dictionary or keep '
+          '   "__annotations__"\n'
+          '      A dictionary containing *variable annotations* collected '
+          'during\n'
+          '      module body execution.  For best practices on working with\n'
+          '      "__annotations__", please see Annotations Best Practices.\n'
+          '\n'
+          'Special read-only attribute: "__dict__" is the module’s namespace '
+          'as a\n'
+          'dictionary object.\n'
+          '\n'
+          '**CPython implementation detail:** Because of the way CPython '
+          'clears\n'
+          'module dictionaries, the module dictionary will be cleared when '
           'the\n'
-          '   module around while using its dictionary directly.\n'
+          'module falls out of scope even if the dictionary still has live\n'
+          'references.  To avoid this, copy the dictionary or keep the module\n'
+          'around while using its dictionary directly.\n'
+          '\n'
           '\n'
           'Custom classes\n'
-          '   Custom class types are typically created by class definitions '
-          '(see\n'
-          '   section Class definitions).  A class has a namespace implemented '
-          'by\n'
-          '   a dictionary object. Class attribute references are translated '
-          'to\n'
-          '   lookups in this dictionary, e.g., "C.x" is translated to\n'
-          '   "C.__dict__["x"]" (although there are a number of hooks which '
+          '==============\n'
+          '\n'
+          'Custom class types are typically created by class definitions (see\n'
+          'section Class definitions).  A class has a namespace implemented by '
+          'a\n'
+          'dictionary object. Class attribute references are translated to\n'
+          'lookups in this dictionary, e.g., "C.x" is translated to\n'
+          '"C.__dict__["x"]" (although there are a number of hooks which '
           'allow\n'
-          '   for other means of locating attributes). When the attribute name '
+          'for other means of locating attributes). When the attribute name '
           'is\n'
-          '   not found there, the attribute search continues in the base\n'
-          '   classes. This search of the base classes uses the C3 method\n'
-          '   resolution order which behaves correctly even in the presence '
-          'of\n'
-          '   ‘diamond’ inheritance structures where there are multiple\n'
-          '   inheritance paths leading back to a common ancestor. Additional\n'
-          '   details on the C3 MRO used by Python can be found in the\n'
-          '   documentation accompanying the 2.3 release at\n'
-          '   https://www.python.org/download/releases/2.3/mro/.\n'
-          '\n'
-          '   When a class attribute reference (for class "C", say) would '
-          'yield a\n'
-          '   class method object, it is transformed into an instance method\n'
-          '   object whose "__self__" attribute is "C".  When it would yield '
+          'not found there, the attribute search continues in the base '
+          'classes.\n'
+          'This search of the base classes uses the C3 method resolution '
+          'order\n'
+          'which behaves correctly even in the presence of ‘diamond’ '
+          'inheritance\n'
+          'structures where there are multiple inheritance paths leading back '
+          'to\n'
+          'a common ancestor. Additional details on the C3 MRO used by Python '
+          'can\n'
+          'be found in the documentation accompanying the 2.3 release at\n'
+          'https://www.python.org/download/releases/2.3/mro/.\n'
+          '\n'
+          'When a class attribute reference (for class "C", say) would yield '
           'a\n'
-          '   static method object, it is transformed into the object wrapped '
-          'by\n'
-          '   the static method object. See section Implementing Descriptors '
-          'for\n'
-          '   another way in which attributes retrieved from a class may '
-          'differ\n'
-          '   from those actually contained in its "__dict__".\n'
+          'class method object, it is transformed into an instance method '
+          'object\n'
+          'whose "__self__" attribute is "C".  When it would yield a static\n'
+          'method object, it is transformed into the object wrapped by the '
+          'static\n'
+          'method object. See section Implementing Descriptors for another way '
+          'in\n'
+          'which attributes retrieved from a class may differ from those '
+          'actually\n'
+          'contained in its "__dict__".\n'
           '\n'
-          '   Class attribute assignments update the class’s dictionary, '
-          'never\n'
-          '   the dictionary of a base class.\n'
+          'Class attribute assignments update the class’s dictionary, never '
+          'the\n'
+          'dictionary of a base class.\n'
           '\n'
-          '   A class object can be called (see above) to yield a class '
-          'instance\n'
-          '   (see below).\n'
+          'A class object can be called (see above) to yield a class instance\n'
+          '(see below).\n'
           '\n'
-          '   Special attributes:\n'
+          'Special attributes:\n'
           '\n'
-          '      "__name__"\n'
-          '         The class name.\n'
+          '   "__name__"\n'
+          '      The class name.\n'
           '\n'
-          '      "__module__"\n'
-          '         The name of the module in which the class was defined.\n'
+          '   "__module__"\n'
+          '      The name of the module in which the class was defined.\n'
           '\n'
-          '      "__dict__"\n'
-          '         The dictionary containing the class’s namespace.\n'
+          '   "__dict__"\n'
+          '      The dictionary containing the class’s namespace.\n'
           '\n'
-          '      "__bases__"\n'
-          '         A tuple containing the base classes, in the order of '
-          'their\n'
-          '         occurrence in the base class list.\n'
+          '   "__bases__"\n'
+          '      A tuple containing the base classes, in the order of their\n'
+          '      occurrence in the base class list.\n'
           '\n'
-          '      "__doc__"\n'
-          '         The class’s documentation string, or "None" if undefined.\n'
+          '   "__doc__"\n'
+          '      The class’s documentation string, or "None" if undefined.\n'
           '\n'
-          '      "__annotations__"\n'
-          '         A dictionary containing *variable annotations* collected\n'
-          '         during class body execution.  For best practices on '
-          'working\n'
-          '         with "__annotations__", please see Annotations Best\n'
-          '         Practices.\n'
+          '   "__annotations__"\n'
+          '      A dictionary containing *variable annotations* collected '
+          'during\n'
+          '      class body execution.  For best practices on working with\n'
+          '      "__annotations__", please see Annotations Best Practices.\n'
+          '\n'
+          '   "__type_params__"\n'
+          '      A tuple containing the type parameters of a generic class.\n'
           '\n'
-          '      "__type_params__"\n'
-          '         A tuple containing the type parameters of a generic '
-          'class.\n'
           '\n'
           'Class instances\n'
-          '   A class instance is created by calling a class object (see '
-          'above).\n'
-          '   A class instance has a namespace implemented as a dictionary '
-          'which\n'
-          '   is the first place in which attribute references are searched.\n'
-          '   When an attribute is not found there, and the instance’s class '
-          'has\n'
-          '   an attribute by that name, the search continues with the class\n'
-          '   attributes.  If a class attribute is found that is a '
-          'user-defined\n'
-          '   function object, it is transformed into an instance method '
-          'object\n'
-          '   whose "__self__" attribute is the instance.  Static method and\n'
-          '   class method objects are also transformed; see above under\n'
-          '   “Classes”.  See section Implementing Descriptors for another way '
-          'in\n'
-          '   which attributes of a class retrieved via its instances may '
-          'differ\n'
-          '   from the objects actually stored in the class’s "__dict__".  If '
-          'no\n'
-          '   class attribute is found, and the object’s class has a\n'
-          '   "__getattr__()" method, that is called to satisfy the lookup.\n'
+          '===============\n'
           '\n'
-          '   Attribute assignments and deletions update the instance’s\n'
-          '   dictionary, never a class’s dictionary.  If the class has a\n'
-          '   "__setattr__()" or "__delattr__()" method, this is called '
-          'instead\n'
-          '   of updating the instance dictionary directly.\n'
+          'A class instance is created by calling a class object (see above).  '
+          'A\n'
+          'class instance has a namespace implemented as a dictionary which '
+          'is\n'
+          'the first place in which attribute references are searched.  When '
+          'an\n'
+          'attribute is not found there, and the instance’s class has an\n'
+          'attribute by that name, the search continues with the class\n'
+          'attributes.  If a class attribute is found that is a user-defined\n'
+          'function object, it is transformed into an instance method object\n'
+          'whose "__self__" attribute is the instance.  Static method and '
+          'class\n'
+          'method objects are also transformed; see above under “Classes”.  '
+          'See\n'
+          'section Implementing Descriptors for another way in which '
+          'attributes\n'
+          'of a class retrieved via its instances may differ from the objects\n'
+          'actually stored in the class’s "__dict__".  If no class attribute '
+          'is\n'
+          'found, and the object’s class has a "__getattr__()" method, that '
+          'is\n'
+          'called to satisfy the lookup.\n'
           '\n'
-          '   Class instances can pretend to be numbers, sequences, or '
-          'mappings\n'
-          '   if they have methods with certain special names.  See section\n'
-          '   Special method names.\n'
+          'Attribute assignments and deletions update the instance’s '
+          'dictionary,\n'
+          'never a class’s dictionary.  If the class has a "__setattr__()" or\n'
+          '"__delattr__()" method, this is called instead of updating the\n'
+          'instance dictionary directly.\n'
+          '\n'
+          'Class instances can pretend to be numbers, sequences, or mappings '
+          'if\n'
+          'they have methods with certain special names.  See section Special\n'
+          'method names.\n'
+          '\n'
+          'Special attributes: "__dict__" is the attribute dictionary;\n'
+          '"__class__" is the instance’s class.\n'
           '\n'
-          '   Special attributes: "__dict__" is the attribute dictionary;\n'
-          '   "__class__" is the instance’s class.\n'
           '\n'
           'I/O objects (also known as file objects)\n'
-          '   A *file object* represents an open file.  Various shortcuts are\n'
-          '   available to create file objects: the "open()" built-in '
-          'function,\n'
-          '   and also "os.popen()", "os.fdopen()", and the "makefile()" '
-          'method\n'
-          '   of socket objects (and perhaps by other functions or methods\n'
-          '   provided by extension modules).\n'
+          '========================================\n'
+          '\n'
+          'A *file object* represents an open file.  Various shortcuts are\n'
+          'available to create file objects: the "open()" built-in function, '
+          'and\n'
+          'also "os.popen()", "os.fdopen()", and the "makefile()" method of\n'
+          'socket objects (and perhaps by other functions or methods provided '
+          'by\n'
+          'extension modules).\n'
+          '\n'
+          'The objects "sys.stdin", "sys.stdout" and "sys.stderr" are '
+          'initialized\n'
+          'to file objects corresponding to the interpreter’s standard input,\n'
+          'output and error streams; they are all open in text mode and '
+          'therefore\n'
+          'follow the interface defined by the "io.TextIOBase" abstract '
+          'class.\n'
           '\n'
-          '   The objects "sys.stdin", "sys.stdout" and "sys.stderr" are\n'
-          '   initialized to file objects corresponding to the interpreter’s\n'
-          '   standard input, output and error streams; they are all open in '
-          'text\n'
-          '   mode and therefore follow the interface defined by the\n'
-          '   "io.TextIOBase" abstract class.\n'
           '\n'
           'Internal types\n'
-          '   A few types used internally by the interpreter are exposed to '
-          'the\n'
-          '   user. Their definitions may change with future versions of the\n'
-          '   interpreter, but they are mentioned here for completeness.\n'
-          '\n'
-          '   Code objects\n'
-          '      Code objects represent *byte-compiled* executable Python '
-          'code,\n'
-          '      or *bytecode*. The difference between a code object and a\n'
-          '      function object is that the function object contains an '
-          'explicit\n'
-          '      reference to the function’s globals (the module in which it '
-          'was\n'
-          '      defined), while a code object contains no context; also the\n'
-          '      default argument values are stored in the function object, '
-          'not\n'
-          '      in the code object (because they represent values calculated '
-          'at\n'
-          '      run-time).  Unlike function objects, code objects are '
-          'immutable\n'
-          '      and contain no references (directly or indirectly) to '
-          'mutable\n'
-          '      objects.\n'
-          '\n'
-          '      Special read-only attributes: "co_name" gives the function '
-          'name;\n'
-          '      "co_qualname" gives the fully qualified function name;\n'
-          '      "co_argcount" is the total number of positional arguments\n'
-          '      (including positional-only arguments and arguments with '
-          'default\n'
-          '      values); "co_posonlyargcount" is the number of '
-          'positional-only\n'
-          '      arguments (including arguments with default values);\n'
-          '      "co_kwonlyargcount" is the number of keyword-only arguments\n'
-          '      (including arguments with default values); "co_nlocals" is '
-          'the\n'
-          '      number of local variables used by the function (including\n'
-          '      arguments); "co_varnames" is a tuple containing the names of '
-          'the\n'
-          '      local variables (starting with the argument names);\n'
-          '      "co_cellvars" is a tuple containing the names of local '
-          'variables\n'
-          '      that are referenced by nested functions; "co_freevars" is a\n'
-          '      tuple containing the names of free variables; "co_code" is a\n'
-          '      string representing the sequence of bytecode instructions;\n'
-          '      "co_consts" is a tuple containing the literals used by the\n'
-          '      bytecode; "co_names" is a tuple containing the names used by '
-          'the\n'
-          '      bytecode; "co_filename" is the filename from which the code '
-          'was\n'
-          '      compiled; "co_firstlineno" is the first line number of the\n'
-          '      function; "co_lnotab" is a string encoding the mapping from\n'
-          '      bytecode offsets to line numbers (for details see the source\n'
-          '      code of the interpreter, is deprecated since 3.12 and may be\n'
-          '      removed in 3.14); "co_stacksize" is the required stack size;\n'
-          '      "co_flags" is an integer encoding a number of flags for the\n'
-          '      interpreter.\n'
-          '\n'
-          '      The following flag bits are defined for "co_flags": bit '
-          '"0x04"\n'
-          '      is set if the function uses the "*arguments" syntax to accept '
-          'an\n'
-          '      arbitrary number of positional arguments; bit "0x08" is set '
-          'if\n'
-          '      the function uses the "**keywords" syntax to accept '
-          'arbitrary\n'
-          '      keyword arguments; bit "0x20" is set if the function is a\n'
-          '      generator.\n'
+          '==============\n'
           '\n'
-          '      Future feature declarations ("from __future__ import '
-          'division")\n'
-          '      also use bits in "co_flags" to indicate whether a code '
+          'A few types used internally by the interpreter are exposed to the\n'
+          'user. Their definitions may change with future versions of the\n'
+          'interpreter, but they are mentioned here for completeness.\n'
+          '\n'
+          '\n'
+          'Code objects\n'
+          '------------\n'
+          '\n'
+          'Code objects represent *byte-compiled* executable Python code, or\n'
+          '*bytecode*. The difference between a code object and a function '
           'object\n'
-          '      was compiled with a particular feature enabled: bit "0x2000" '
+          'is that the function object contains an explicit reference to the\n'
+          'function’s globals (the module in which it was defined), while a '
+          'code\n'
+          'object contains no context; also the default argument values are\n'
+          'stored in the function object, not in the code object (because '
+          'they\n'
+          'represent values calculated at run-time).  Unlike function '
+          'objects,\n'
+          'code objects are immutable and contain no references (directly or\n'
+          'indirectly) to mutable objects.\n'
+          '\n'
+          'Special read-only attributes: "co_name" gives the function name;\n'
+          '"co_qualname" gives the fully qualified function name; '
+          '"co_argcount"\n'
+          'is the total number of positional arguments (including '
+          'positional-only\n'
+          'arguments and arguments with default values); "co_posonlyargcount" '
+          'is\n'
+          'the number of positional-only arguments (including arguments with\n'
+          'default values); "co_kwonlyargcount" is the number of keyword-only\n'
+          'arguments (including arguments with default values); "co_nlocals" '
           'is\n'
-          '      set if the function was compiled with future division '
-          'enabled;\n'
-          '      bits "0x10" and "0x1000" were used in earlier versions of\n'
-          '      Python.\n'
+          'the number of local variables used by the function (including\n'
+          'arguments); "co_varnames" is a tuple containing the names of the '
+          'local\n'
+          'variables (starting with the argument names); "co_cellvars" is a '
+          'tuple\n'
+          'containing the names of local variables that are referenced by '
+          'nested\n'
+          'functions; "co_freevars" is a tuple containing the names of free\n'
+          'variables; "co_code" is a string representing the sequence of '
+          'bytecode\n'
+          'instructions; "co_consts" is a tuple containing the literals used '
+          'by\n'
+          'the bytecode; "co_names" is a tuple containing the names used by '
+          'the\n'
+          'bytecode; "co_filename" is the filename from which the code was\n'
+          'compiled; "co_firstlineno" is the first line number of the '
+          'function;\n'
+          '"co_lnotab" is a string encoding the mapping from bytecode offsets '
+          'to\n'
+          'line numbers (for details see the source code of the interpreter, '
+          'is\n'
+          'deprecated since 3.12 and may be removed in 3.14); "co_stacksize" '
+          'is\n'
+          'the required stack size; "co_flags" is an integer encoding a number '
+          'of\n'
+          'flags for the interpreter.\n'
           '\n'
-          '      Other bits in "co_flags" are reserved for internal use.\n'
+          'The following flag bits are defined for "co_flags": bit "0x04" is '
+          'set\n'
+          'if the function uses the "*arguments" syntax to accept an '
+          'arbitrary\n'
+          'number of positional arguments; bit "0x08" is set if the function '
+          'uses\n'
+          'the "**keywords" syntax to accept arbitrary keyword arguments; bit\n'
+          '"0x20" is set if the function is a generator.\n'
+          '\n'
+          'Future feature declarations ("from __future__ import division") '
+          'also\n'
+          'use bits in "co_flags" to indicate whether a code object was '
+          'compiled\n'
+          'with a particular feature enabled: bit "0x2000" is set if the '
+          'function\n'
+          'was compiled with future division enabled; bits "0x10" and '
+          '"0x1000"\n'
+          'were used in earlier versions of Python.\n'
           '\n'
-          '      If a code object represents a function, the first item in\n'
-          '      "co_consts" is the documentation string of the function, or\n'
-          '      "None" if undefined.\n'
+          'Other bits in "co_flags" are reserved for internal use.\n'
           '\n'
-          '      codeobject.co_positions()\n'
+          'If a code object represents a function, the first item in '
+          '"co_consts"\n'
+          'is the documentation string of the function, or "None" if '
+          'undefined.\n'
           '\n'
-          '         Returns an iterable over the source code positions of '
-          'each\n'
-          '         bytecode instruction in the code object.\n'
+          'codeobject.co_positions()\n'
           '\n'
-          '         The iterator returns tuples containing the "(start_line,\n'
-          '         end_line, start_column, end_column)". The *i-th* tuple\n'
-          '         corresponds to the position of the source code that '
-          'compiled\n'
-          '         to the *i-th* instruction. Column information is '
-          '0-indexed\n'
-          '         utf-8 byte offsets on the given source line.\n'
+          '   Returns an iterable over the source code positions of each '
+          'bytecode\n'
+          '   instruction in the code object.\n'
           '\n'
-          '         This positional information can be missing. A '
-          'non-exhaustive\n'
-          '         lists of cases where this may happen:\n'
+          '   The iterator returns tuples containing the "(start_line, '
+          'end_line,\n'
+          '   start_column, end_column)". The *i-th* tuple corresponds to the\n'
+          '   position of the source code that compiled to the *i-th*\n'
+          '   instruction. Column information is 0-indexed utf-8 byte offsets '
+          'on\n'
+          '   the given source line.\n'
           '\n'
-          '         * Running the interpreter with "-X" "no_debug_ranges".\n'
+          '   This positional information can be missing. A non-exhaustive '
+          'lists\n'
+          '   of cases where this may happen:\n'
           '\n'
-          '         * Loading a pyc file compiled while using "-X"\n'
-          '           "no_debug_ranges".\n'
+          '   * Running the interpreter with "-X" "no_debug_ranges".\n'
           '\n'
-          '         * Position tuples corresponding to artificial '
-          'instructions.\n'
+          '   * Loading a pyc file compiled while using "-X" '
+          '"no_debug_ranges".\n'
           '\n'
-          '         * Line and column numbers that can’t be represented due '
-          'to\n'
-          '           implementation specific limitations.\n'
+          '   * Position tuples corresponding to artificial instructions.\n'
           '\n'
-          '         When this occurs, some or all of the tuple elements can '
-          'be\n'
-          '         "None".\n'
+          '   * Line and column numbers that can’t be represented due to\n'
+          '     implementation specific limitations.\n'
           '\n'
-          '         New in version 3.11.\n'
+          '   When this occurs, some or all of the tuple elements can be '
+          '"None".\n'
           '\n'
-          '         Note:\n'
+          '   New in version 3.11.\n'
           '\n'
-          '           This feature requires storing column positions in code\n'
-          '           objects which may result in a small increase of disk '
-          'usage\n'
-          '           of compiled Python files or interpreter memory usage. '
-          'To\n'
-          '           avoid storing the extra information and/or deactivate\n'
-          '           printing the extra traceback information, the "-X"\n'
-          '           "no_debug_ranges" command line flag or the\n'
-          '           "PYTHONNODEBUGRANGES" environment variable can be used.\n'
+          '   Note:\n'
           '\n'
-          '   Frame objects\n'
-          '      Frame objects represent execution frames.  They may occur in\n'
-          '      traceback objects (see below), and are also passed to '
-          'registered\n'
-          '      trace functions.\n'
+          '     This feature requires storing column positions in code '
+          'objects\n'
+          '     which may result in a small increase of disk usage of '
+          'compiled\n'
+          '     Python files or interpreter memory usage. To avoid storing '
+          'the\n'
+          '     extra information and/or deactivate printing the extra '
+          'traceback\n'
+          '     information, the "-X" "no_debug_ranges" command line flag or '
+          'the\n'
+          '     "PYTHONNODEBUGRANGES" environment variable can be used.\n'
+          '\n'
+          '\n'
+          'Frame objects\n'
+          '-------------\n'
+          '\n'
+          'Frame objects represent execution frames.  They may occur in '
+          'traceback\n'
+          'objects (see below), and are also passed to registered trace\n'
+          'functions.\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'
+          'Accessing "f_code" raises an auditing event "object.__getattr__" '
+          'with\n'
+          'arguments "obj" and ""f_code"".\n'
+          '\n'
+          'Special writable attributes: "f_trace", if not "None", is a '
+          'function\n'
+          'called for various events during code execution (this is used by '
+          'the\n'
+          'debugger). Normally an event is triggered for each new source line '
+          '-\n'
+          'this can be disabled by setting "f_trace_lines" to "False".\n'
           '\n'
-          '      Special read-only attributes: "f_back" is to the previous '
-          'stack\n'
-          '      frame (towards the caller), or "None" if this is the bottom\n'
-          '      stack frame; "f_code" is the code object being executed in '
+          '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'
+          '"f_lineno" is the current line number of the frame — writing to '
           'this\n'
-          '      frame; "f_locals" is the dictionary used to look up local\n'
-          '      variables; "f_globals" is used for global variables;\n'
-          '      "f_builtins" is used for built-in (intrinsic) names; '
-          '"f_lasti"\n'
-          '      gives the precise instruction (this is an index into the\n'
-          '      bytecode string of the code object).\n'
-          '\n'
-          '      Accessing "f_code" raises an auditing event '
-          '"object.__getattr__"\n'
-          '      with arguments "obj" and ""f_code"".\n'
-          '\n'
-          '      Special writable attributes: "f_trace", if not "None", is a\n'
-          '      function called for various events during code execution '
-          '(this\n'
-          '      is used by the debugger). Normally an event is triggered for\n'
-          '      each new source line - this can be disabled by setting\n'
-          '      "f_trace_lines" to "False".\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\n'
-          '      trace function escape to the function being traced.\n'
+          'from within a trace function jumps to the given line (only for the\n'
+          'bottom-most frame).  A debugger can implement a Jump command (aka '
+          'Set\n'
+          'Next Statement) by writing to f_lineno.\n'
           '\n'
-          '      "f_lineno" is the current line number of the frame — writing '
-          'to\n'
-          '      this from within a trace function jumps to the given line '
-          '(only\n'
-          '      for the bottom-most frame).  A debugger can implement a Jump\n'
-          '      command (aka Set Next Statement) by writing to f_lineno.\n'
+          'Frame objects support one method:\n'
           '\n'
-          '      Frame objects support one method:\n'
+          'frame.clear()\n'
           '\n'
-          '      frame.clear()\n'
+          '   This method clears all references to local variables held by '
+          'the\n'
+          '   frame.  Also, if the frame belonged to a generator, the '
+          'generator\n'
+          '   is finalized.  This helps break reference cycles involving '
+          'frame\n'
+          '   objects (for example when catching an exception and storing its\n'
+          '   traceback for later use).\n'
           '\n'
-          '         This method clears all references to local variables held '
-          'by\n'
-          '         the frame.  Also, if the frame belonged to a generator, '
+          '   "RuntimeError" is raised if the frame is currently executing.\n'
+          '\n'
+          '   New in version 3.4.\n'
+          '\n'
+          '\n'
+          'Traceback objects\n'
+          '-----------------\n'
+          '\n'
+          'Traceback objects represent a stack trace of an exception.  A\n'
+          'traceback object is implicitly created when an exception occurs, '
+          'and\n'
+          'may also be explicitly created by calling "types.TracebackType".\n'
+          '\n'
+          'For implicitly created tracebacks, when the search for an '
+          'exception\n'
+          'handler unwinds the execution stack, at each unwound level a '
+          'traceback\n'
+          'object is inserted in front of the current traceback.  When an\n'
+          'exception handler is entered, the stack trace is made available to '
           'the\n'
-          '         generator is finalized.  This helps break reference '
-          'cycles\n'
-          '         involving frame objects (for example when catching an\n'
-          '         exception and storing its traceback for later use).\n'
+          'program. (See section The try statement.) It is accessible as the\n'
+          'third item of the tuple returned by "sys.exc_info()", and as the\n'
+          '"__traceback__" attribute of the caught exception.\n'
           '\n'
-          '         "RuntimeError" is raised if the frame is currently '
-          'executing.\n'
+          'When the program contains no suitable handler, the stack trace is\n'
+          'written (nicely formatted) to the standard error stream; if the\n'
+          'interpreter is interactive, it is also made available to the user '
+          'as\n'
+          '"sys.last_traceback".\n'
           '\n'
-          '         New in version 3.4.\n'
+          'For explicitly created tracebacks, it is up to the creator of the\n'
+          'traceback to determine how the "tb_next" attributes should be '
+          'linked\n'
+          'to form a full stack trace.\n'
           '\n'
-          '   Traceback objects\n'
-          '      Traceback objects represent a stack trace of an exception.  '
-          'A\n'
-          '      traceback object is implicitly created when an exception '
-          'occurs,\n'
-          '      and may also be explicitly created by calling\n'
-          '      "types.TracebackType".\n'
-          '\n'
-          '      For implicitly created tracebacks, when the search for an\n'
-          '      exception handler unwinds the execution stack, at each '
-          'unwound\n'
-          '      level a traceback object is inserted in front of the current\n'
-          '      traceback.  When an exception handler is entered, the stack\n'
-          '      trace is made available to the program. (See section The try\n'
-          '      statement.) It is accessible as the third item of the tuple\n'
-          '      returned by "sys.exc_info()", and as the "__traceback__"\n'
-          '      attribute of the caught exception.\n'
-          '\n'
-          '      When the program contains no suitable handler, the stack '
-          'trace\n'
-          '      is written (nicely formatted) to the standard error stream; '
-          'if\n'
-          '      the interpreter is interactive, it is also made available to '
+          'Special read-only attributes: "tb_frame" points to the execution '
+          'frame\n'
+          'of the current level; "tb_lineno" gives the line number where the\n'
+          'exception occurred; "tb_lasti" indicates the precise instruction. '
+          'The\n'
+          'line number and last instruction in the traceback may differ from '
           'the\n'
-          '      user as "sys.last_traceback".\n'
+          'line number of its frame object if the exception occurred in a '
+          '"try"\n'
+          'statement with no matching except clause or with a finally clause.\n'
           '\n'
-          '      For explicitly created tracebacks, it is up to the creator '
-          'of\n'
-          '      the traceback to determine how the "tb_next" attributes '
-          'should\n'
-          '      be linked to form a full stack trace.\n'
-          '\n'
-          '      Special read-only attributes: "tb_frame" points to the '
-          'execution\n'
-          '      frame of the current level; "tb_lineno" gives the line '
-          'number\n'
-          '      where the exception occurred; "tb_lasti" indicates the '
-          'precise\n'
-          '      instruction. The line number and last instruction in the\n'
-          '      traceback may differ from the line number of its frame object '
+          'Accessing "tb_frame" raises an auditing event "object.__getattr__"\n'
+          'with arguments "obj" and ""tb_frame"".\n'
+          '\n'
+          'Special writable attribute: "tb_next" is the next level in the '
+          'stack\n'
+          'trace (towards the frame where the exception occurred), or "None" '
           'if\n'
-          '      the exception occurred in a "try" statement with no matching\n'
-          '      except clause or with a finally clause.\n'
+          'there is no next level.\n'
           '\n'
-          '      Accessing "tb_frame" raises an auditing event\n'
-          '      "object.__getattr__" with arguments "obj" and ""tb_frame"".\n'
+          'Changed in version 3.7: Traceback objects can now be explicitly\n'
+          'instantiated from Python code, and the "tb_next" attribute of '
+          'existing\n'
+          'instances can be updated.\n'
           '\n'
-          '      Special writable attribute: "tb_next" is the next level in '
-          'the\n'
-          '      stack trace (towards the frame where the exception occurred), '
-          'or\n'
-          '      "None" if there is no next level.\n'
           '\n'
-          '      Changed in version 3.7: Traceback objects can now be '
-          'explicitly\n'
-          '      instantiated from Python code, and the "tb_next" attribute '
-          'of\n'
-          '      existing instances can be updated.\n'
+          'Slice objects\n'
+          '-------------\n'
           '\n'
-          '   Slice objects\n'
-          '      Slice objects are used to represent slices for '
-          '"__getitem__()"\n'
-          '      methods.  They are also created by the built-in "slice()"\n'
-          '      function.\n'
+          'Slice objects are used to represent slices for "__getitem__()"\n'
+          'methods.  They are also created by the built-in "slice()" '
+          'function.\n'
           '\n'
-          '      Special read-only attributes: "start" is the lower bound; '
-          '"stop"\n'
-          '      is the upper bound; "step" is the step value; each is "None" '
-          'if\n'
-          '      omitted.  These attributes can have any type.\n'
+          'Special read-only attributes: "start" is the lower bound; "stop" '
+          'is\n'
+          'the upper bound; "step" is the step value; each is "None" if '
+          'omitted.\n'
+          'These attributes can have any type.\n'
           '\n'
-          '      Slice objects support one method:\n'
+          'Slice objects support one method:\n'
           '\n'
-          '      slice.indices(self, length)\n'
+          'slice.indices(self, length)\n'
           '\n'
-          '         This method takes a single integer argument *length* and\n'
-          '         computes information about the slice that the slice '
-          'object\n'
-          '         would describe if applied to a sequence of *length* '
-          'items.\n'
-          '         It returns a tuple of three integers; respectively these '
-          'are\n'
-          '         the *start* and *stop* indices and the *step* or stride\n'
-          '         length of the slice. Missing or out-of-bounds indices are\n'
-          '         handled in a manner consistent with regular slices.\n'
-          '\n'
-          '   Static method objects\n'
-          '      Static method objects provide a way of defeating the\n'
-          '      transformation of function objects to method objects '
-          'described\n'
-          '      above. A static method object is a wrapper around any other\n'
-          '      object, usually a user-defined method object. When a static\n'
-          '      method object is retrieved from a class or a class instance, '
-          'the\n'
-          '      object actually returned is the wrapped object, which is not\n'
-          '      subject to any further transformation. Static method objects '
-          'are\n'
-          '      also callable. Static method objects are created by the '
-          'built-in\n'
-          '      "staticmethod()" constructor.\n'
+          '   This method takes a single integer argument *length* and '
+          'computes\n'
+          '   information about the slice that the slice object would describe '
+          'if\n'
+          '   applied to a sequence of *length* items.  It returns a tuple of\n'
+          '   three integers; respectively these are the *start* and *stop*\n'
+          '   indices and the *step* or stride length of the slice. Missing '
+          'or\n'
+          '   out-of-bounds indices are handled in a manner consistent with\n'
+          '   regular slices.\n'
           '\n'
-          '   Class method objects\n'
-          '      A class method object, like a static method object, is a '
-          'wrapper\n'
-          '      around another object that alters the way in which that '
-          'object\n'
-          '      is retrieved from classes and class instances. The behaviour '
+          '\n'
+          'Static method objects\n'
+          '---------------------\n'
+          '\n'
+          'Static method objects provide a way of defeating the transformation '
           'of\n'
-          '      class method objects upon such retrieval is described above,\n'
-          '      under “User-defined methods”. Class method objects are '
-          'created\n'
-          '      by the built-in "classmethod()" constructor.\n',
+          'function objects to method objects described above. A static '
+          'method\n'
+          'object is a wrapper around any other object, usually a '
+          'user-defined\n'
+          'method object. When a static method object is retrieved from a '
+          'class\n'
+          'or a class instance, the object actually returned is the wrapped\n'
+          'object, which is not subject to any further transformation. Static\n'
+          'method objects are also callable. Static method objects are created '
+          'by\n'
+          'the built-in "staticmethod()" constructor.\n'
+          '\n'
+          '\n'
+          'Class method objects\n'
+          '--------------------\n'
+          '\n'
+          'A class method object, like a static method object, is a wrapper\n'
+          'around another object that alters the way in which that object is\n'
+          'retrieved from classes and class instances. The behaviour of class\n'
+          'method objects upon such retrieval is described above, under '
+          '“User-\n'
+          'defined methods”. Class method objects are created by the built-in\n'
+          '"classmethod()" constructor.\n',
  'typesfunctions': 'Functions\n'
                    '*********\n'
                    '\n'
diff --git a/Misc/NEWS.d/3.12.0rc2.rst b/Misc/NEWS.d/3.12.0rc2.rst
new file mode 100644 (file)
index 0000000..3741da9
--- /dev/null
@@ -0,0 +1,510 @@
+.. date: 2023-08-22-17-39-12
+.. gh-issue: 108310
+.. nonce: fVM3sg
+.. release date: 2023-09-05
+.. section: Security
+
+Fixed an issue where instances of :class:`ssl.SSLSocket` were vulnerable to
+a bypass of the TLS handshake and included protections (like certificate
+verification) and treating sent unencrypted data as if it were
+post-handshake TLS encrypted data.  Security issue reported as
+`CVE-2023-40217
+<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-40217>`_ by Aapo
+Oksman. Patch by Gregory P. Smith.
+
+..
+
+.. date: 2023-08-05-03-51-05
+.. gh-issue: 107774
+.. nonce: VPjaTR
+.. section: Security
+
+PEP 669 specifies that ``sys.monitoring.register_callback`` will generate an
+audit event. Pre-releases of Python 3.12 did not generate the audit event.
+This is now fixed.
+
+..
+
+.. date: 2023-08-30-15-41-47
+.. gh-issue: 108520
+.. nonce: u0ZGP_
+.. section: Core and Builtins
+
+Fix :meth:`multiprocessing.synchronize.SemLock.__setstate__` to properly
+initialize :attr:`multiprocessing.synchronize.SemLock._is_fork_ctx`. This
+fixes a regression when passing a SemLock accross nested processes.
+
+Rename :attr:`multiprocessing.synchronize.SemLock.is_fork_ctx` to
+:attr:`multiprocessing.synchronize.SemLock._is_fork_ctx` to avoid exposing
+it as public API.
+
+..
+
+.. date: 2023-08-29-17-53-12
+.. gh-issue: 108654
+.. nonce: jbkDVo
+.. section: Core and Builtins
+
+Restore locals shadowed by an inlined comprehension if the comprehension
+raises an exception.
+
+..
+
+.. date: 2023-08-26-04-33-18
+.. gh-issue: 108487
+.. nonce: aUFxqf
+.. section: Core and Builtins
+
+Change an assert that would cause a spurious crash in a devious case that
+should only trigger deoptimization.
+
+..
+
+.. date: 2023-08-25-14-51-06
+.. gh-issue: 106176
+.. nonce: D1EA2a
+.. section: Core and Builtins
+
+Use a ``WeakValueDictionary`` to track the lists containing the modules each
+thread is currently importing. This helps avoid a reference leak from
+keeping the list around longer than necessary. Weakrefs are used as GC can't
+interrupt the cleanup.
+
+..
+
+.. date: 2023-08-21-21-13-30
+.. gh-issue: 107901
+.. nonce: hszvdk
+.. section: Core and Builtins
+
+Fix missing line number on :opcode:`JUMP_BACKWARD` at the end of a for loop.
+
+..
+
+.. date: 2023-08-13-17-18-22
+.. gh-issue: 108390
+.. nonce: TkBccC
+.. section: Core and Builtins
+
+Raise an exception when setting a non-local event (``RAISE``,
+``EXCEPTION_HANDLED``, etc.) in ``sys.monitoring.set_local_events``.
+
+Fixes crash when tracing in recursive calls to Python classes.
+
+..
+
+.. date: 2023-08-10-17-36-27
+.. gh-issue: 91051
+.. nonce: LfaeNW
+.. section: Core and Builtins
+
+Fix abort / segfault when using all eight type watcher slots, on platforms
+where ``char`` is signed by default.
+
+..
+
+.. date: 2023-08-04-21-25-26
+.. gh-issue: 107724
+.. nonce: EbBXMr
+.. section: Core and Builtins
+
+In pre-release versions of 3.12, up to rc1, the sys.monitoring callback
+function for the ``PY_THROW`` event was missing the third, exception
+argument. That is now fixed.
+
+..
+
+.. date: 2023-08-02-12-24-51
+.. gh-issue: 107080
+.. nonce: PNolFU
+.. section: Core and Builtins
+
+Trace refs builds (``--with-trace-refs``) were crashing when used with
+isolated subinterpreters.  The problematic global state has been isolated to
+each interpreter.  Other fixing the crashes, this change does not affect
+users.
+
+..
+
+.. date: 2023-07-25-22-35-35
+.. gh-issue: 77377
+.. nonce: EHAbXx
+.. section: Core and Builtins
+
+Ensure that multiprocessing synchronization objects created in a fork
+context are not sent to a different process created in a spawn context. This
+changes a segfault into an actionable RuntimeError in the parent process.
+
+..
+
+.. date: 2023-09-03-04-37-52
+.. gh-issue: 108469
+.. nonce: kusj40
+.. section: Library
+
+:func:`ast.unparse` now supports new :term:`f-string` syntax introduced in
+Python 3.12. Note that the :term:`f-string` quotes are reselected for
+simplicity under the new syntax. (Patch by Steven Sun)
+
+..
+
+.. date: 2023-08-30-20-10-28
+.. gh-issue: 108682
+.. nonce: c2gzLQ
+.. section: Library
+
+Enum: raise :exc:`TypeError` if ``super().__new__()`` is called from a
+custom ``__new__``.
+
+..
+
+.. date: 2023-08-26-08-38-57
+.. gh-issue: 108295
+.. nonce: Pn0QRM
+.. section: Library
+
+Fix crashes related to use of weakrefs on :data:`typing.TypeVar`.
+
+..
+
+.. date: 2023-08-22-22-29-42
+.. gh-issue: 64662
+.. nonce: jHl_Bt
+.. section: Library
+
+Fix support for virtual tables in :meth:`sqlite3.Connection.iterdump`. Patch
+by Aviv Palivoda.
+
+..
+
+.. date: 2023-08-22-17-27-12
+.. gh-issue: 108111
+.. nonce: N7a4u_
+.. section: Library
+
+Fix a regression introduced in GH-101251 for 3.12, resulting in an incorrect
+offset calculation in :meth:`gzip.GzipFile.seek`.
+
+..
+
+.. date: 2023-08-17-14-45-25
+.. gh-issue: 105736
+.. nonce: NJsH7r
+.. section: Library
+
+Harmonized the pure Python version of :class:`~collections.OrderedDict` with
+the C version. Now, both versions set up their internal state in
+``__new__``.  Formerly, the pure Python version did the set up in
+``__init__``.
+
+..
+
+.. date: 2023-08-17-12-59-35
+.. gh-issue: 108083
+.. nonce: 9J7UcT
+.. section: Library
+
+Fix bugs in the constructor of :mod:`sqlite3.Connection` and
+:meth:`sqlite3.Connection.close` where exceptions could be leaked. Patch by
+Erlend E. Aasland.
+
+..
+
+.. date: 2023-08-15-18-20-00
+.. gh-issue: 107963
+.. nonce: 20g5BG
+.. section: Library
+
+Fix :func:`multiprocessing.set_forkserver_preload` to check the given list
+of modules names. Patch by Dong-hee Na.
+
+..
+
+.. date: 2023-08-14-23-11-11
+.. gh-issue: 106242
+.. nonce: 71HMym
+.. section: Library
+
+Fixes :func:`os.path.normpath` to handle embedded null characters without
+truncating the path.
+
+..
+
+.. date: 2023-08-14-11-18-13
+.. gh-issue: 107913
+.. nonce: 4ooY6i
+.. section: Library
+
+Fix possible losses of ``errno`` and ``winerror`` values in :exc:`OSError`
+exceptions if they were cleared or modified by the cleanup code before
+creating the exception object.
+
+..
+
+.. date: 2023-08-10-17-36-22
+.. gh-issue: 107845
+.. nonce: dABiMJ
+.. section: Library
+
+:func:`tarfile.data_filter` now takes the location of symlinks into account
+when determining their target, so it will no longer reject some valid
+tarballs with ``LinkOutsideDestinationError``.
+
+..
+
+.. date: 2023-08-09-13-49-37
+.. gh-issue: 107805
+.. nonce: ezem0k
+.. section: Library
+
+Fix signatures of module-level generated functions in :mod:`turtle`.
+
+..
+
+.. date: 2023-08-07-14-12-07
+.. gh-issue: 107715
+.. nonce: 238r2f
+.. section: Library
+
+Fix :meth:`doctest.DocTestFinder.find` in presence of class names with
+special characters. Patch by Gertjan van Zwieten.
+
+..
+
+.. date: 2023-08-06-15-29-00
+.. gh-issue: 100814
+.. nonce: h195gW
+.. section: Library
+
+Passing a callable object as an option value to a Tkinter image now raises
+the expected TclError instead of an AttributeError.
+
+..
+
+.. date: 2023-08-05-05-10-41
+.. gh-issue: 106684
+.. nonce: P9zRXb
+.. section: Library
+
+Close :class:`asyncio.StreamWriter` when it is not closed by application
+leading to memory leaks. Patch by Kumar Aditya.
+
+..
+
+.. date: 2023-07-31-07-36-24
+.. gh-issue: 107396
+.. nonce: 3_Kh6D
+.. section: Library
+
+tarfiles; Fixed use before assignment of self.exception for gzip
+decompression
+
+..
+
+.. date: 2023-07-07-14-52-31
+.. gh-issue: 106052
+.. nonce: ak8nbs
+.. section: Library
+
+:mod:`re` module: fix the matching of possessive quantifiers in the case of
+a subpattern containing backtracking.
+
+..
+
+.. date: 2023-03-14-01-19-57
+.. gh-issue: 100061
+.. nonce: CiXJYn
+.. section: Library
+
+Fix a bug that causes wrong matches for regular expressions with possessive
+qualifier.
+
+..
+
+.. date: 2022-11-26-22-05-22
+.. gh-issue: 99203
+.. nonce: j0DUae
+.. section: Library
+
+Restore following CPython <= 3.10.5 behavior of :func:`shutil.make_archive`:
+do not create an empty archive if ``root_dir`` is not a directory, and, in
+that case, raise :class:`FileNotFoundError` or :class:`NotADirectoryError`
+regardless of ``format`` choice. Beyond the brought-back behavior, the
+function may now also raise these exceptions in ``dry_run`` mode.
+
+..
+
+.. date: 2023-05-29-14-10-24
+.. gh-issue: 105052
+.. nonce: MGFwbm
+.. section: Documentation
+
+Update ``timeit`` doc to specify that time in seconds is just the default.
+
+..
+
+.. date: 2023-09-04-15-18-14
+.. gh-issue: 89392
+.. nonce: 8A4T5p
+.. section: Tests
+
+Removed support of ``test_main()`` function in tests. They now always use
+normal unittest test runner.
+
+..
+
+.. date: 2023-08-24-06-10-36
+.. gh-issue: 108388
+.. nonce: YCVB0D
+.. section: Tests
+
+Convert test_concurrent_futures to a package of 7 sub-tests. Patch by Victor
+Stinner.
+
+..
+
+.. date: 2023-08-24-04-23-35
+.. gh-issue: 108388
+.. nonce: mr0MeE
+.. section: Tests
+
+Split test_multiprocessing_fork, test_multiprocessing_forkserver and
+test_multiprocessing_spawn into test packages. Each package is made of 4
+sub-tests: processes, threads, manager and misc. It allows running more
+tests in parallel and so reduce the total test duration. Patch by Victor
+Stinner.
+
+..
+
+.. date: 2023-08-23-04-08-18
+.. gh-issue: 105776
+.. nonce: oE6wp_
+.. section: Tests
+
+Fix test_cppext when the C compiler command ``-std=c11`` option: remove
+``-std=`` options from the compiler command. Patch by Victor Stinner.
+
+..
+
+.. date: 2023-07-24-16-56-59
+.. gh-issue: 107178
+.. nonce: Gq1usE
+.. section: Tests
+
+Add the C API test for functions in the Mapping Protocol, the Sequence
+Protocol and some functions in the Object Protocol.
+
+..
+
+.. date: 2023-09-02-18-04-15
+.. gh-issue: 63760
+.. nonce: r8hJ6q
+.. section: Build
+
+Fix Solaris build: no longer redefine the ``gethostname()`` function.
+Solaris defines the function since 2005. Patch by Victor Stinner, original
+patch by Jakub Kulík.
+
+..
+
+.. date: 2023-08-09-17-05-33
+.. gh-issue: 107814
+.. nonce: c0Oapq
+.. section: Build
+
+When calling ``find_python.bat`` with ``-q`` it did not properly silence the
+output of nuget. That is now fixed.
+
+..
+
+.. date: 2023-09-05-10-08-47
+.. gh-issue: 107565
+.. nonce: CIMftz
+.. section: Windows
+
+Update Windows build to use OpenSSL 3.0.10.
+
+..
+
+.. date: 2023-08-22-00-36-57
+.. gh-issue: 106242
+.. nonce: q24ITw
+.. section: Windows
+
+Fixes :func:`~os.path.realpath` to behave consistently when passed a path
+containing an embedded null character on Windows. In strict mode, it now
+raises :exc:`OSError` instead of the unexpected :exc:`ValueError`, and in
+non-strict mode will make the path absolute.
+
+..
+
+.. date: 2023-07-18-13-01-26
+.. gh-issue: 106844
+.. nonce: mci4xO
+.. section: Windows
+
+Fix integer overflow and truncating by the null character in
+:func:`!_winapi.LCMapStringEx` which affects :func:`ntpath.normcase`.
+
+..
+
+.. date: 2023-08-12-13-33-57
+.. gh-issue: 107565
+.. nonce: SJwqf4
+.. section: macOS
+
+Update macOS installer to use OpenSSL 3.0.10.
+
+..
+
+.. date: 2023-08-12-13-18-15
+.. gh-issue: 107565
+.. nonce: Tv22Ne
+.. section: Tools/Demos
+
+Update multissltests and GitHub CI workflows to use OpenSSL 1.1.1v, 3.0.10,
+and 3.1.2.
+
+..
+
+.. date: 2023-08-07-16-30-48
+.. gh-issue: 95065
+.. nonce: -im4R5
+.. section: Tools/Demos
+
+Argument Clinic now supports overriding automatically generated signature by
+using directive ``@text_signature``.
+
+..
+
+.. date: 2023-08-14-10-59-03
+.. gh-issue: 107916
+.. nonce: KH4Muo
+.. section: C API
+
+C API functions :c:func:`PyErr_SetFromErrnoWithFilename`,
+:c:func:`PyErr_SetExcFromWindowsErrWithFilename` and
+:c:func:`PyErr_SetFromWindowsErrWithFilename` save now the error code before
+calling :c:func:`PyUnicode_DecodeFSDefault`.
+
+..
+
+.. date: 2023-08-13-12-33-00
+.. gh-issue: 107915
+.. nonce: jQ0wOi
+.. section: C API
+
+Such C API functions as ``PyErr_SetString()``, ``PyErr_Format()``,
+``PyErr_SetFromErrnoWithFilename()`` and many others no longer crash or
+ignore errors if it failed to format the error message or decode the
+filename. Instead, they keep a corresponding error.
+
+..
+
+.. date: 2023-08-10-11-12-25
+.. gh-issue: 107810
+.. nonce: oJ40Qx
+.. section: C API
+
+Improve :exc:`DeprecationWarning` for uses of :c:type:`PyType_Spec` with
+metaclasses that have custom ``tp_new``.
diff --git a/Misc/NEWS.d/next/Build/2023-08-09-17-05-33.gh-issue-107814.c0Oapq.rst b/Misc/NEWS.d/next/Build/2023-08-09-17-05-33.gh-issue-107814.c0Oapq.rst
deleted file mode 100644 (file)
index d372335..0000000
+++ /dev/null
@@ -1 +0,0 @@
-When calling ``find_python.bat`` with ``-q`` it did not properly silence the output of nuget. That is now fixed.
diff --git a/Misc/NEWS.d/next/Build/2023-09-02-18-04-15.gh-issue-63760.r8hJ6q.rst b/Misc/NEWS.d/next/Build/2023-09-02-18-04-15.gh-issue-63760.r8hJ6q.rst
deleted file mode 100644 (file)
index 9a7249e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix Solaris build: no longer redefine the ``gethostname()`` function. Solaris
-defines the function since 2005. Patch by Victor Stinner, original patch by
-Jakub Kulík.
diff --git a/Misc/NEWS.d/next/C API/2023-08-10-11-12-25.gh-issue-107810.oJ40Qx.rst b/Misc/NEWS.d/next/C API/2023-08-10-11-12-25.gh-issue-107810.oJ40Qx.rst
deleted file mode 100644 (file)
index c8a1f6d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Improve :exc:`DeprecationWarning` for uses of :c:type:`PyType_Spec` with metaclasses that have custom ``tp_new``.
diff --git a/Misc/NEWS.d/next/C API/2023-08-13-12-33-00.gh-issue-107915.jQ0wOi.rst b/Misc/NEWS.d/next/C API/2023-08-13-12-33-00.gh-issue-107915.jQ0wOi.rst
deleted file mode 100644 (file)
index 58ee3f1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Such C API functions as ``PyErr_SetString()``, ``PyErr_Format()``,
-``PyErr_SetFromErrnoWithFilename()`` and many others no longer crash or
-ignore errors if it failed to format the error message or decode the
-filename. Instead, they keep a corresponding error.
diff --git a/Misc/NEWS.d/next/C API/2023-08-14-10-59-03.gh-issue-107916.KH4Muo.rst b/Misc/NEWS.d/next/C API/2023-08-14-10-59-03.gh-issue-107916.KH4Muo.rst
deleted file mode 100644 (file)
index f1f1660..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-C API functions :c:func:`PyErr_SetFromErrnoWithFilename`,
-:c:func:`PyErr_SetExcFromWindowsErrWithFilename` and
-:c:func:`PyErr_SetFromWindowsErrWithFilename` save now the error code before
-calling :c:func:`PyUnicode_DecodeFSDefault`.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-07-25-22-35-35.gh-issue-77377.EHAbXx.rst b/Misc/NEWS.d/next/Core and Builtins/2023-07-25-22-35-35.gh-issue-77377.EHAbXx.rst
deleted file mode 100644 (file)
index 194851d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Ensure that multiprocessing synchronization objects created in a fork context are not sent to a different process created in a spawn context. This changes a segfault into an actionable RuntimeError in the parent process.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-02-12-24-51.gh-issue-107080.PNolFU.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-02-12-24-51.gh-issue-107080.PNolFU.rst
deleted file mode 100644 (file)
index 5084c85..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Trace refs builds (``--with-trace-refs``) were crashing when used with
-isolated subinterpreters.  The problematic global state has been isolated to
-each interpreter.  Other fixing the crashes, this change does not affect
-users.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-04-21-25-26.gh-issue-107724.EbBXMr.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-04-21-25-26.gh-issue-107724.EbBXMr.rst
deleted file mode 100644 (file)
index 6e853cf..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-In pre-release versions of 3.12, up to rc1, the sys.monitoring callback
-function for the ``PY_THROW`` event was missing the third, exception
-argument. That is now fixed.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-10-17-36-27.gh-issue-91051.LfaeNW.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-10-17-36-27.gh-issue-91051.LfaeNW.rst
deleted file mode 100644 (file)
index b4b90ad..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix abort / segfault when using all eight type watcher slots, on platforms
-where ``char`` is signed by default.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-13-17-18-22.gh-issue-108390.TkBccC.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-13-17-18-22.gh-issue-108390.TkBccC.rst
deleted file mode 100644 (file)
index 3ed5960..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Raise an exception when setting a non-local event (``RAISE``, ``EXCEPTION_HANDLED``,
-etc.) in ``sys.monitoring.set_local_events``.
-
-Fixes crash when tracing in recursive calls to Python classes.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-21-21-13-30.gh-issue-107901.hszvdk.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-21-21-13-30.gh-issue-107901.hszvdk.rst
deleted file mode 100644 (file)
index 112e093..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Fix missing line number on :opcode:`JUMP_BACKWARD` at the end of a for loop.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-25-14-51-06.gh-issue-106176.D1EA2a.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-25-14-51-06.gh-issue-106176.D1EA2a.rst
deleted file mode 100644 (file)
index 7f63d10..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Use a ``WeakValueDictionary`` to track the lists containing the modules each
-thread is currently importing. This helps avoid a reference leak from
-keeping the list around longer than necessary. Weakrefs are used as GC can't
-interrupt the cleanup.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-26-04-33-18.gh-issue-108487.aUFxqf.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-26-04-33-18.gh-issue-108487.aUFxqf.rst
deleted file mode 100644 (file)
index 1117bcd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Change an assert that would cause a spurious crash in a devious case that should only trigger deoptimization.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-29-17-53-12.gh-issue-108654.jbkDVo.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-29-17-53-12.gh-issue-108654.jbkDVo.rst
deleted file mode 100644 (file)
index 032e033..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Restore locals shadowed by an inlined comprehension if the comprehension
-raises an exception.
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-08-30-15-41-47.gh-issue-108520.u0ZGP_.rst b/Misc/NEWS.d/next/Core and Builtins/2023-08-30-15-41-47.gh-issue-108520.u0ZGP_.rst
deleted file mode 100644 (file)
index 44131fb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix :meth:`multiprocessing.synchronize.SemLock.__setstate__` to properly initialize :attr:`multiprocessing.synchronize.SemLock._is_fork_ctx`. This fixes a regression when passing a SemLock accross nested processes.\r
-\r
-Rename :attr:`multiprocessing.synchronize.SemLock.is_fork_ctx` to :attr:`multiprocessing.synchronize.SemLock._is_fork_ctx` to avoid exposing it as public API.\r
diff --git a/Misc/NEWS.d/next/Documentation/2023-05-29-14-10-24.gh-issue-105052.MGFwbm.rst b/Misc/NEWS.d/next/Documentation/2023-05-29-14-10-24.gh-issue-105052.MGFwbm.rst
deleted file mode 100644 (file)
index 8fdc38d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Update ``timeit`` doc to specify that time in seconds is just the default.
diff --git a/Misc/NEWS.d/next/Library/2022-11-26-22-05-22.gh-issue-99203.j0DUae.rst b/Misc/NEWS.d/next/Library/2022-11-26-22-05-22.gh-issue-99203.j0DUae.rst
deleted file mode 100644 (file)
index fcfb044..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-Restore following CPython <= 3.10.5 behavior of :func:`shutil.make_archive`:
-do not create an empty archive if ``root_dir`` is not a directory, and, in that
-case, raise :class:`FileNotFoundError` or :class:`NotADirectoryError`
-regardless of ``format`` choice. Beyond the brought-back behavior, the function
-may now also raise these exceptions in ``dry_run`` mode.
diff --git a/Misc/NEWS.d/next/Library/2023-03-14-01-19-57.gh-issue-100061.CiXJYn.rst b/Misc/NEWS.d/next/Library/2023-03-14-01-19-57.gh-issue-100061.CiXJYn.rst
deleted file mode 100644 (file)
index dfed34f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix a bug that causes wrong matches for regular expressions with possessive
-qualifier.
diff --git a/Misc/NEWS.d/next/Library/2023-07-07-14-52-31.gh-issue-106052.ak8nbs.rst b/Misc/NEWS.d/next/Library/2023-07-07-14-52-31.gh-issue-106052.ak8nbs.rst
deleted file mode 100644 (file)
index f2d4c2f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-:mod:`re` module: fix the matching of possessive quantifiers in the case of
-a subpattern containing backtracking.
diff --git a/Misc/NEWS.d/next/Library/2023-07-31-07-36-24.gh-issue-107396.3_Kh6D.rst b/Misc/NEWS.d/next/Library/2023-07-31-07-36-24.gh-issue-107396.3_Kh6D.rst
deleted file mode 100644 (file)
index 73bff4b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tarfiles; Fixed use before assignment of self.exception for gzip decompression
diff --git a/Misc/NEWS.d/next/Library/2023-08-05-05-10-41.gh-issue-106684.P9zRXb.rst b/Misc/NEWS.d/next/Library/2023-08-05-05-10-41.gh-issue-106684.P9zRXb.rst
deleted file mode 100644 (file)
index 85bce76..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Close :class:`asyncio.StreamWriter` when it is not closed by application leading to memory leaks. Patch by Kumar Aditya.
diff --git a/Misc/NEWS.d/next/Library/2023-08-06-15-29-00.gh-issue-100814.h195gW.rst b/Misc/NEWS.d/next/Library/2023-08-06-15-29-00.gh-issue-100814.h195gW.rst
deleted file mode 100644 (file)
index 86cb7bf..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Passing a callable object as an option value to a Tkinter image now raises
-the expected TclError instead of an AttributeError.
diff --git a/Misc/NEWS.d/next/Library/2023-08-07-14-12-07.gh-issue-107715.238r2f.rst b/Misc/NEWS.d/next/Library/2023-08-07-14-12-07.gh-issue-107715.238r2f.rst
deleted file mode 100644 (file)
index 4bf08c0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Fix :meth:`doctest.DocTestFinder.find` in presence of class names with special characters. Patch by Gertjan van Zwieten.
diff --git a/Misc/NEWS.d/next/Library/2023-08-09-13-49-37.gh-issue-107805.ezem0k.rst b/Misc/NEWS.d/next/Library/2023-08-09-13-49-37.gh-issue-107805.ezem0k.rst
deleted file mode 100644 (file)
index 263df68..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Fix signatures of module-level generated functions in :mod:`turtle`.
diff --git a/Misc/NEWS.d/next/Library/2023-08-10-17-36-22.gh-issue-107845.dABiMJ.rst b/Misc/NEWS.d/next/Library/2023-08-10-17-36-22.gh-issue-107845.dABiMJ.rst
deleted file mode 100644 (file)
index 32c1fb9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-:func:`tarfile.data_filter` now takes the location of symlinks into account
-when determining their target, so it will no longer reject some valid
-tarballs with ``LinkOutsideDestinationError``.
diff --git a/Misc/NEWS.d/next/Library/2023-08-14-11-18-13.gh-issue-107913.4ooY6i.rst b/Misc/NEWS.d/next/Library/2023-08-14-11-18-13.gh-issue-107913.4ooY6i.rst
deleted file mode 100644 (file)
index de5e21a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix possible losses of ``errno`` and ``winerror`` values in :exc:`OSError`
-exceptions if they were cleared or modified by the cleanup code before
-creating the exception object.
diff --git a/Misc/NEWS.d/next/Library/2023-08-14-23-11-11.gh-issue-106242.71HMym.rst b/Misc/NEWS.d/next/Library/2023-08-14-23-11-11.gh-issue-106242.71HMym.rst
deleted file mode 100644 (file)
index 44237a9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Fixes :func:`os.path.normpath` to handle embedded null characters without truncating the path.
diff --git a/Misc/NEWS.d/next/Library/2023-08-15-18-20-00.gh-issue-107963.20g5BG.rst b/Misc/NEWS.d/next/Library/2023-08-15-18-20-00.gh-issue-107963.20g5BG.rst
deleted file mode 100644 (file)
index 3a73b2d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix :func:`multiprocessing.set_forkserver_preload` to check the given list
-of modules names. Patch by Dong-hee Na.
diff --git a/Misc/NEWS.d/next/Library/2023-08-17-12-59-35.gh-issue-108083.9J7UcT.rst b/Misc/NEWS.d/next/Library/2023-08-17-12-59-35.gh-issue-108083.9J7UcT.rst
deleted file mode 100644 (file)
index ff499ce..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Fix bugs in the constructor of :mod:`sqlite3.Connection` and
-:meth:`sqlite3.Connection.close` where exceptions could be leaked. Patch by
-Erlend E. Aasland.
diff --git a/Misc/NEWS.d/next/Library/2023-08-17-14-45-25.gh-issue-105736.NJsH7r.rst b/Misc/NEWS.d/next/Library/2023-08-17-14-45-25.gh-issue-105736.NJsH7r.rst
deleted file mode 100644 (file)
index 1d959a3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Harmonized the pure Python version of :class:`~collections.OrderedDict` with the C version. Now,
-both versions set up their internal state in ``__new__``.  Formerly, the pure
-Python version did the set up in ``__init__``.
diff --git a/Misc/NEWS.d/next/Library/2023-08-22-17-27-12.gh-issue-108111.N7a4u_.rst b/Misc/NEWS.d/next/Library/2023-08-22-17-27-12.gh-issue-108111.N7a4u_.rst
deleted file mode 100644 (file)
index 8eafa6c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix a regression introduced in GH-101251 for 3.12, resulting in an incorrect
-offset calculation in :meth:`gzip.GzipFile.seek`.
diff --git a/Misc/NEWS.d/next/Library/2023-08-22-22-29-42.gh-issue-64662.jHl_Bt.rst b/Misc/NEWS.d/next/Library/2023-08-22-22-29-42.gh-issue-64662.jHl_Bt.rst
deleted file mode 100644 (file)
index 1b4c33a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix support for virtual tables in :meth:`sqlite3.Connection.iterdump`. Patch
-by Aviv Palivoda.
diff --git a/Misc/NEWS.d/next/Library/2023-08-26-08-38-57.gh-issue-108295.Pn0QRM.rst b/Misc/NEWS.d/next/Library/2023-08-26-08-38-57.gh-issue-108295.Pn0QRM.rst
deleted file mode 100644 (file)
index 7e61ed4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Fix crashes related to use of weakrefs on :data:`typing.TypeVar`.
diff --git a/Misc/NEWS.d/next/Library/2023-08-30-20-10-28.gh-issue-108682.c2gzLQ.rst b/Misc/NEWS.d/next/Library/2023-08-30-20-10-28.gh-issue-108682.c2gzLQ.rst
deleted file mode 100644 (file)
index 148d432..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Enum: raise :exc:`TypeError` if ``super().__new__()`` is called from a
-custom ``__new__``.
diff --git a/Misc/NEWS.d/next/Library/2023-09-03-04-37-52.gh-issue-108469.kusj40.rst b/Misc/NEWS.d/next/Library/2023-09-03-04-37-52.gh-issue-108469.kusj40.rst
deleted file mode 100644 (file)
index ac0f682..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-:func:`ast.unparse` now supports new :term:`f-string` syntax introduced in
-Python 3.12. Note that the :term:`f-string` quotes are reselected for simplicity
-under the new syntax. (Patch by Steven Sun)
diff --git a/Misc/NEWS.d/next/Security/2023-08-05-03-51-05.gh-issue-107774.VPjaTR.rst b/Misc/NEWS.d/next/Security/2023-08-05-03-51-05.gh-issue-107774.VPjaTR.rst
deleted file mode 100644 (file)
index b89b50c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-PEP 669 specifies that ``sys.monitoring.register_callback`` will generate an
-audit event. Pre-releases of Python 3.12 did not generate the audit event.
-This is now fixed.
diff --git a/Misc/NEWS.d/next/Security/2023-08-22-17-39-12.gh-issue-108310.fVM3sg.rst b/Misc/NEWS.d/next/Security/2023-08-22-17-39-12.gh-issue-108310.fVM3sg.rst
deleted file mode 100644 (file)
index 403c77a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Fixed an issue where instances of :class:`ssl.SSLSocket` were vulnerable to
-a bypass of the TLS handshake and included protections (like certificate
-verification) and treating sent unencrypted data as if it were
-post-handshake TLS encrypted data.  Security issue reported as
-`CVE-2023-40217
-<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-40217>`_ by
-Aapo Oksman. Patch by Gregory P. Smith.
diff --git a/Misc/NEWS.d/next/Tests/2023-07-24-16-56-59.gh-issue-107178.Gq1usE.rst b/Misc/NEWS.d/next/Tests/2023-07-24-16-56-59.gh-issue-107178.Gq1usE.rst
deleted file mode 100644 (file)
index dd6becf..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Add the C API test for functions in the Mapping Protocol, the Sequence
-Protocol and some functions in the Object Protocol.
diff --git a/Misc/NEWS.d/next/Tests/2023-08-23-04-08-18.gh-issue-105776.oE6wp_.rst b/Misc/NEWS.d/next/Tests/2023-08-23-04-08-18.gh-issue-105776.oE6wp_.rst
deleted file mode 100644 (file)
index 0e0a3aa..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix test_cppext when the C compiler command ``-std=c11`` option: remove
-``-std=`` options from the compiler command. Patch by Victor Stinner.
diff --git a/Misc/NEWS.d/next/Tests/2023-08-24-04-23-35.gh-issue-108388.mr0MeE.rst b/Misc/NEWS.d/next/Tests/2023-08-24-04-23-35.gh-issue-108388.mr0MeE.rst
deleted file mode 100644 (file)
index 8cf77b1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Split test_multiprocessing_fork, test_multiprocessing_forkserver and
-test_multiprocessing_spawn into test packages. Each package is made of 4
-sub-tests: processes, threads, manager and misc. It allows running more tests
-in parallel and so reduce the total test duration. Patch by Victor Stinner.
diff --git a/Misc/NEWS.d/next/Tests/2023-08-24-06-10-36.gh-issue-108388.YCVB0D.rst b/Misc/NEWS.d/next/Tests/2023-08-24-06-10-36.gh-issue-108388.YCVB0D.rst
deleted file mode 100644 (file)
index ddff07b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Convert test_concurrent_futures to a package of 7 sub-tests. Patch by Victor
-Stinner.
diff --git a/Misc/NEWS.d/next/Tests/2023-09-04-15-18-14.gh-issue-89392.8A4T5p.rst b/Misc/NEWS.d/next/Tests/2023-09-04-15-18-14.gh-issue-89392.8A4T5p.rst
deleted file mode 100644 (file)
index e1dea8e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Removed support of ``test_main()`` function in tests. They now always use
-normal unittest test runner.
diff --git a/Misc/NEWS.d/next/Tools-Demos/2023-08-07-16-30-48.gh-issue-95065.-im4R5.rst b/Misc/NEWS.d/next/Tools-Demos/2023-08-07-16-30-48.gh-issue-95065.-im4R5.rst
deleted file mode 100644 (file)
index 4768e67..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Argument Clinic now supports overriding automatically generated signature by
-using directive ``@text_signature``.
diff --git a/Misc/NEWS.d/next/Tools-Demos/2023-08-12-13-18-15.gh-issue-107565.Tv22Ne.rst b/Misc/NEWS.d/next/Tools-Demos/2023-08-12-13-18-15.gh-issue-107565.Tv22Ne.rst
deleted file mode 100644 (file)
index c43ee68..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Update multissltests and GitHub CI workflows to use OpenSSL 1.1.1v, 3.0.10,
-and 3.1.2.
diff --git a/Misc/NEWS.d/next/Windows/2023-07-18-13-01-26.gh-issue-106844.mci4xO.rst b/Misc/NEWS.d/next/Windows/2023-07-18-13-01-26.gh-issue-106844.mci4xO.rst
deleted file mode 100644 (file)
index 1fdf162..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Fix integer overflow and truncating by the null character in :func:`!_winapi.LCMapStringEx` which affects :func:`ntpath.normcase`.
diff --git a/Misc/NEWS.d/next/Windows/2023-08-22-00-36-57.gh-issue-106242.q24ITw.rst b/Misc/NEWS.d/next/Windows/2023-08-22-00-36-57.gh-issue-106242.q24ITw.rst
deleted file mode 100644 (file)
index ffe42ec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Fixes :func:`~os.path.realpath` to behave consistently when passed a path
-containing an embedded null character on Windows. In strict mode, it now
-raises :exc:`OSError` instead of the unexpected :exc:`ValueError`, and in
-non-strict mode will make the path absolute.
diff --git a/Misc/NEWS.d/next/Windows/2023-09-05-10-08-47.gh-issue-107565.CIMftz.rst b/Misc/NEWS.d/next/Windows/2023-09-05-10-08-47.gh-issue-107565.CIMftz.rst
deleted file mode 100644 (file)
index 024a582..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Update Windows build to use OpenSSL 3.0.10.
diff --git a/Misc/NEWS.d/next/macOS/2023-08-12-13-33-57.gh-issue-107565.SJwqf4.rst b/Misc/NEWS.d/next/macOS/2023-08-12-13-33-57.gh-issue-107565.SJwqf4.rst
deleted file mode 100644 (file)
index c238c47..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Update macOS installer to use OpenSSL 3.0.10.
index b97bd3c8bd667d405c865ab59325f35a16fe286c..1d0aee571237318e057908182e4fb43d3ec431dd 100644 (file)
@@ -1,4 +1,4 @@
-This is Python version 3.12.0 release candidate 1
+This is Python version 3.12.0 release candidate 2
 =================================================
 
 .. image:: https://github.com/python/cpython/workflows/Tests/badge.svg