Python 3.12.0a1

This commit is contained in:
Thomas Wouters 2022-10-25 00:07:03 +02:00
parent ad1dc3ebb6
commit 4ae1a0ecaf
597 changed files with 6455 additions and 1454 deletions

View File

@ -20,10 +20,10 @@
#define PY_MINOR_VERSION 12
#define PY_MICRO_VERSION 0
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA
#define PY_RELEASE_SERIAL 0
#define PY_RELEASE_SERIAL 1
/* Version as a string */
#define PY_VERSION "3.12.0a0"
#define PY_VERSION "3.12.0a1"
/*--end constants--*/
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.

View File

@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Autogenerated by Sphinx on Fri May 6 23:53:34 2022
# Autogenerated by Sphinx on Tue Oct 25 00:07:40 2022
topics = {'assert': 'The "assert" statement\n'
'**********************\n'
'\n'
@ -1671,10 +1671,26 @@ topics = {'assert': 'The "assert" statement\n'
'If the syntax "**expression" appears in the function call,\n'
'"expression" must evaluate to a *mapping*, the contents of which '
'are\n'
'treated as additional keyword arguments. If a keyword is already\n'
'present (as an explicit keyword argument, or from another '
'unpacking),\n'
'a "TypeError" exception is raised.\n'
'treated as additional keyword arguments. If a parameter matching a '
'key\n'
'has already been given a value (by an explicit keyword argument, '
'or\n'
'from another unpacking), a "TypeError" exception is raised.\n'
'\n'
'When "**expression" is used, each key in this mapping must be a\n'
'string. Each value from the mapping is assigned to the first '
'formal\n'
'parameter eligible for keyword assignment whose name is equal to '
'the\n'
'key. A key need not be a Python identifier (e.g. ""max-temp °F"" '
'is\n'
'acceptable, although it will not match any formal parameter that '
'could\n'
'be declared). If there is no match to a formal parameter the '
'key-value\n'
'pair is collected by the "**" parameter, if there is one, or if '
'there\n'
'is not, a "TypeError" exception is raised.\n'
'\n'
'Formal parameters using the syntax "*identifier" or "**identifier"\n'
'cannot be used as positional argument slots or as keyword argument\n'
@ -2022,7 +2038,7 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'* Mappings (instances of "dict") compare equal if and only if '
'they\n'
' have equal *(key, value)* pairs. Equality comparison of the '
' have equal "(key, value)" pairs. Equality comparison of the '
'keys and\n'
' values enforces reflexivity.\n'
'\n'
@ -2398,35 +2414,43 @@ topics = {'assert': 'The "assert" statement\n'
' try3_stmt ::= "try" ":" suite\n'
' "finally" ":" suite\n'
'\n'
'Additional information on exceptions can be found in section\n'
'Exceptions, and information on using the "raise" statement to '
'generate\n'
'exceptions may be found in section The raise statement.\n'
'\n'
'\n'
'"except" clause\n'
'---------------\n'
'\n'
'The "except" clause(s) specify one or more exception handlers. '
'When no\n'
'exception occurs in the "try" clause, no exception handler is\n'
'executed. When an exception occurs in the "try" suite, a search '
'for an\n'
'exception handler is started. This search inspects the except '
'clauses\n'
'in turn until one is found that matches the exception. An '
'expression-\n'
'less except clause, if present, must be last; it matches any\n'
'exception. For an except clause with an expression, that '
'expression\n'
'is evaluated, and the clause matches the exception if the '
'resulting\n'
'object is “compatible” with the exception. An object is '
'compatible\n'
'with an exception if the object is the class or a *non-virtual '
'base\n'
'class* of the exception object, or a tuple containing an item '
'that is\n'
'the class or a non-virtual base class of the exception object.\n'
'\n'
'If no except clause matches the exception, the search for an '
'exception handler is started. This search inspects the "except"\n'
'clauses in turn until one is found that matches the exception. '
'An\n'
'expression-less "except" clause, if present, must be last; it '
'matches\n'
'any exception. For an "except" clause with an expression, that\n'
'expression is evaluated, and the clause matches the exception if '
'the\n'
'resulting object is “compatible” with the exception. An object '
'is\n'
'compatible with an exception if the object is the class or a '
'*non-\n'
'virtual base class* of the exception object, or a tuple '
'containing an\n'
'item that is the class or a non-virtual base class of the '
'exception\n'
'handler continues in the surrounding code and on the invocation '
'stack.\n'
'[1]\n'
'object.\n'
'\n'
'If the evaluation of an expression in the header of an except '
'If no "except" clause matches the exception, the search for an\n'
'exception handler continues in the surrounding code and on the\n'
'invocation stack. [1]\n'
'\n'
'If the evaluation of an expression in the header of an "except" '
'clause\n'
'raises an exception, the original search for a handler is '
'canceled and\n'
@ -2436,24 +2460,24 @@ topics = {'assert': 'The "assert" statement\n'
'raised\n'
'the exception).\n'
'\n'
'When a matching except clause is found, the exception is '
'When a matching "except" clause is found, the exception is '
'assigned to\n'
'the target specified after the "as" keyword in that except '
'clause, if\n'
'present, and the except clauses suite is executed. All except\n'
'clauses must have an executable block. When the end of this '
'the target specified after the "as" keyword in that "except" '
'clause,\n'
'if present, and the "except" clauses suite is executed. All '
'"except"\n'
'clauses must have an executable block. When the end of this '
'block is\n'
'reached, execution continues normally after the entire try '
'statement.\n'
'(This means that if two nested handlers exist for the same '
'exception,\n'
'and the exception occurs in the try clause of the inner handler, '
'the\n'
'outer handler will not handle the exception.)\n'
'reached, execution continues normally after the entire "try"\n'
'statement. (This means that if two nested handlers exist for the '
'same\n'
'exception, and the exception occurs in the "try" clause of the '
'inner\n'
'handler, the outer handler will not handle the exception.)\n'
'\n'
'When an exception has been assigned using "as target", it is '
'cleared\n'
'at the end of the except clause. This is as if\n'
'at the end of the "except" clause. This is as if\n'
'\n'
' except E as N:\n'
' foo\n'
@ -2468,7 +2492,7 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'This means the exception must be assigned to a different name to '
'be\n'
'able to refer to it after the except clause. Exceptions are '
'able to refer to it after the "except" clause. Exceptions are '
'cleared\n'
'because with the traceback attached to them, they form a '
'reference\n'
@ -2476,7 +2500,8 @@ topics = {'assert': 'The "assert" statement\n'
'alive\n'
'until the next garbage collection occurs.\n'
'\n'
'Before an except clauses suite is executed, details about the\n'
'Before an "except" clauses suite is executed, details about '
'the\n'
'exception are stored in the "sys" module and can be accessed '
'via\n'
'"sys.exc_info()". "sys.exc_info()" returns a 3-tuple consisting '
@ -2512,6 +2537,10 @@ topics = {'assert': 'The "assert" statement\n'
' >>> print(sys.exc_info())\n'
' (None, None, None)\n'
'\n'
'\n'
'"except*" clause\n'
'----------------\n'
'\n'
'The "except*" clause(s) are used for handling "ExceptionGroup"s. '
'The\n'
'exception type for matching is interpreted as in the case of '
@ -2520,13 +2549,15 @@ topics = {'assert': 'The "assert" statement\n'
'when\n'
'the type matches some of the exceptions in the group. This means '
'that\n'
'multiple except* clauses can execute, each handling part of the\n'
'exception group. Each clause executes once and handles an '
'exception\n'
'group of all matching exceptions. Each exception in the group '
'is\n'
'handled by at most one except* clause, the first that matches '
'it.\n'
'multiple "except*" clauses can execute, each handling part of '
'the\n'
'exception group. Each clause executes at most once and handles '
'an\n'
'exception group of all matching exceptions. Each exception in '
'the\n'
'group is handled by at most one "except*" clause, the first '
'that\n'
'matches it.\n'
'\n'
' >>> try:\n'
' ... raise ExceptionGroup("eg",\n'
@ -2548,22 +2579,37 @@ topics = {'assert': 'The "assert" statement\n'
' +-+---------------- 1 ----------------\n'
' | ValueError: 1\n'
' +------------------------------------\n'
' >>>\n'
'\n'
' Any remaining exceptions that were not handled by any except* '
'Any remaining exceptions that were not handled by any "except*" '
'clause\n'
' are re-raised at the end, combined into an exception group '
'along with\n'
' all exceptions that were raised from within except* clauses.\n'
'are re-raised at the end, combined into an exception group along '
'with\n'
'all exceptions that were raised from within "except*" clauses.\n'
'\n'
' An except* clause must have a matching type, and this type '
'cannot be a\n'
' subclass of :exc:`BaseExceptionGroup`. It is not possible to '
'mix except\n'
' and except* in the same :keyword:`try`. :keyword:`break`,\n'
' :keyword:`continue` and :keyword:`return` cannot appear in an '
'except*\n'
' clause.\n'
'If the raised exception is not an exception group and its type '
'matches\n'
'one of the "except*" clauses, it is caught and wrapped by an '
'exception\n'
'group with an empty message string.\n'
'\n'
' >>> try:\n'
' ... raise BlockingIOError\n'
' ... except* BlockingIOError as e:\n'
' ... print(repr(e))\n'
' ...\n'
" ExceptionGroup('', (BlockingIOError()))\n"
'\n'
'An "except*" clause must have a matching type, and this type '
'cannot be\n'
'a subclass of "BaseExceptionGroup". It is not possible to mix '
'"except"\n'
'and "except*" in the same "try". "break", "continue" and '
'"return"\n'
'cannot appear in an "except*" clause.\n'
'\n'
'\n'
'"else" clause\n'
'-------------\n'
'\n'
'The optional "else" clause is executed if the control flow '
'leaves the\n'
@ -2573,6 +2619,10 @@ topics = {'assert': 'The "assert" statement\n'
'are\n'
'not handled by the preceding "except" clauses.\n'
'\n'
'\n'
'"finally" clause\n'
'----------------\n'
'\n'
'If "finally" is present, it specifies a cleanup handler. The '
'"try"\n'
'clause is executed, including any "except" and "else" clauses. '
@ -2626,11 +2676,6 @@ topics = {'assert': 'The "assert" statement\n'
' >>> foo()\n'
" 'finally'\n"
'\n'
'Additional information on exceptions can be found in section\n'
'Exceptions, and information on using the "raise" statement to '
'generate\n'
'exceptions may be found in section The raise statement.\n'
'\n'
'Changed in version 3.8: Prior to Python 3.8, a "continue" '
'statement\n'
'was illegal in the "finally" clause due to a problem with the\n'
@ -3482,8 +3527,8 @@ topics = {'assert': 'The "assert" statement\n'
' there is matched against the whole object rather than an '
'attribute.\n'
' For example "int(0|1)" matches the value "0", but not the '
'values\n'
' "0.0" or "False".\n'
'value\n'
' "0.0".\n'
'\n'
'In simple terms "CLS(P1, attr=P2)" matches only if the '
'following\n'
@ -4144,7 +4189,7 @@ topics = {'assert': 'The "assert" statement\n'
' invoking the superclasss "__new__()" method using\n'
' "super().__new__(cls[, ...])" with appropriate arguments '
'and then\n'
' modifying the newly-created instance as necessary before '
' modifying the newly created instance as necessary before '
'returning\n'
' it.\n'
'\n'
@ -4547,7 +4592,7 @@ topics = {'assert': 'The "assert" statement\n'
'Python.This is\n'
' intended to provide protection against a '
'denial-of-service caused\n'
' by carefully-chosen inputs that exploit the worst '
' by carefully chosen inputs that exploit the worst '
'case\n'
' performance of a dict insertion, O(n^2) complexity. '
'See\n'
@ -4861,7 +4906,10 @@ topics = {'assert': 'The "assert" statement\n'
'is\n'
'applied to separating the commands; the input is split at the '
'first\n'
'";;" pair, even if it is in the middle of a quoted string.\n'
'";;" pair, even if it is in the middle of a quoted string. A\n'
'workaround for strings with double semicolons is to use '
'implicit\n'
'string concatenation "\';\'\';\'" or "";"";"".\n'
'\n'
'If a file ".pdbrc" exists in the users home directory or in '
'the\n'
@ -5537,9 +5585,10 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
' * "for" loop header,\n'
'\n'
' * after "as" in a "with" statement, "except" clause or in the '
'as-\n'
' pattern in structural pattern matching,\n'
' * after "as" in a "with" statement, "except" clause, '
'"except*"\n'
' clause, or in the as-pattern in structural pattern '
'matching,\n'
'\n'
' * in a capture pattern in structural pattern matching\n'
'\n'
@ -7100,8 +7149,8 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'A non-normative HTML file listing all valid identifier '
'characters for\n'
'Unicode 14.0.0 can be found at\n'
'https://www.unicode.org/Public/14.0.0/ucd/DerivedCoreProperties.txt\n'
'Unicode 15.0.0 can be found at\n'
'https://www.unicode.org/Public/15.0.0/ucd/DerivedCoreProperties.txt\n'
'\n'
'\n'
'Keywords\n'
@ -7654,9 +7703,8 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
' * "for" loop header,\n'
'\n'
' * after "as" in a "with" statement, "except" clause or in the '
'as-\n'
' pattern in structural pattern matching,\n'
' * after "as" in a "with" statement, "except" clause, "except*"\n'
' clause, or in the as-pattern in structural pattern matching,\n'
'\n'
' * in a capture pattern in structural pattern matching\n'
'\n'
@ -8229,8 +8277,9 @@ topics = {'assert': 'The "assert" statement\n'
'the syntax is explicitly given, operators are binary. '
'Operators in\n'
'the same box group left to right (except for '
'exponentiation, which\n'
'groups from right to left).\n'
'exponentiation and\n'
'conditional expressions, which group from right to '
'left).\n'
'\n'
'Note that comparisons, membership tests, and identity '
'tests, all have\n'
@ -8254,7 +8303,7 @@ topics = {'assert': 'The "assert" statement\n'
'| "x(arguments...)", "x.attribute" | '
'attribute reference |\n'
'+-------------------------------------------------+---------------------------------------+\n'
'| "await" "x" | '
'| "await x" | '
'Await expression |\n'
'+-------------------------------------------------+---------------------------------------+\n'
'| "**" | '
@ -8290,7 +8339,7 @@ topics = {'assert': 'The "assert" statement\n'
'| ">=", "!=", "==" | '
'tests and identity tests |\n'
'+-------------------------------------------------+---------------------------------------+\n'
'| "not" "x" | '
'| "not x" | '
'Boolean NOT |\n'
'+-------------------------------------------------+---------------------------------------+\n'
'| "and" | '
@ -8980,31 +9029,7 @@ topics = {'assert': 'The "assert" statement\n'
' still alive. The list is in definition order. Example:\n'
'\n'
' >>> int.__subclasses__()\n'
" [<class 'bool'>]\n"
'\n'
'-[ Footnotes ]-\n'
'\n'
'[1] Additional information on these special methods may be '
'found in\n'
' the Python Reference Manual (Basic customization).\n'
'\n'
'[2] As a consequence, the list "[1, 2]" is considered equal '
'to "[1.0,\n'
' 2.0]", and similarly for tuples.\n'
'\n'
'[3] They must have since the parser cant tell the type of '
'the\n'
' operands.\n'
'\n'
'[4] Cased characters are those with general category '
'property being\n'
' one of “Lu” (Letter, uppercase), “Ll” (Letter, '
'lowercase), or “Lt”\n'
' (Letter, titlecase).\n'
'\n'
'[5] To format only a tuple you should therefore provide a '
'singleton\n'
' tuple whose only element is the tuple to be formatted.\n',
" [<class 'bool'>]\n",
'specialnames': 'Special method names\n'
'********************\n'
'\n'
@ -9073,7 +9098,7 @@ topics = {'assert': 'The "assert" statement\n'
' invoking the superclasss "__new__()" method using\n'
' "super().__new__(cls[, ...])" with appropriate arguments '
'and then\n'
' modifying the newly-created instance as necessary before '
' modifying the newly created instance as necessary before '
'returning\n'
' it.\n'
'\n'
@ -9474,7 +9499,7 @@ topics = {'assert': 'The "assert" statement\n'
'is\n'
' intended to provide protection against a '
'denial-of-service caused\n'
' by carefully-chosen inputs that exploit the worst case\n'
' by carefully chosen inputs that exploit the worst case\n'
' performance of a dict insertion, O(n^2) complexity. '
'See\n'
' http://www.ocert.org/advisories/ocert-2011-003.html '
@ -12191,12 +12216,15 @@ topics = {'assert': 'The "assert" statement\n'
'single quotes ("\'") or double quotes ("""). They can also be '
'enclosed\n'
'in matching groups of three single or double quotes (these are\n'
'generally referred to as *triple-quoted strings*). The '
'backslash\n'
'("\\") character is used to escape characters that otherwise have '
'a\n'
'special meaning, such as newline, backslash itself, or the quote\n'
'generally referred to as *triple-quoted strings*). The backslash '
'("\\")\n'
'character is used to give special meaning to otherwise ordinary\n'
'characters like "n", which means newline when escaped ("\\n"). '
'It can\n'
'also be used to escape characters that otherwise have a special\n'
'meaning, such as newline, backslash itself, or the quote '
'character.\n'
'See escape sequences below for examples.\n'
'\n'
'Bytes literals are always prefixed with "\'b\'" or "\'B\'"; they '
'produce\n'
@ -12253,8 +12281,8 @@ topics = {'assert': 'The "assert" statement\n'
'| Escape Sequence | Meaning | Notes '
'|\n'
'|===================|===================================|=========|\n'
'| "\\newline" | Backslash and newline ignored '
'| |\n'
'| "\\"<newline> | Backslash and newline ignored | '
'(1) |\n'
'+-------------------+-----------------------------------+---------+\n'
'| "\\\\" | Backslash ("\\") '
'| |\n'
@ -12287,10 +12315,10 @@ topics = {'assert': 'The "assert" statement\n'
'| |\n'
'+-------------------+-----------------------------------+---------+\n'
'| "\\ooo" | Character with octal value *ooo* | '
'(1,3) |\n'
'(2,4) |\n'
'+-------------------+-----------------------------------+---------+\n'
'| "\\xhh" | Character with hex value *hh* | '
'(2,3) |\n'
'(3,4) |\n'
'+-------------------+-----------------------------------+---------+\n'
'\n'
'Escape sequences only recognized in string literals are:\n'
@ -12300,24 +12328,36 @@ topics = {'assert': 'The "assert" statement\n'
'|\n'
'|===================|===================================|=========|\n'
'| "\\N{name}" | Character named *name* in the | '
'(4) |\n'
'(5) |\n'
'| | Unicode database | '
'|\n'
'+-------------------+-----------------------------------+---------+\n'
'| "\\uxxxx" | Character with 16-bit hex value | '
'(5) |\n'
'(6) |\n'
'| | *xxxx* | '
'|\n'
'+-------------------+-----------------------------------+---------+\n'
'| "\\Uxxxxxxxx" | Character with 32-bit hex value | '
'(6) |\n'
'(7) |\n'
'| | *xxxxxxxx* | '
'|\n'
'+-------------------+-----------------------------------+---------+\n'
'\n'
'Notes:\n'
'\n'
'1. As in Standard C, up to three octal digits are accepted.\n'
'1. A backslash can be added at the end of a line to ignore the\n'
' newline:\n'
'\n'
" >>> 'This string will not include \\\n"
" ... backslashes or newline characters.'\n"
" 'This string will not include backslashes or newline "
"characters.'\n"
'\n'
' The same result can be achieved using triple-quoted strings, '
'or\n'
' parentheses and string literal concatenation.\n'
'\n'
'2. As in Standard C, up to three octal digits are accepted.\n'
'\n'
' Changed in version 3.11: Octal escapes with value larger than\n'
' "0o377" produce a "DeprecationWarning". In a future Python '
@ -12325,20 +12365,20 @@ topics = {'assert': 'The "assert" statement\n'
' they will be a "SyntaxWarning" and eventually a '
'"SyntaxError".\n'
'\n'
'2. Unlike in Standard C, exactly two hex digits are required.\n'
'3. Unlike in Standard C, exactly two hex digits are required.\n'
'\n'
'3. In a bytes literal, hexadecimal and octal escapes denote the '
'4. In a bytes literal, hexadecimal and octal escapes denote the '
'byte\n'
' with the given value. In a string literal, these escapes '
'denote a\n'
' Unicode character with the given value.\n'
'\n'
'4. Changed in version 3.3: Support for name aliases [1] has been\n'
'5. Changed in version 3.3: Support for name aliases [1] has been\n'
' added.\n'
'\n'
'5. Exactly four hex digits are required.\n'
'6. Exactly four hex digits are required.\n'
'\n'
'6. Any Unicode character can be encoded this way. Exactly eight '
'7. Any Unicode character can be encoded this way. Exactly eight '
'hex\n'
' digits are required.\n'
'\n'
@ -12509,31 +12549,39 @@ topics = {'assert': 'The "assert" statement\n'
' try3_stmt ::= "try" ":" suite\n'
' "finally" ":" suite\n'
'\n'
'Additional information on exceptions can be found in section\n'
'Exceptions, and information on using the "raise" statement to '
'generate\n'
'exceptions may be found in section The raise statement.\n'
'\n'
'\n'
'"except" clause\n'
'===============\n'
'\n'
'The "except" clause(s) specify one or more exception handlers. When '
'no\n'
'exception occurs in the "try" clause, no exception handler is\n'
'executed. When an exception occurs in the "try" suite, a search for '
'an\n'
'exception handler is started. This search inspects the except '
'clauses\n'
'in turn until one is found that matches the exception. An '
'expression-\n'
'less except clause, if present, must be last; it matches any\n'
'exception. For an except clause with an expression, that expression\n'
'is evaluated, and the clause matches the exception if the resulting\n'
'object is “compatible” with the exception. An object is compatible\n'
'with an exception if the object is the class or a *non-virtual base\n'
'class* of the exception object, or a tuple containing an item that '
'is\n'
'the class or a non-virtual base class of the exception object.\n'
'exception handler is started. This search inspects the "except"\n'
'clauses in turn until one is found that matches the exception. An\n'
'expression-less "except" clause, if present, must be last; it '
'matches\n'
'any exception. For an "except" clause with an expression, that\n'
'expression is evaluated, and the clause matches the exception if the\n'
'resulting object is “compatible” with the exception. An object is\n'
'compatible with an exception if the object is the class or a *non-\n'
'virtual base class* of the exception object, or a tuple containing '
'an\n'
'item that is the class or a non-virtual base class of the exception\n'
'object.\n'
'\n'
'If no except clause matches the exception, the search for an '
'exception\n'
'handler continues in the surrounding code and on the invocation '
'stack.\n'
'[1]\n'
'If no "except" clause matches the exception, the search for an\n'
'exception handler continues in the surrounding code and on the\n'
'invocation stack. [1]\n'
'\n'
'If the evaluation of an expression in the header of an except clause\n'
'If the evaluation of an expression in the header of an "except" '
'clause\n'
'raises an exception, the original search for a handler is canceled '
'and\n'
'a search starts for the new exception in the surrounding code and on\n'
@ -12541,21 +12589,20 @@ topics = {'assert': 'The "assert" statement\n'
'raised\n'
'the exception).\n'
'\n'
'When a matching except clause is found, the exception is assigned to\n'
'the target specified after the "as" keyword in that except clause, '
'if\n'
'present, and the except clauses suite is executed. All except\n'
'clauses must have an executable block. When the end of this block '
'is\n'
'reached, execution continues normally after the entire try '
'statement.\n'
'(This means that if two nested handlers exist for the same '
'exception,\n'
'and the exception occurs in the try clause of the inner handler, the\n'
'outer handler will not handle the exception.)\n'
'When a matching "except" clause is found, the exception is assigned '
'to\n'
'the target specified after the "as" keyword in that "except" clause,\n'
'if present, and the "except" clauses suite is executed. All '
'"except"\n'
'clauses must have an executable block. When the end of this block is\n'
'reached, execution continues normally after the entire "try"\n'
'statement. (This means that if two nested handlers exist for the '
'same\n'
'exception, and the exception occurs in the "try" clause of the inner\n'
'handler, the outer handler will not handle the exception.)\n'
'\n'
'When an exception has been assigned using "as target", it is cleared\n'
'at the end of the except clause. This is as if\n'
'at the end of the "except" clause. This is as if\n'
'\n'
' except E as N:\n'
' foo\n'
@ -12569,12 +12616,13 @@ topics = {'assert': 'The "assert" statement\n'
' del N\n'
'\n'
'This means the exception must be assigned to a different name to be\n'
'able to refer to it after the except clause. Exceptions are cleared\n'
'able to refer to it after the "except" clause. Exceptions are '
'cleared\n'
'because with the traceback attached to them, they form a reference\n'
'cycle with the stack frame, keeping all locals in that frame alive\n'
'until the next garbage collection occurs.\n'
'\n'
'Before an except clauses suite is executed, details about the\n'
'Before an "except" clauses suite is executed, details about the\n'
'exception are stored in the "sys" module and can be accessed via\n'
'"sys.exc_info()". "sys.exc_info()" returns a 3-tuple consisting of '
'the\n'
@ -12606,16 +12654,21 @@ topics = {'assert': 'The "assert" statement\n'
' >>> print(sys.exc_info())\n'
' (None, None, None)\n'
'\n'
'\n'
'"except*" clause\n'
'================\n'
'\n'
'The "except*" clause(s) are used for handling "ExceptionGroup"s. The\n'
'exception type for matching is interpreted as in the case of '
'"except",\n'
'but in the case of exception groups we can have partial matches when\n'
'the type matches some of the exceptions in the group. This means '
'that\n'
'multiple except* clauses can execute, each handling part of the\n'
'exception group. Each clause executes once and handles an exception\n'
'group of all matching exceptions. Each exception in the group is\n'
'handled by at most one except* clause, the first that matches it.\n'
'multiple "except*" clauses can execute, each handling part of the\n'
'exception group. Each clause executes at most once and handles an\n'
'exception group of all matching exceptions. Each exception in the\n'
'group is handled by at most one "except*" clause, the first that\n'
'matches it.\n'
'\n'
' >>> try:\n'
' ... raise ExceptionGroup("eg",\n'
@ -12635,22 +12688,36 @@ topics = {'assert': 'The "assert" statement\n'
' +-+---------------- 1 ----------------\n'
' | ValueError: 1\n'
' +------------------------------------\n'
' >>>\n'
'\n'
' Any remaining exceptions that were not handled by any except* '
'Any remaining exceptions that were not handled by any "except*" '
'clause\n'
' are re-raised at the end, combined into an exception group along '
'are re-raised at the end, combined into an exception group along '
'with\n'
' all exceptions that were raised from within except* clauses.\n'
'all exceptions that were raised from within "except*" clauses.\n'
'\n'
' An except* clause must have a matching type, and this type cannot '
'be a\n'
' subclass of :exc:`BaseExceptionGroup`. It is not possible to mix '
'except\n'
' and except* in the same :keyword:`try`. :keyword:`break`,\n'
' :keyword:`continue` and :keyword:`return` cannot appear in an '
'except*\n'
' clause.\n'
'If the raised exception is not an exception group and its type '
'matches\n'
'one of the "except*" clauses, it is caught and wrapped by an '
'exception\n'
'group with an empty message string.\n'
'\n'
' >>> try:\n'
' ... raise BlockingIOError\n'
' ... except* BlockingIOError as e:\n'
' ... print(repr(e))\n'
' ...\n'
" ExceptionGroup('', (BlockingIOError()))\n"
'\n'
'An "except*" clause must have a matching type, and this type cannot '
'be\n'
'a subclass of "BaseExceptionGroup". It is not possible to mix '
'"except"\n'
'and "except*" in the same "try". "break", "continue" and "return"\n'
'cannot appear in an "except*" clause.\n'
'\n'
'\n'
'"else" clause\n'
'=============\n'
'\n'
'The optional "else" clause is executed if the control flow leaves '
'the\n'
@ -12659,6 +12726,10 @@ topics = {'assert': 'The "assert" statement\n'
'"break" statement was executed. Exceptions in the "else" clause are\n'
'not handled by the preceding "except" clauses.\n'
'\n'
'\n'
'"finally" clause\n'
'================\n'
'\n'
'If "finally" is present, it specifies a cleanup handler. The '
'"try"\n'
'clause is executed, including any "except" and "else" clauses. If '
@ -12706,11 +12777,6 @@ topics = {'assert': 'The "assert" statement\n'
' >>> foo()\n'
" 'finally'\n"
'\n'
'Additional information on exceptions can be found in section\n'
'Exceptions, and information on using the "raise" statement to '
'generate\n'
'exceptions may be found in section The raise statement.\n'
'\n'
'Changed in version 3.8: Prior to Python 3.8, a "continue" statement\n'
'was illegal in the "finally" clause due to a problem with the\n'
'implementation.\n',
@ -12910,7 +12976,7 @@ topics = {'assert': 'The "assert" statement\n'
' points. All the code points in the range "U+0000 - '
'U+10FFFF"\n'
' can be represented in a string. Python doesnt have a '
'*char*\n'
'char\n'
' type; instead, every code point in the string is '
'represented\n'
' as a string object with length "1". The built-in '
@ -14336,7 +14402,11 @@ topics = {'assert': 'The "assert" statement\n'
'abstract\n'
'base class "collections.abc.Set" are available (for example, '
'"==",\n'
'"<", or "^").\n'
'"<", or "^"). While using set operators, set-like views '
'accept any\n'
'iterable as the other operand, unlike sets which only accept '
'sets as\n'
'the input.\n'
'\n'
'An example of dictionary view usage:\n'
'\n'
@ -14370,6 +14440,8 @@ topics = {'assert': 'The "assert" statement\n'
" {'bacon'}\n"
" >>> keys ^ {'sausage', 'juice'}\n"
" {'juice', 'sausage', 'bacon', 'spam'}\n"
" >>> keys | ['juice', 'juice', 'juice']\n"
" {'juice', 'sausage', 'bacon', 'spam', 'eggs'}\n"
'\n'
' >>> # get back a read-only proxy for the original '
'dictionary\n'

6194
Misc/NEWS.d/3.12.0a1.rst Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
Drop invalid compiler switch ``-fPIC`` for HP aCC on HP-UX. Patch by Michael Osipov.

View File

@ -1 +0,0 @@
Disable pymalloc and increase stack size on ``wasm32-wasi``.

View File

@ -1,4 +0,0 @@
Python now always use the ``%zu`` and ``%zd`` printf formats to format a
``size_t`` or ``Py_ssize_t`` number. Building Python 3.12 requires a C11
compiler, so these printf formats are now always supported. Patch by Victor
Stinner.

View File

@ -1,3 +0,0 @@
``va_start()`` with two parameters, like ``va_start(args, format),``
is now required to build Python. ``va_start()`` is no longer called with a single parameter.
Patch by Kumar Aditya.

View File

@ -1 +0,0 @@
Fix ``Modules/Setup.stdlib.in`` rule for ``_sqlite3`` extension.

View File

@ -1 +0,0 @@
``configure`` now detects and reports :pep:`11` support tiers.

View File

@ -1,2 +0,0 @@
Address race condition in ``Makefile`` when installing a PGO build. All
``test`` and ``install`` targets now depend on ``all`` target.

View File

@ -1,3 +0,0 @@
Updated pegen regeneration script on Windows to find and use Python 3.9 or
higher. Prior to this, pegen regeneration already required 3.9 or higher,
but the script may have used lower versions of Python.

View File

@ -1,2 +0,0 @@
The ``2to3``, ``idle``, and ``pydoc`` scripts are now generated and installed by
``Makefile`` instead of ``setup.py``.

View File

@ -1,2 +0,0 @@
C extension modules are now built by ``configure`` and ``make``
instead of ``distutils`` and ``setup.py``.

View File

@ -1,3 +0,0 @@
``makesetup`` now works around an issue with sed on macOS and uses correct
CFLAGS for object files that end up in a shared extension. Module CFLAGS
are used before PY_STDMODULE_CFLAGS to avoid clashes with system headers.

View File

@ -1 +0,0 @@
``_dbm`` module dependencies are now detected by configure.

View File

@ -1 +0,0 @@
Fix building ``_ctypes`` extension without ``pkg-config``.

View File

@ -1,5 +0,0 @@
Dependencies of :mod:`readline` and :mod:`curses` module are now detected in
``configure`` script with ``pkg-config``. Only ``ncurses`` / ``ncursesw``
are detected automatically. The old ``curses`` library is not configured
automatically. Workaround for missing ``termcap`` or ``tinfo`` library
has been removed.

View File

@ -1 +0,0 @@
Build and test with OpenSSL 1.1.1q

View File

@ -1,2 +0,0 @@
``deepfreeze.py`` now supports code object with frozensets that contain
incompatible, unsortable types.

View File

@ -1,2 +0,0 @@
``configure`` now uses custom flags like ``ZLIB_CFLAGS`` and ``ZLIB_LIBS``
when searching for headers and libraries.

View File

@ -1 +0,0 @@
Fix the possible performance regression of :c:func:`PyObject_Free` compiled with MSVC version 1932.

View File

@ -1,2 +0,0 @@
Fixed ``_decimal`` module build issue on GCC when compiling with LTO and
pydebug. Debug builds no longer force inlining of functions.

View File

@ -1,2 +0,0 @@
Platforms ``wasm32-unknown-emscripten`` and ``wasm32-unknown-wasi`` have
been promoted to :pep:`11` tier 3 platform support.

View File

@ -1 +0,0 @@
Python now skips missing :mod:`socket` functions and methods on WASI. WASI can only create sockets from existing fd / accept and has no netdb.

View File

@ -1,2 +0,0 @@
Python now detects missing ``dup`` function in WASI and works around some
missing :mod:`errno`, :mod:`select`, and :mod:`socket` constants.

View File

@ -1,2 +0,0 @@
wasm32-wasi builds no longer depend on WASIX's pthread stubs. Python now has
its own stubbed pthread API.

View File

@ -1,2 +0,0 @@
Fix a regression in ``configure`` script that caused some header checks to
ignore custom ``CPPFLAGS``. The regression was introduced in :gh:`94802`.

View File

@ -1,3 +0,0 @@
Remove the ``configure --with-cxx-main`` build option: it didn't work for
many years. Remove the ``MAINCC`` variable from ``configure`` and
``Makefile``. Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
Use the BOLT post-link optimizer to improve performance, particularly on
medium-to-large applications.

View File

@ -1,2 +0,0 @@
Add a new ``--with-dsymutil`` configure option to to link debug information
in macOS. Patch by Pablo Galindo.

View File

@ -1,3 +0,0 @@
``wasm32-emscripten`` platform no longer builds :mod:`resource` module,
:func:`~os.getresuid`, :func:`~os.getresgid`, and their setters. The APIs
are stubs and not functional.

View File

@ -1,3 +0,0 @@
Shared module targets now depend on new ``MODULE_DEPS`` variable, which
includes ``EXPORTSYMS``. This fixes a build order issue on unsupported AIX
platform.

View File

@ -1,2 +0,0 @@
Ensure that Windows releases built with ``Tools\msi\buildrelease.bat`` are
upgradable to and from official Python releases.

View File

@ -1,2 +0,0 @@
CPython now uses the ThinLTO option as the default policy if the Clang
compiler accepts the flag. Patch by Dong-hee Na.

View File

@ -1,2 +0,0 @@
``wasm32-emscripten`` builds for browsers now include
:mod:`concurrent.futures` for :mod:`asyncio` and :mod:`unittest.mock`.

View File

@ -1,2 +0,0 @@
Fix the build process of clang compiler for :program:`_bootstrap_python` if
LTO optimization is applied. Patch by Matthias Görgens and Dong-hee Na.

View File

@ -1,3 +0,0 @@
The :c:func:`PyType_FromSpec` API will now find and use a metaclass
based on the provided bases.
An error will be raised if there is a metaclass conflict.

View File

@ -1 +0,0 @@
Fixed an assert that prevented ``PyRun_InteractiveOne`` from providing tracebacks when parsing from the provided FD.

View File

@ -1,5 +0,0 @@
Add new function :c:func:`PyFunction_SetVectorcall` to the C API
which sets the vectorcall field of a given :c:type:`PyFunctionObject`.
Warning: extensions using this API must preserve the behavior
of the unaltered function!

View File

@ -1,2 +0,0 @@
Remove the ``PyUnicode_InternImmortal()`` function and the
``SSTATE_INTERNED_IMMORTAL`` macro. Patch by Victor Stinner.

View File

@ -1 +0,0 @@
Remove legacy Unicode APIs based on ``Py_UNICODE*``.

View File

@ -1,3 +0,0 @@
Remove the ``token.h`` header file. There was never any public tokenizer C
API. The ``token.h`` header file was only designed to be used by Python
internals. Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Avoid mixing declarations and code in the C API to fix the compiler warning:
"ISO C90 forbids mixed declarations and code"
[-Werror=declaration-after-statement]. Patch by Victor Stinner.

View File

@ -1,2 +0,0 @@
Ensures changes to :c:member:`PyConfig.module_search_paths` are ignored
unless :c:member:`PyConfig.module_search_paths_set` is set

View File

@ -1,3 +0,0 @@
Deprecate global configuration variable like
:c:var:`Py_IgnoreEnvironmentFlag`: the :c:func:`Py_InitializeFromConfig` API
should be instead. Patch by Victor Stinner.

View File

@ -1,4 +0,0 @@
Deprecate global configuration variables, like
:c:var:`Py_IgnoreEnvironmentFlag`, in the documentation: the
:c:func:`Py_InitializeFromConfig` API should be instead. Patch by Victor
Stinner.

View File

@ -1,2 +0,0 @@
Fix C++ compiler warnings when casting function arguments to ``PyObject*``.
Patch by Serge Guelton.

View File

@ -1,3 +0,0 @@
Slot IDs in PyType_Spec may not be repeated. The documentation was updated
to mention this. For some cases of repeated slots, PyType_FromSpec and
related functions will now raise an exception.

View File

@ -1,3 +0,0 @@
Add C++ overloads for _Py_CAST_impl() to handle 0/NULL. This will allow C++
extensions that pass 0 or NULL to macros using _Py_CAST() to continue to
compile.

View File

@ -1,7 +0,0 @@
Add two new public functions to the public C-API,
:c:func:`PyEval_SetProfileAllThreads` and :c:func:`PyEval_SetTraceAllThreads`,
that allow to set tracing and profiling functions in all running threads in
addition to the calling one. Also, two analogous functions to the
:mod:`threading` module (:func:`threading.setprofile_all_threads` and
:func:`threading.settrace_all_threads`) that allow to do the same from Python.
Patch by Pablo Galindo

View File

@ -1,4 +0,0 @@
:c:func:`PyType_FromMetaclass` (and other ``PyType_From*`` functions) now
check that offsets and the base class's
:c:member:`~PyTypeObject.tp_basicsize` fit in the new class's
``tp_basicsize``.

View File

@ -1,3 +0,0 @@
Avoid defining the ``static_assert`` when compiling with C++ 11, where this
is a keyword and redefining it can lead to undefined behavior. Patch by
Pablo Galindo

View File

@ -1,2 +0,0 @@
Fix the compatibility of the Python C API with C++ older than C++11. Patch by
Victor Stinner.

View File

@ -1,14 +0,0 @@
The following frame functions and type are now directly available with
``#include <Python.h>``, it's no longer needed to add ``#include
<frameobject.h>``:
* :c:func:`PyFrame_Check`
* :c:func:`PyFrame_GetBack`
* :c:func:`PyFrame_GetBuiltins`
* :c:func:`PyFrame_GetGenerator`
* :c:func:`PyFrame_GetGlobals`
* :c:func:`PyFrame_GetLasti`
* :c:func:`PyFrame_GetLocals`
* :c:type:`PyFrame_Type`
Patch by Victor Stinner.

View File

@ -1,3 +0,0 @@
Python again uses C-style casts for most casting operations when compiled
with C++. This may trigger compiler warnings, if they are enabled with e.g.
``-Wold-style-cast`` or ``-Wzero-as-null-pointer-constant`` options for ``g++``.

View File

@ -1,2 +0,0 @@
Fix ``SystemError`` raised when :c:func:`PyArg_ParseTupleAndKeywords` is
used with ``#`` in ``(...)`` but without ``PY_SSIZE_T_CLEAN`` defined.

View File

@ -1,3 +0,0 @@
Added :c:func:`PyCode_GetVarnames`, :c:func:`PyCode_GetCellvars` and
:c:func:`PyCode_GetFreevars` for accessing ``co_varnames``, ``co_cellvars``
and ``co_freevars`` respectively via the C API.

View File

@ -1,3 +0,0 @@
Adds unstable C-API functions ``_PyObject_VisitManagedDict`` and
``_PyObject_ClearManagedDict`` to allow C extensions to allow the VM to
manage their object's dictionaries.

View File

@ -1,2 +0,0 @@
Creating :c:data:`immutable types <Py_TPFLAGS_IMMUTABLETYPE>` with mutable
bases is deprecated and is planned to be disabled in Python 3.14.

View File

@ -1,6 +0,0 @@
The :const:`Py_TPFLAGS_HAVE_VECTORCALL` flag is now removed from a class
when the class's :py:meth:`~object.__call__` method is reassigned. This
makes vectorcall safe to use with mutable types (i.e. heap types without the
:const:`immutable <Py_TPFLAGS_IMMUTABLETYPE>` flag). Mutable types that do
not override :c:member:`~PyTypeObject.tp_call` now inherit the
:const:`Py_TPFLAGS_HAVE_VECTORCALL` flag.

View File

@ -1,3 +0,0 @@
Fix sign placement when specifying width or precision in
:c:func:`PyUnicode_FromFormat` and :c:func:`PyUnicode_FromFormatV`.
Patch by Philip Georgi.

View File

@ -1,3 +0,0 @@
API for implementing vectorcall (:c:data:`Py_TPFLAGS_HAVE_VECTORCALL`,
:c:func:`PyVectorcall_NARGS` and :c:func:`PyVectorcall_Call`) was added to
the limited API and stable ABI.

View File

@ -1,2 +0,0 @@
Support C extensions using managed dictionaries by setting the
``Py_TPFLAGS_MANAGED_DICT`` flag.

View File

@ -1,2 +0,0 @@
Restore the 3.10 behavior for multiple inheritance of C extension classes
that store their dictionary at the end of the struct.

View File

@ -1,4 +0,0 @@
An unrecognized format character in :c:func:`PyUnicode_FromFormat` and
:c:func:`PyUnicode_FromFormatV` now sets a :exc:`SystemError`.
In previous versions it caused all the rest of the format string to be
copied as-is to the result string, and any extra arguments discarded.

View File

@ -1,4 +0,0 @@
Extensions classes that set ``tp_dictoffset`` and ``tp_weaklistoffset``
lose the support for multiple inheritance, but are now safe. Extension
classes should use :const:`Py_TPFLAGS_MANAGED_DICT` and
:const:`Py_TPFLAGS_MANAGED_WEAKREF` instead.

View File

@ -1,2 +0,0 @@
Configuration for the :ref:`integer string conversion length limitation
<int_max_str_digits>` now lives in the PyConfig C API struct.

View File

@ -1 +0,0 @@
Lazily create and cache ``co_`` attributes for better performance for code getters.

View File

@ -1,2 +0,0 @@
Add :c:func:`PyType_Watch` and related APIs to allow callbacks on
:c:func:`PyType_Modified`.

View File

@ -1,3 +0,0 @@
The :c:func:`PyUnicode_FSDecoder` function no longer accepts bytes-like
paths, like :class:`bytearray` and :class:`memoryview` types: only the exact
:class:`bytes` type is accepted for bytes strings. Patch by Victor Stinner.

View File

@ -1 +0,0 @@
Document some places where an assignment expression needs parentheses.

View File

@ -1,3 +0,0 @@
Make ``--help`` output shorter by moving some info to the new
``--help-env`` and ``--help-xoptions`` command-line options.
Also add ``--help-all`` option to print complete usage.

View File

@ -1 +0,0 @@
Improve performance of repetition of :class:`list` and :class:`tuple` by using ``memcpy`` to copy data and performing the reference increments in one step.

View File

@ -1 +0,0 @@
Updates the error message for abstract class.

View File

@ -1 +0,0 @@
Removed duplicate '{0, 0, 0, 0, 0, 0}' entry in 'Objects/unicodetype_db.h'.

View File

@ -1 +0,0 @@
Specialized the :opcode:`FOR_ITER` opcode using the PEP 659 machinery

View File

@ -1 +0,0 @@
Fix hang when trying to iterate over a ``typing.Union``.

View File

@ -1,2 +0,0 @@
The deprecated debug build only ``PYTHONTHREADDEBUG`` environment variable
no longer does anything.

View File

@ -1 +0,0 @@
Make the compiler duplicate an exit block only if none of its instructions have a lineno (previously only the first instruction in the block was checked, leading to unnecessarily duplicated blocks).

View File

@ -1 +0,0 @@
:meth:`_warnings.warn_explicit` is ported to Argument Clinic.

View File

@ -1,2 +0,0 @@
Remove spurious "LINE" event when starting a generator or coroutine, visible
tracing functions implemented in C.

View File

@ -1 +0,0 @@
Add support for connecting and binding to Hyper-V sockets on Windows Hyper-V hosts and guests.

View File

@ -1 +0,0 @@
Specialize ``LOAD_METHOD`` for objects with lazy dictionaries. Patch by Ken Jin.

View File

@ -1 +0,0 @@
Fix memory leak in ``memoryview`` iterator as it was not finalized at exit. Patch by Kumar Aditya.

View File

@ -1 +0,0 @@
Decrease default recursion limit on WASI to address limited call stack size.

View File

@ -1 +0,0 @@
Improve error message for some suites with syntax error before ':'

View File

@ -1 +0,0 @@
Always round the allocated size for lists up to the nearest even number.

View File

@ -1,2 +0,0 @@
The PRECALL instruction has been removed. It offered only a small advantage
for specialization and is not needed in the vast majority of cases.

View File

@ -1 +0,0 @@
Fixed a crash in ``_pickle.c`` from mutating collections during ``__reduce__`` or ``persistent_id``.

View File

@ -1 +0,0 @@
Fix memory leak in code object's lines and positions iterators as they were not finalized at exit. Patch by Kumar Aditya.

View File

@ -1,2 +0,0 @@
The operand of the ``YIELD_VALUE`` instruction is set to the stack depth.
This is done to help frame handling on ``yield`` and may assist debuggers.

View File

@ -1,2 +0,0 @@
Fix the :attr:`__text_signature__` for :meth:`__get__` methods implemented
in C. Patch by Jelle Zijlstra.

View File

@ -1,8 +0,0 @@
Added the new function :c:func:`PyType_FromMetaclass`, which generalizes the
existing :c:func:`PyType_FromModuleAndSpec` using an additional metaclass
argument. This is useful for language binding tools, where it can be used to
intercept type-related operations like subclassing or static attribute access
by specifying a metaclass with custom slots.
Importantly, :c:func:`PyType_FromMetaclass` is available in the Limited API,
which provides a path towards migrating more binding tools onto the Stable ABI.

View File

@ -1,5 +0,0 @@
Fix contextvars HAMT implementation to handle iteration over deep trees.
The bug was discovered and fixed by Eli Libman. See
`MagicStack/immutables#84 <https://github.com/MagicStack/immutables/issues/84>`_
for more details.

View File

@ -1 +0,0 @@
Backward jumps after ``async for`` loops are no longer given dubious line numbers.

View File

@ -1 +0,0 @@
Avoid ``NULL`` checks for uninitialized local variables by determining at compile time which variables must be initialized.

View File

@ -1 +0,0 @@
Wraps unused parameters in ``Objects/obmalloc.c`` with ``Py_UNUSED``.

View File

@ -1,2 +0,0 @@
Fix ``__lltrace__`` debug feature if the stdout encoding is not UTF-8. Patch
by Victor Stinner.

View File

@ -1,2 +0,0 @@
The ``--experimental-isolated-subinterpreters`` configure option and
``EXPERIMENTAL_ISOLATED_SUBINTERPRETERS`` macro have been removed.

View File

@ -1 +0,0 @@
When a bytecode instruction jumps to an unconditional jump instruction, the first instruction can often be optimized to target the unconditional jump's target directly. For tracing reasons, this would previously only occur if both instructions have the same line number. This also now occurs if the unconditional jump is artificial, i.e., if it has no associated line number.

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