Python 3.12.0b2

This commit is contained in:
Thomas Wouters 2023-06-06 16:12:06 +02:00
parent 2d9ead219e
commit e6c0efa25a
54 changed files with 1207 additions and 234 deletions

View file

@ -20,10 +20,10 @@
#define PY_MINOR_VERSION 12
#define PY_MICRO_VERSION 0
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_BETA
#define PY_RELEASE_SERIAL 1
#define PY_RELEASE_SERIAL 2
/* Version as a string */
#define PY_VERSION "3.12.0b1+"
#define PY_VERSION "3.12.0b2"
/*--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 Mon May 22 14:02:15 2023
# Autogenerated by Sphinx on Tue Jun 6 16:12:51 2023
topics = {'assert': 'The "assert" statement\n'
'**********************\n'
'\n'
@ -538,77 +538,7 @@ topics = {'assert': 'The "assert" statement\n'
' **PEP 492** - Coroutines with async and await syntax\n'
' The proposal that made coroutines a proper standalone concept '
'in\n'
' Python, and added supporting syntax.\n'
'\n'
'-[ Footnotes ]-\n'
'\n'
'[1] The exception is propagated to the invocation stack unless '
'there\n'
' is a "finally" clause which happens to raise another '
'exception.\n'
' That new exception causes the old one to be lost.\n'
'\n'
'[2] In pattern matching, a sequence is defined as one of the\n'
' following:\n'
'\n'
' * a class that inherits from "collections.abc.Sequence"\n'
'\n'
' * a Python class that has been registered as\n'
' "collections.abc.Sequence"\n'
'\n'
' * a builtin class that has its (CPython) '
'"Py_TPFLAGS_SEQUENCE"\n'
' bit set\n'
'\n'
' * a class that inherits from any of the above\n'
'\n'
' The following standard library classes are sequences:\n'
'\n'
' * "array.array"\n'
'\n'
' * "collections.deque"\n'
'\n'
' * "list"\n'
'\n'
' * "memoryview"\n'
'\n'
' * "range"\n'
'\n'
' * "tuple"\n'
'\n'
' Note:\n'
'\n'
' Subject values of type "str", "bytes", and "bytearray" do '
'not\n'
' match sequence patterns.\n'
'\n'
'[3] In pattern matching, a mapping is defined as one of the '
'following:\n'
'\n'
' * a class that inherits from "collections.abc.Mapping"\n'
'\n'
' * a Python class that has been registered as\n'
' "collections.abc.Mapping"\n'
'\n'
' * a builtin class that has its (CPython) '
'"Py_TPFLAGS_MAPPING"\n'
' bit set\n'
'\n'
' * a class that inherits from any of the above\n'
'\n'
' The standard library classes "dict" and '
'"types.MappingProxyType"\n'
' are mappings.\n'
'\n'
'[4] A string literal appearing as the first statement in the '
'function\n'
' body is transformed into the functions "__doc__" attribute '
'and\n'
' therefore the functions *docstring*.\n'
'\n'
'[5] A string literal appearing as the first statement in the class\n'
' body is transformed into the namespaces "__doc__" item and\n'
' therefore the classs *docstring*.\n',
' Python, and added supporting syntax.\n',
'atom-identifiers': 'Identifiers (Names)\n'
'*******************\n'
'\n'
@ -1748,8 +1678,8 @@ topics = {'assert': 'The "assert" statement\n'
'standard\n'
'type hierarchy):\n'
'\n'
' classdef ::= [decorators] "class" classname [inheritance] ":" '
'suite\n'
' classdef ::= [decorators] "class" classname [type_params] '
'[inheritance] ":" suite\n'
' inheritance ::= "(" [argument_list] ")"\n'
' classname ::= identifier\n'
'\n'
@ -1813,6 +1743,19 @@ topics = {'assert': 'The "assert" statement\n'
'"assignment_expression". Previously, the grammar was much more\n'
'restrictive; see **PEP 614** for details.\n'
'\n'
'A list of type parameters may be given in square brackets '
'immediately\n'
'after the classs name. This indicates to static type checkers '
'that\n'
'the class is generic. At runtime, the type parameters can be '
'retrieved\n'
'from the classs "__type_params__" attribute. See Generic classes '
'for\n'
'more.\n'
'\n'
'Changed in version 3.12: Type parameter lists are new in Python '
'3.12.\n'
'\n'
'**Programmers note:** Variables defined in the class definition '
'are\n'
'class attributes; they are shared by instances. Instance '
@ -3554,8 +3497,8 @@ topics = {'assert': 'The "assert" statement\n'
'(see\n'
'section The standard type hierarchy):\n'
'\n'
' funcdef ::= [decorators] "def" funcname "(" '
'[parameter_list] ")"\n'
' funcdef ::= [decorators] "def" funcname '
'[type_params] "(" [parameter_list] ")"\n'
' ["->" expression] ":" suite\n'
' decorators ::= decorator+\n'
' decorator ::= "@" assignment_expression '
@ -3617,6 +3560,19 @@ topics = {'assert': 'The "assert" statement\n'
'"assignment_expression". Previously, the grammar was much more\n'
'restrictive; see **PEP 614** for details.\n'
'\n'
'A list of type parameters may be given in square brackets '
'between the\n'
'functions name and the opening parenthesis for its parameter '
'list.\n'
'This indicates to static type checkers that the function is '
'generic.\n'
'At runtime, the type parameters can be retrieved from the '
'functions\n'
'"__type_params__" attribute. See Generic functions for more.\n'
'\n'
'Changed in version 3.12: Type parameter lists are new in Python '
'3.12.\n'
'\n'
'When one or more *parameters* have the form *parameter* "="\n'
'*expression*, the function is said to have “default parameter '
'values.”\n'
@ -3759,8 +3715,8 @@ topics = {'assert': 'The "assert" statement\n'
'standard\n'
'type hierarchy):\n'
'\n'
' classdef ::= [decorators] "class" classname [inheritance] '
'":" suite\n'
' classdef ::= [decorators] "class" classname [type_params] '
'[inheritance] ":" suite\n'
' inheritance ::= "(" [argument_list] ")"\n'
' classname ::= identifier\n'
'\n'
@ -3828,6 +3784,19 @@ topics = {'assert': 'The "assert" statement\n'
'"assignment_expression". Previously, the grammar was much more\n'
'restrictive; see **PEP 614** for details.\n'
'\n'
'A list of type parameters may be given in square brackets '
'immediately\n'
'after the classs name. This indicates to static type checkers '
'that\n'
'the class is generic. At runtime, the type parameters can be '
'retrieved\n'
'from the classs "__type_params__" attribute. See Generic '
'classes for\n'
'more.\n'
'\n'
'Changed in version 3.12: Type parameter lists are new in Python '
'3.12.\n'
'\n'
'**Programmers note:** Variables defined in the class definition '
'are\n'
'class attributes; they are shared by instances. Instance '
@ -3985,6 +3954,272 @@ topics = {'assert': 'The "assert" statement\n'
'concept in\n'
' Python, and added supporting syntax.\n'
'\n'
'\n'
'Type parameter lists\n'
'====================\n'
'\n'
'New in version 3.12.\n'
'\n'
' type_params ::= "[" type_param ("," type_param)* "]"\n'
' type_param ::= typevar | typevartuple | paramspec\n'
' typevar ::= identifier (":" expression)?\n'
' typevartuple ::= "*" identifier\n'
' paramspec ::= "**" identifier\n'
'\n'
'Functions (including coroutines), classes and type aliases may '
'contain\n'
'a type parameter list:\n'
'\n'
' def max[T](args: list[T]) -> T:\n'
' ...\n'
'\n'
' async def amax[T](args: list[T]) -> T:\n'
' ...\n'
'\n'
' class Bag[T]:\n'
' def __iter__(self) -> Iterator[T]:\n'
' ...\n'
'\n'
' def add(self, arg: T) -> None:\n'
' ...\n'
'\n'
' type ListOrSet[T] = list[T] | set[T]\n'
'\n'
'Semantically, this indicates that the function, class, or type '
'alias\n'
'is generic over a type variable. This information is primarily '
'used by\n'
'static type checkers, and at runtime, generic objects behave '
'much like\n'
'their non-generic counterparts.\n'
'\n'
'Type parameters are declared in square brackets ("[]") '
'immediately\n'
'after the name of the function, class, or type alias. The type\n'
'parameters are accessible within the scope of the generic '
'object, but\n'
'not elsewhere. Thus, after a declaration "def func[T](): pass", '
'the\n'
'name "T" is not available in the module scope. Below, the '
'semantics of\n'
'generic objects are described with more precision. The scope of '
'type\n'
'parameters is modeled with a special function (technically, an\n'
'annotation scope) that wraps the creation of the generic '
'object.\n'
'\n'
'Generic functions, classes, and type aliases have a '
'"__type_params__"\n'
'attribute listing their type parameters.\n'
'\n'
'Type parameters come in three kinds:\n'
'\n'
'* "typing.TypeVar", introduced by a plain name (e.g., "T").\n'
' Semantically, this represents a single type to a type '
'checker.\n'
'\n'
'* "typing.TypeVarTuple", introduced by a name prefixed with a '
'single\n'
' asterisk (e.g., "*Ts"). Semantically, this stands for a tuple '
'of any\n'
' number of types.\n'
'\n'
'* "typing.ParamSpec", introduced by a name prefixed with two '
'asterisks\n'
' (e.g., "**P"). Semantically, this stands for the parameters of '
'a\n'
' callable.\n'
'\n'
'"typing.TypeVar" declarations can define *bounds* and '
'*constraints*\n'
'with a colon (":") followed by an expression. A single '
'expression\n'
'after the colon indicates a bound (e.g. "T: int"). Semantically, '
'this\n'
'means that the "typing.TypeVar" can only represent types that '
'are a\n'
'subtype of this bound. A parenthesized tuple of expressions '
'after the\n'
'colon indicates a set of constraints (e.g. "T: (str, bytes)"). '
'Each\n'
'member of the tuple should be a type (again, this is not '
'enforced at\n'
'runtime). Constrained type variables can only take on one of the '
'types\n'
'in the list of constraints.\n'
'\n'
'For "typing.TypeVar"s declared using the type parameter list '
'syntax,\n'
'the bound and constraints are not evaluated when the generic '
'object is\n'
'created, but only when the value is explicitly accessed through '
'the\n'
'attributes "__bound__" and "__constraints__". To accomplish '
'this, the\n'
'bounds or constraints are evaluated in a separate annotation '
'scope.\n'
'\n'
'"typing.TypeVarTuple"s and "typing.ParamSpec"s cannot have '
'bounds or\n'
'constraints.\n'
'\n'
'The following example indicates the full set of allowed type '
'parameter\n'
'declarations:\n'
'\n'
' def overly_generic[\n'
' SimpleTypeVar,\n'
' TypeVarWithBound: int,\n'
' TypeVarWithConstraints: (str, bytes),\n'
' *SimpleTypeVarTuple,\n'
' **SimpleParamSpec,\n'
' ](\n'
' a: SimpleTypeVar,\n'
' b: TypeVarWithBound,\n'
' c: Callable[SimpleParamSpec, TypeVarWithConstraints],\n'
' *d: SimpleTypeVarTuple,\n'
' ): ...\n'
'\n'
'\n'
'Generic functions\n'
'-----------------\n'
'\n'
'Generic functions are declared as follows:\n'
'\n'
' def func[T](arg: T): ...\n'
'\n'
'This syntax is equivalent to:\n'
'\n'
' annotation-def TYPE_PARAMS_OF_func():\n'
' T = typing.TypeVar("T")\n'
' def func(arg: T): ...\n'
' func.__type_params__ = (T,)\n'
' return func\n'
' func = TYPE_PARAMS_OF_func()\n'
'\n'
'Here "annotation-def" indicates an annotation scope, which is '
'not\n'
'actually bound to any name at runtime. (One other liberty is '
'taken in\n'
'the translation: the syntax does not go through attribute access '
'on\n'
'the "typing" module, but creates an instance of '
'"typing.TypeVar"\n'
'directly.)\n'
'\n'
'The annotations of generic functions are evaluated within the\n'
'annotation scope used for declaring the type parameters, but '
'the\n'
'functions defaults and decorators are not.\n'
'\n'
'The following example illustrates the scoping rules for these '
'cases,\n'
'as well as for additional flavors of type parameters:\n'
'\n'
' @decorator\n'
' def func[T: int, *Ts, **P](*args: *Ts, arg: Callable[P, T] = '
'some_default):\n'
' ...\n'
'\n'
'Except for the lazy evaluation of the "TypeVar" bound, this is\n'
'equivalent to:\n'
'\n'
' DEFAULT_OF_arg = some_default\n'
'\n'
' annotation-def TYPE_PARAMS_OF_func():\n'
'\n'
' annotation-def BOUND_OF_T():\n'
' return int\n'
' # In reality, BOUND_OF_T() is evaluated only on demand.\n'
' T = typing.TypeVar("T", bound=BOUND_OF_T())\n'
'\n'
' Ts = typing.TypeVarTuple("Ts")\n'
' P = typing.ParamSpec("P")\n'
'\n'
' def func(*args: *Ts, arg: Callable[P, T] = '
'DEFAULT_OF_arg):\n'
' ...\n'
'\n'
' func.__type_params__ = (T, Ts, P)\n'
' return func\n'
' func = decorator(TYPE_PARAMS_OF_func())\n'
'\n'
'The capitalized names like "DEFAULT_OF_arg" are not actually '
'bound at\n'
'runtime.\n'
'\n'
'\n'
'Generic classes\n'
'---------------\n'
'\n'
'Generic classes are declared as follows:\n'
'\n'
' class Bag[T]: ...\n'
'\n'
'This syntax is equivalent to:\n'
'\n'
' annotation-def TYPE_PARAMS_OF_Bag():\n'
' T = typing.TypeVar("T")\n'
' class Bag(typing.Generic[T]):\n'
' __type_params__ = (T,)\n'
' ...\n'
' return Bag\n'
' Bag = TYPE_PARAMS_OF_Bag()\n'
'\n'
'Here again "annotation-def" (not a real keyword) indicates an\n'
'annotation scope, and the name "TYPE_PARAMS_OF_Bag" is not '
'actually\n'
'bound at runtime.\n'
'\n'
'Generic classes implicitly inherit from "typing.Generic". The '
'base\n'
'classes and keyword arguments of generic classes are evaluated '
'within\n'
'the type scope for the type parameters, and decorators are '
'evaluated\n'
'outside that scope. This is illustrated by this example:\n'
'\n'
' @decorator\n'
' class Bag(Base[T], arg=T): ...\n'
'\n'
'This is equivalent to:\n'
'\n'
' annotation-def TYPE_PARAMS_OF_Bag():\n'
' T = typing.TypeVar("T")\n'
' class Bag(Base[T], typing.Generic[T], arg=T):\n'
' __type_params__ = (T,)\n'
' ...\n'
' return Bag\n'
' Bag = decorator(TYPE_PARAMS_OF_Bag())\n'
'\n'
'\n'
'Generic type aliases\n'
'--------------------\n'
'\n'
'The "type" statement can also be used to create a generic type '
'alias:\n'
'\n'
' type ListOrSet[T] = list[T] | set[T]\n'
'\n'
'Except for the lazy evaluation of the value, this is equivalent '
'to:\n'
'\n'
' annotation-def TYPE_PARAMS_OF_ListOrSet():\n'
' T = typing.TypeVar("T")\n'
'\n'
' annotation-def VALUE_OF_ListOrSet():\n'
' return list[T] | set[T]\n'
' # In reality, the value is lazily evaluated\n'
' return typing.TypeAliasType("ListOrSet", '
'VALUE_OF_ListOrSet(), type_params=(T,))\n'
' ListOrSet = TYPE_PARAMS_OF_ListOrSet()\n'
'\n'
'Here, "annotation-def" (not a real keyword) indicates an '
'annotation\n'
'scope. The capitalized names like "TYPE_PARAMS_OF_ListOrSet" are '
'not\n'
'actually bound at runtime.\n'
'\n'
'-[ Footnotes ]-\n'
'\n'
'[1] The exception is propagated to the invocation stack unless '
@ -5692,6 +5927,10 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'* "import" statements.\n'
'\n'
'* "type" statements.\n'
'\n'
'* type parameter lists.\n'
'\n'
'The "import" statement of the form "from ... import *" binds '
'all names\n'
'defined in the imported module, except those beginning with an\n'
@ -5798,7 +6037,9 @@ topics = {'assert': 'The "assert" statement\n'
'scope.\n'
'"SyntaxError" is raised at compile time if the given name does '
'not\n'
'exist in any enclosing function scope.\n'
'exist in any enclosing function scope. Type parameters cannot '
'be\n'
'rebound with the "nonlocal" statement.\n'
'\n'
'The namespace for a module is automatically created the first '
'time a\n'
@ -5821,17 +6062,162 @@ topics = {'assert': 'The "assert" statement\n'
'the class. The scope of names defined in a class block is '
'limited to\n'
'the class block; it does not extend to the code blocks of '
'methods \n'
'this includes comprehensions and generator expressions since '
'they are\n'
'implemented using a function scope. This means that the '
'following\n'
'will fail:\n'
'methods.\n'
'This includes comprehensions and generator expressions, but it '
'does\n'
'not include annotation scopes, which have access to their '
'enclosing\n'
'class scopes. This means that the following will fail:\n'
'\n'
' class A:\n'
' a = 42\n'
' b = list(a + i for i in range(10))\n'
'\n'
'However, the following will succeed:\n'
'\n'
' class A:\n'
' type Alias = Nested\n'
' class Nested: pass\n'
'\n'
" print(A.Alias.__value__) # <type 'A.Nested'>\n"
'\n'
'\n'
'Annotation scopes\n'
'-----------------\n'
'\n'
'Type parameter lists and "type" statements introduce '
'*annotation\n'
'scopes*, which behave mostly like function scopes, but with '
'some\n'
'exceptions discussed below. *Annotations* currently do not use\n'
'annotation scopes, but they are expected to use annotation '
'scopes in\n'
'Python 3.13 when **PEP 649** is implemented.\n'
'\n'
'Annotation scopes are used in the following contexts:\n'
'\n'
'* Type parameter lists for generic type aliases.\n'
'\n'
'* Type parameter lists for generic functions. A generic '
'functions\n'
' annotations are executed within the annotation scope, but '
'its\n'
' defaults and decorators are not.\n'
'\n'
'* Type parameter lists for generic classes. A generic classs '
'base\n'
' classes and keyword arguments are executed within the '
'annotation\n'
' scope, but its decorators are not.\n'
'\n'
'* The bounds and constraints for type variables (lazily '
'evaluated).\n'
'\n'
'* The value of type aliases (lazily evaluated).\n'
'\n'
'Annotation scopes differ from function scopes in the following '
'ways:\n'
'\n'
'* Annotation scopes have access to their enclosing class '
'namespace. If\n'
' an annotation scope is immediately within a class scope, or '
'within\n'
' another annotation scope that is immediately within a class '
'scope,\n'
' the code in the annotation scope can use names defined in the '
'class\n'
' scope as if it were executed directly within the class body. '
'This\n'
' contrasts with regular functions defined within classes, '
'which\n'
' cannot access names defined in the class scope.\n'
'\n'
'* Expressions in annotation scopes cannot contain "yield", '
'"yield\n'
' from", "await", or ":=" expressions. (These expressions are '
'allowed\n'
' in other scopes contained within the annotation scope.)\n'
'\n'
'* Names defined in annotation scopes cannot be rebound with '
'"nonlocal"\n'
' statements in inner scopes. This includes only type '
'parameters, as\n'
' no other syntactic elements that can appear within annotation '
'scopes\n'
' can introduce new names.\n'
'\n'
'* While annotation scopes have an internal name, that name is '
'not\n'
' reflected in the *__qualname__* of objects defined within the '
'scope.\n'
' Instead, the "__qualname__" of such objects is as if the '
'object were\n'
' defined in the enclosing scope.\n'
'\n'
'New in version 3.12: Annotation scopes were introduced in '
'Python 3.12\n'
'as part of **PEP 695**.\n'
'\n'
'\n'
'Lazy evaluation\n'
'---------------\n'
'\n'
'The values of type aliases created through the "type" statement '
'are\n'
'*lazily evaluated*. The same applies to the bounds and '
'constraints of\n'
'type variables created through the type parameter syntax. This '
'means\n'
'that they are not evaluated when the type alias or type '
'variable is\n'
'created. Instead, they are only evaluated when doing so is '
'necessary\n'
'to resolve an attribute access.\n'
'\n'
'Example:\n'
'\n'
' >>> type Alias = 1/0\n'
' >>> Alias.__value__\n'
' Traceback (most recent call last):\n'
' ...\n'
' ZeroDivisionError: division by zero\n'
' >>> def func[T: 1/0](): pass\n'
' >>> T = func.__type_params__[0]\n'
' >>> T.__bound__\n'
' Traceback (most recent call last):\n'
' ...\n'
' ZeroDivisionError: division by zero\n'
'\n'
'Here the exception is raised only when the "__value__" '
'attribute of\n'
'the type alias or the "__bound__" attribute of the type '
'variable is\n'
'accessed.\n'
'\n'
'This behavior is primarily useful for references to types that '
'have\n'
'not yet been defined when the type alias or type variable is '
'created.\n'
'For example, lazy evaluation enables creation of mutually '
'recursive\n'
'type aliases:\n'
'\n'
' from typing import Literal\n'
'\n'
' type SimpleExpr = int | Parenthesized\n'
' type Parenthesized = tuple[Literal["("], Expr, '
'Literal[")"]]\n'
' type Expr = SimpleExpr | tuple[SimpleExpr, Literal["+", '
'"-"], Expr]\n'
'\n'
'Lazily evaluated values are evaluated in annotation scope, '
'which means\n'
'that names that appear inside the lazily evaluated value are '
'looked up\n'
'as if they were used in the immediately enclosing scope.\n'
'\n'
'New in version 3.12.\n'
'\n'
'\n'
'Builtins and restricted execution\n'
'---------------------------------\n'
@ -6872,8 +7258,8 @@ topics = {'assert': 'The "assert" statement\n'
'(see\n'
'section The standard type hierarchy):\n'
'\n'
' funcdef ::= [decorators] "def" funcname "(" '
'[parameter_list] ")"\n'
' funcdef ::= [decorators] "def" funcname '
'[type_params] "(" [parameter_list] ")"\n'
' ["->" expression] ":" suite\n'
' decorators ::= decorator+\n'
' decorator ::= "@" assignment_expression '
@ -6935,6 +7321,19 @@ topics = {'assert': 'The "assert" statement\n'
'"assignment_expression". Previously, the grammar was much more\n'
'restrictive; see **PEP 614** for details.\n'
'\n'
'A list of type parameters may be given in square brackets '
'between the\n'
'functions name and the opening parenthesis for its parameter '
'list.\n'
'This indicates to static type checkers that the function is '
'generic.\n'
'At runtime, the type parameters can be retrieved from the '
'functions\n'
'"__type_params__" attribute. See Generic functions for more.\n'
'\n'
'Changed in version 3.12: Type parameter lists are new in Python '
'3.12.\n'
'\n'
'When one or more *parameters* have the form *parameter* "="\n'
'*expression*, the function is said to have “default parameter '
'values.”\n'
@ -7277,19 +7676,24 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'Some identifiers are only reserved under specific contexts. '
'These are\n'
'known as *soft keywords*. The identifiers "match", "case" '
'and "_" can\n'
'syntactically act as keywords in contexts related to the '
'pattern\n'
'matching statement, but this distinction is done at the '
'parser level,\n'
'not when tokenizing.\n'
'known as *soft keywords*. The identifiers "match", "case", '
'"type" and\n'
'"_" can syntactically act as keywords in certain contexts, '
'but this\n'
'distinction is done at the parser level, not when '
'tokenizing.\n'
'\n'
'As soft keywords, their use with pattern matching is possible '
'while\n'
'still preserving compatibility with existing code that uses '
'"match",\n'
'"case" and "_" as identifier names.\n'
'As soft keywords, their use in the grammar is possible while '
'still\n'
'preserving compatibility with existing code that uses these '
'names as\n'
'identifier names.\n'
'\n'
'"match", "case", and "_" are used in the "match" statement. '
'"type" is\n'
'used in the "type" statement.\n'
'\n'
'Changed in version 3.12: "type" is now a soft keyword.\n'
'\n'
'\n'
'Reserved classes of identifiers\n'
@ -7809,6 +8213,10 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'* "import" statements.\n'
'\n'
'* "type" statements.\n'
'\n'
'* type parameter lists.\n'
'\n'
'The "import" statement of the form "from ... import *" binds all '
'names\n'
'defined in the imported module, except those beginning with an\n'
@ -7908,7 +8316,8 @@ topics = {'assert': 'The "assert" statement\n'
'scope.\n'
'"SyntaxError" is raised at compile time if the given name does '
'not\n'
'exist in any enclosing function scope.\n'
'exist in any enclosing function scope. Type parameters cannot be\n'
'rebound with the "nonlocal" statement.\n'
'\n'
'The namespace for a module is automatically created the first time '
'a\n'
@ -7930,18 +8339,156 @@ topics = {'assert': 'The "assert" statement\n'
'of\n'
'the class. The scope of names defined in a class block is limited '
'to\n'
'the class block; it does not extend to the code blocks of methods '
'\n'
'this includes comprehensions and generator expressions since they '
'are\n'
'implemented using a function scope. This means that the '
'following\n'
'will fail:\n'
'the class block; it does not extend to the code blocks of '
'methods.\n'
'This includes comprehensions and generator expressions, but it '
'does\n'
'not include annotation scopes, which have access to their '
'enclosing\n'
'class scopes. This means that the following will fail:\n'
'\n'
' class A:\n'
' a = 42\n'
' b = list(a + i for i in range(10))\n'
'\n'
'However, the following will succeed:\n'
'\n'
' class A:\n'
' type Alias = Nested\n'
' class Nested: pass\n'
'\n'
" print(A.Alias.__value__) # <type 'A.Nested'>\n"
'\n'
'\n'
'Annotation scopes\n'
'=================\n'
'\n'
'Type parameter lists and "type" statements introduce *annotation\n'
'scopes*, which behave mostly like function scopes, but with some\n'
'exceptions discussed below. *Annotations* currently do not use\n'
'annotation scopes, but they are expected to use annotation scopes '
'in\n'
'Python 3.13 when **PEP 649** is implemented.\n'
'\n'
'Annotation scopes are used in the following contexts:\n'
'\n'
'* Type parameter lists for generic type aliases.\n'
'\n'
'* Type parameter lists for generic functions. A generic '
'functions\n'
' annotations are executed within the annotation scope, but its\n'
' defaults and decorators are not.\n'
'\n'
'* Type parameter lists for generic classes. A generic classs '
'base\n'
' classes and keyword arguments are executed within the '
'annotation\n'
' scope, but its decorators are not.\n'
'\n'
'* The bounds and constraints for type variables (lazily '
'evaluated).\n'
'\n'
'* The value of type aliases (lazily evaluated).\n'
'\n'
'Annotation scopes differ from function scopes in the following '
'ways:\n'
'\n'
'* Annotation scopes have access to their enclosing class '
'namespace. If\n'
' an annotation scope is immediately within a class scope, or '
'within\n'
' another annotation scope that is immediately within a class '
'scope,\n'
' the code in the annotation scope can use names defined in the '
'class\n'
' scope as if it were executed directly within the class body. '
'This\n'
' contrasts with regular functions defined within classes, which\n'
' cannot access names defined in the class scope.\n'
'\n'
'* Expressions in annotation scopes cannot contain "yield", "yield\n'
' from", "await", or ":=" expressions. (These expressions are '
'allowed\n'
' in other scopes contained within the annotation scope.)\n'
'\n'
'* Names defined in annotation scopes cannot be rebound with '
'"nonlocal"\n'
' statements in inner scopes. This includes only type parameters, '
'as\n'
' no other syntactic elements that can appear within annotation '
'scopes\n'
' can introduce new names.\n'
'\n'
'* While annotation scopes have an internal name, that name is not\n'
' reflected in the *__qualname__* of objects defined within the '
'scope.\n'
' Instead, the "__qualname__" of such objects is as if the object '
'were\n'
' defined in the enclosing scope.\n'
'\n'
'New in version 3.12: Annotation scopes were introduced in Python '
'3.12\n'
'as part of **PEP 695**.\n'
'\n'
'\n'
'Lazy evaluation\n'
'===============\n'
'\n'
'The values of type aliases created through the "type" statement '
'are\n'
'*lazily evaluated*. The same applies to the bounds and constraints '
'of\n'
'type variables created through the type parameter syntax. This '
'means\n'
'that they are not evaluated when the type alias or type variable '
'is\n'
'created. Instead, they are only evaluated when doing so is '
'necessary\n'
'to resolve an attribute access.\n'
'\n'
'Example:\n'
'\n'
' >>> type Alias = 1/0\n'
' >>> Alias.__value__\n'
' Traceback (most recent call last):\n'
' ...\n'
' ZeroDivisionError: division by zero\n'
' >>> def func[T: 1/0](): pass\n'
' >>> T = func.__type_params__[0]\n'
' >>> T.__bound__\n'
' Traceback (most recent call last):\n'
' ...\n'
' ZeroDivisionError: division by zero\n'
'\n'
'Here the exception is raised only when the "__value__" attribute '
'of\n'
'the type alias or the "__bound__" attribute of the type variable '
'is\n'
'accessed.\n'
'\n'
'This behavior is primarily useful for references to types that '
'have\n'
'not yet been defined when the type alias or type variable is '
'created.\n'
'For example, lazy evaluation enables creation of mutually '
'recursive\n'
'type aliases:\n'
'\n'
' from typing import Literal\n'
'\n'
' type SimpleExpr = int | Parenthesized\n'
' type Parenthesized = tuple[Literal["("], Expr, Literal[")"]]\n'
' type Expr = SimpleExpr | tuple[SimpleExpr, Literal["+", "-"], '
'Expr]\n'
'\n'
'Lazily evaluated values are evaluated in annotation scope, which '
'means\n'
'that names that appear inside the lazily evaluated value are '
'looked up\n'
'as if they were used in the immediately enclosing scope.\n'
'\n'
'New in version 3.12.\n'
'\n'
'\n'
'Builtins and restricted execution\n'
'=================================\n'
@ -9105,6 +9652,14 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
' New in version 3.3.\n'
'\n'
'definition.__type_params__\n'
'\n'
' The type parameters of generic classes, functions, and '
'type\n'
' aliases.\n'
'\n'
' New in version 3.12.\n'
'\n'
'class.__mro__\n'
'\n'
' This attribute is a tuple of classes that are considered '
@ -13430,6 +13985,14 @@ topics = {'assert': 'The "assert" statement\n'
'| |\n'
' '
'+---------------------------+---------------------------------+-------------+\n'
' | "__type_params__" | A tuple containing the type '
'| Writable |\n'
' | | parameters of a generic '
'| |\n'
' | | function. '
'| |\n'
' '
'+---------------------------+---------------------------------+-------------+\n'
'\n'
' Most of the attributes labelled “Writable” check the type of '
'the\n'
@ -13754,6 +14317,10 @@ topics = {'assert': 'The "assert" statement\n'
' with "__annotations__", please see Annotations Best\n'
' Practices.\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'

530
Misc/NEWS.d/3.12.0b2.rst Normal file
View file

@ -0,0 +1,530 @@
.. date: 2023-06-01-03-24-58
.. gh-issue: 103142
.. nonce: GLWDMX
.. release date: 2023-06-06
.. section: Security
The version of OpenSSL used in our binary builds has been upgraded to 1.1.1u
to address several CVEs.
..
.. date: 2023-05-24-09-29-08
.. gh-issue: 99108
.. nonce: hwS2cr
.. section: Security
Refresh our new HACL* built-in :mod:`hashlib` code from upstream. Built-in
SHA2 should be faster and an issue with SHA3 on 32-bit platforms is fixed.
..
.. date: 2023-06-06-11-37-53
.. gh-issue: 105259
.. nonce: E2BGKL
.. section: Core and Builtins
Don't include newline character for trailing ``NEWLINE`` tokens emitted in
the :mod:`tokenize` module. Patch by Pablo Galindo
..
.. date: 2023-06-05-17-35-50
.. gh-issue: 105324
.. nonce: BqhiJJ
.. section: Core and Builtins
Fix the main function of the :mod:`tokenize` module when reading from
``sys.stdin``. Patch by Pablo Galindo
..
.. date: 2023-06-02-17-39-19
.. gh-issue: 98963
.. nonce: J4wJgk
.. section: Core and Builtins
Restore the ability for a subclass of :class:`property` to define
``__slots__`` or otherwise be dict-less by ignoring failures to set a
docstring on such a class. This behavior had regressed in 3.12beta1. An
:exc:`AttributeError` where there had not previously been one was disruptive
to existing code.
..
.. date: 2023-06-02-11-37-12
.. gh-issue: 105194
.. nonce: 4eu56B
.. section: Core and Builtins
Do not escape with backslashes f-string format specifiers. Patch by Pablo
Galindo
..
.. date: 2023-06-01-11-37-03
.. gh-issue: 105162
.. nonce: r8VCXk
.. section: Core and Builtins
Fixed bug in generator.close()/throw() where an inner iterator would be
ignored when the outer iterator was instrumented.
..
.. date: 2023-05-31-19-35-22
.. gh-issue: 105164
.. nonce: 6Wajph
.. section: Core and Builtins
Ensure annotations are set up correctly if the only annotation in a block is
within a :keyword:`match` block. Patch by Jelle Zijlstra.
..
.. date: 2023-05-31-08-10-59
.. gh-issue: 104799
.. nonce: 8kDWti
.. section: Core and Builtins
Attributes of :mod:`ast` nodes that are lists now default to the empty list
if omitted. This means that some code that previously raised
:exc:`TypeError` when the AST node was used will now proceed with the empty
list instead. Patch by Jelle Zijlstra.
..
.. date: 2023-05-30-08-09-43
.. gh-issue: 105035
.. nonce: OWUlHy
.. section: Core and Builtins
Fix :func:`super` calls on types with custom :attr:`tp_getattro`
implementation (e.g. meta-types.)
..
.. date: 2023-05-27-21-50-48
.. gh-issue: 105017
.. nonce: 4sDyDV
.. section: Core and Builtins
Show CRLF lines in the tokenize string attribute in both NL and NEWLINE
tokens. Patch by Marta Gómez.
..
.. date: 2023-05-27-16-57-11
.. gh-issue: 105013
.. nonce: IsDgDY
.. section: Core and Builtins
Fix handling of multiline parenthesized lambdas in
:func:`inspect.getsource`. Patch by Pablo Galindo
..
.. date: 2023-05-27-16-23-16
.. gh-issue: 105017
.. nonce: KQrsC0
.. section: Core and Builtins
Do not include an additional final ``NL`` token when parsing files having
CRLF lines. Patch by Marta Gómez.
..
.. date: 2023-05-26-15-16-11
.. gh-issue: 104976
.. nonce: 6dLitD
.. section: Core and Builtins
Ensure that trailing ``DEDENT`` :class:`tokenize.TokenInfo` objects emitted
by the :mod:`tokenize` module are reported as in Python 3.11. Patch by Pablo
Galindo
..
.. date: 2023-05-26-14-09-47
.. gh-issue: 104972
.. nonce: El2UjE
.. section: Core and Builtins
Ensure that the ``line`` attribute in :class:`tokenize.TokenInfo` objects in
the :mod:`tokenize` module are always correct. Patch by Pablo Galindo
..
.. date: 2023-05-25-21-40-39
.. gh-issue: 104955
.. nonce: LZx7jf
.. section: Core and Builtins
Fix signature for the new :meth:`~object.__release_buffer__` slot. Patch by
Jelle Zijlstra.
..
.. date: 2023-05-24-12-10-54
.. gh-issue: 104690
.. nonce: HX3Jou
.. section: Core and Builtins
Starting new threads and process creation through :func:`os.fork` during
interpreter shutdown (such as from :mod:`atexit` handlers) is no longer
supported. It can lead to race condition between the main Python runtime
thread freeing thread states while internal :mod:`threading` routines are
trying to allocate and use the state of just created threads. Or forked
children trying to use the mid-shutdown runtime and thread state in the
child process.
..
.. date: 2023-05-24-10-19-35
.. gh-issue: 104879
.. nonce: v-29NL
.. section: Core and Builtins
Fix crash when accessing the ``__module__`` attribute of type aliases
defined outside a module. Patch by Jelle Zijlstra.
..
.. date: 2023-05-24-09-59-56
.. gh-issue: 104825
.. nonce: mQesie
.. section: Core and Builtins
Tokens emitted by the :mod:`tokenize` module do not include an implicit
``\n`` character in the ``line`` attribute anymore. Patch by Pablo Galindo
..
.. date: 2023-06-04-12-16-47
.. gh-issue: 105280
.. nonce: srRbCe
.. section: Library
Fix bug where ``isinstance([], collections.abc.Mapping)`` could evaluate to
``True`` if garbage collection happened at the wrong time. The bug was
caused by changes to the implementation of :class:`typing.Protocol` in
Python 3.12.
..
.. date: 2023-06-02-14-57-11
.. gh-issue: 105239
.. nonce: SAmuuj
.. section: Library
Fix longstanding bug where ``issubclass(object, typing.Protocol)`` would
evaluate to ``True`` in some edge cases. Patch by Alex Waygood.
..
.. date: 2023-06-02-02-38-26
.. gh-issue: 105080
.. nonce: 2imGMg
.. section: Library
Fixed inconsistent signature on derived classes for
:func:`inspect.signature`
..
.. date: 2023-05-31-16-58-42
.. gh-issue: 105144
.. nonce: Oqfn0V
.. section: Library
Fix a recent regression in the :mod:`typing` module. The regression meant
that doing ``class Foo(X, typing.Protocol)``, where ``X`` was a class that
had :class:`abc.ABCMeta` as its metaclass, would then cause subsequent
``isinstance(1, X)`` calls to erroneously raise :exc:`TypeError`. Patch by
Alex Waygood.
..
.. date: 2023-05-30-21-27-41
.. gh-issue: 105113
.. nonce: bDUPl_
.. section: Library
Improve performance of :meth:`pathlib.PurePath.match` by compiling an
:class:`re.Pattern` object for the entire pattern.
..
.. date: 2023-05-26-01-31-30
.. gh-issue: 101588
.. nonce: RaqxFy
.. section: Library
Deprecate undocumented copy/deepcopy/pickle support for itertools.
..
.. date: 2023-05-25-23-34-54
.. gh-issue: 103631
.. nonce: x5Urye
.. section: Library
Fix ``pathlib.PurePosixPath(pathlib.PureWindowsPath(...))`` not converting
path separators to restore 3.11 compatible behavior.
..
.. date: 2023-05-25-22-54-20
.. gh-issue: 104947
.. nonce: hi6TUr
.. section: Library
Make comparisons between :class:`pathlib.PureWindowsPath` objects consistent
across Windows and Posix to match 3.11 behavior.
..
.. date: 2023-05-25-08-50-47
.. gh-issue: 104935
.. nonce: -rm1BR
.. section: Library
Fix bugs with the interaction between :func:`typing.runtime_checkable` and
:class:`typing.Generic` that were introduced by the :pep:`695`
implementation. Patch by Jelle Zijlstra.
..
.. date: 2023-05-24-09-34-23
.. gh-issue: 104874
.. nonce: oqyJSy
.. section: Library
Document the ``__name__`` and ``__supertype__`` attributes of
:class:`typing.NewType`. Patch by Jelle Zijlstra.
..
.. date: 2023-05-23-18-31-49
.. gh-issue: 104799
.. nonce: MJYOw6
.. section: Library
Adjust the location of the (see :pep:`695`) ``type_params`` field on
:class:`ast.ClassDef`, :class:`ast.AsyncFunctionDef`, and
:class:`ast.FunctionDef` to better preserve backward compatibility. Patch by
Jelle Zijlstra
..
.. date: 2023-05-23-17-43-52
.. gh-issue: 104797
.. nonce: NR7KzF
.. section: Library
Allow :class:`typing.Protocol` classes to inherit from
:class:`collections.abc.Buffer`. Patch by Jelle Zijlstra.
..
.. date: 2023-05-22-18-39-53
.. gh-issue: 104372
.. nonce: 7tDRaK
.. section: Library
On Linux where :mod:`subprocess` can use the ``vfork()`` syscall for faster
spawning, prevent the parent process from blocking other threads by dropping
the GIL while it waits for the vfork'ed child process ``exec()`` outcome.
This prevents spawning a binary from a slow filesystem from blocking the
rest of the application.
..
.. date: 2023-05-19-19-46-22
.. gh-issue: 99108
.. nonce: wqCg0t
.. section: Library
We now release the GIL around built-in :mod:`hashlib` computations of
reasonable size for the SHA families and MD5 hash functions, matching what
our OpenSSL backed hash computations already does.
..
.. date: 2023-05-11-23-03-00
.. gh-issue: 104399
.. nonce: MMatTP
.. section: Library
Prepare the ``_tkinter`` module for building with Tcl 9.0 and future
libtommath by replacing usage of deprecated functions
:c:func:`mp_to_unsigned_bin_n` and :c:func:`mp_unsigned_bin_size` when
necessary.
..
.. date: 2023-02-18-22-55-48
.. gh-issue: 102024
.. nonce: RUmg_D
.. section: Library
Reduce calls of ``_idle_semaphore.release()`` in
:func:`concurrent.futures.thread._worker`.
..
.. date: 2023-05-28-21-01-00
.. gh-issue: 89455
.. nonce: qAKRrA
.. section: Documentation
Add missing documentation for the ``max_group_depth`` and
``max_group_width`` parameters and the ``exceptions`` attribute of the
:class:`traceback.TracebackException` class.
..
.. date: 2023-05-28-19-08-42
.. gh-issue: 89412
.. nonce: j4cg7K
.. section: Documentation
Add missing documentation for the ``end_lineno`` and ``end_offset``
attributes of the :class:`traceback.TracebackException` class.
..
.. date: 2023-05-25-22-34-31
.. gh-issue: 104943
.. nonce: J2v1Pc
.. section: Documentation
Remove mentions of old Python versions in :class:`typing.NamedTuple`.
..
.. date: 2023-06-06-09-08-10
.. gh-issue: 90005
.. nonce: 8mmeJQ
.. section: Build
Fix a regression in :file:`configure` where we could end up unintentionally
linking with ``libbsd``.
..
.. date: 2023-05-26-15-44-20
.. gh-issue: 89886
.. nonce: _iSW-p
.. section: Build
Autoconf 2.71 and aclocal 1.16.4 is now required to regenerate
:file:`!configure`.
..
.. date: 2023-05-31-16-14-31
.. gh-issue: 105146
.. nonce: gNjqq8
.. section: Windows
Updated the links at the end of the installer to point to Discourse rather
than the mailing lists.
..
.. date: 2023-05-29-17-09-31
.. gh-issue: 103646
.. nonce: U8oGQx
.. section: Windows
When installed from the Microsoft Store, ``pip`` no longer defaults to
per-user installs. However, as the install directory is unwritable, it
should automatically decide to do a per-user install anyway. This should
resolve issues when ``pip`` is passed an option that conflicts with
``--user``.
..
.. date: 2023-05-29-11-38-53
.. gh-issue: 88745
.. nonce: cldf9G
.. section: Windows
Improve performance of :func:`shutil.copy2` by using the operating system's
``CopyFile2`` function. This may result in subtle changes to metadata copied
along with some files, bringing them in line with normal OS behavior.
..
.. date: 2023-05-24-21-00-57
.. gh-issue: 104820
.. nonce: ibyrpp
.. section: Windows
Fixes :func:`~os.stat` and related functions on file systems that do not
support file ID requests. This includes FAT32 and exFAT.
..
.. date: 2023-05-23-19-26-28
.. gh-issue: 104803
.. nonce: gqxYml
.. section: Windows
Add :func:`os.path.isdevdrive` to detect whether a path is on a Windows Dev
Drive. Returns ``False`` on platforms that do not support Dev Drive, and is
absent on non-Windows platforms.
..
.. date: 2023-05-30-23-30-46
.. gh-issue: 103142
.. nonce: 55lMXQ
.. section: macOS
Update macOS installer to use OpenSSL 1.1.1u.
..
.. date: 2023-05-23-17-19-49
.. gh-issue: 104719
.. nonce: rvYXH-
.. section: IDLE
Remove IDLE's modification of tokenize.tabsize and test other uses of
tokenize data and methods.
..
.. date: 2023-05-30-17-45-32
.. gh-issue: 105115
.. nonce: iRho1K
.. section: C API
``PyTypeObject.tp_bases`` (and ``tp_mro``) for builtin static types are now
shared by all interpreters, whereas in 3.12-beta1 they were stored on
``PyInterpreterState``. Also note that now the tuples are immortal objects.
..
.. date: 2023-05-30-10-15-13
.. gh-issue: 105071
.. nonce: dPtp7c
.. section: C API
Add ``PyUnstable_Exc_PrepReraiseStar`` to the unstable C api to expose the
implementation of :keyword:`except* <except_star>`.
..
.. date: 2023-05-19-10-22-34
.. gh-issue: 104668
.. nonce: MLX1g9
.. section: C API
Don't call :c:var:`PyOS_InputHook` or :c:var:`PyOS_ReadlineFunctionPointer`
in subinterpreters, since it's generally difficult to avoid using global
state in their registered callbacks. This also avoids situations where
extensions may find themselves running in a subinterpreter they don't
support (or haven't yet been loaded in).

View file

@ -1,2 +0,0 @@
Autoconf 2.71 and aclocal 1.16.4 is now required to regenerate
:file:`!configure`.

View file

@ -1 +0,0 @@
Fix a regression in :file:`configure` where we could end up unintentionally linking with ``libbsd``.

View file

@ -1,5 +0,0 @@
Don't call :c:var:`PyOS_InputHook` or :c:var:`PyOS_ReadlineFunctionPointer`
in subinterpreters, since it's generally difficult to avoid using global
state in their registered callbacks. This also avoids situations where
extensions may find themselves running in a subinterpreter they don't
support (or haven't yet been loaded in).

View file

@ -1 +0,0 @@
Add ``PyUnstable_Exc_PrepReraiseStar`` to the unstable C api to expose the implementation of :keyword:`except* <except_star>`.

View file

@ -1,3 +0,0 @@
``PyTypeObject.tp_bases`` (and ``tp_mro``) for builtin static types are now
shared by all interpreters, whereas in 3.12-beta1 they were stored on
``PyInterpreterState``. Also note that now the tuples are immortal objects.

View file

@ -1,2 +0,0 @@
Tokens emitted by the :mod:`tokenize` module do not include an implicit
``\n`` character in the ``line`` attribute anymore. Patch by Pablo Galindo

View file

@ -1,2 +0,0 @@
Fix crash when accessing the ``__module__`` attribute of type aliases
defined outside a module. Patch by Jelle Zijlstra.

View file

@ -1,6 +0,0 @@
Starting new threads and process creation through :func:`os.fork` during interpreter
shutdown (such as from :mod:`atexit` handlers) is no longer supported. It can lead
to race condition between the main Python runtime thread freeing thread states while
internal :mod:`threading` routines are trying to allocate and use the state of just
created threads. Or forked children trying to use the mid-shutdown runtime and thread
state in the child process.

View file

@ -1,2 +0,0 @@
Fix signature for the new :meth:`~object.__release_buffer__` slot. Patch by Jelle
Zijlstra.

View file

@ -1,2 +0,0 @@
Ensure that the ``line`` attribute in :class:`tokenize.TokenInfo` objects in
the :mod:`tokenize` module are always correct. Patch by Pablo Galindo

View file

@ -1,3 +0,0 @@
Ensure that trailing ``DEDENT`` :class:`tokenize.TokenInfo` objects emitted
by the :mod:`tokenize` module are reported as in Python 3.11. Patch by Pablo
Galindo

View file

@ -1 +0,0 @@
Do not include an additional final ``NL`` token when parsing files having CRLF lines. Patch by Marta Gómez.

View file

@ -1,2 +0,0 @@
Fix handling of multiline parenthesized lambdas in
:func:`inspect.getsource`. Patch by Pablo Galindo

View file

@ -1 +0,0 @@
Show CRLF lines in the tokenize string attribute in both NL and NEWLINE tokens. Patch by Marta Gómez.

View file

@ -1,2 +0,0 @@
Fix :func:`super` calls on types with custom :attr:`tp_getattro`
implementation (e.g. meta-types.)

View file

@ -1,4 +0,0 @@
Attributes of :mod:`ast` nodes that are lists now default to the empty list
if omitted. This means that some code that previously raised
:exc:`TypeError` when the AST node was used will now proceed with the empty
list instead. Patch by Jelle Zijlstra.

View file

@ -1,2 +0,0 @@
Ensure annotations are set up correctly if the only annotation in a block is
within a :keyword:`match` block. Patch by Jelle Zijlstra.

View file

@ -1,2 +0,0 @@
Fixed bug in generator.close()/throw() where an inner iterator would be
ignored when the outer iterator was instrumented.

View file

@ -1,2 +0,0 @@
Do not escape with backslashes f-string format specifiers. Patch by Pablo
Galindo

View file

@ -1,4 +0,0 @@
Restore the ability for a subclass of :class:`property` to define ``__slots__``
or otherwise be dict-less by ignoring failures to set a docstring on such a
class. This behavior had regressed in 3.12beta1. An :exc:`AttributeError`
where there had not previously been one was disruptive to existing code.

View file

@ -1,2 +0,0 @@
Fix the main function of the :mod:`tokenize` module when reading from
``sys.stdin``. Patch by Pablo Galindo

View file

@ -1,2 +0,0 @@
Don't include newline character for trailing ``NEWLINE`` tokens emitted in
the :mod:`tokenize` module. Patch by Pablo Galindo

View file

@ -1 +0,0 @@
Remove mentions of old Python versions in :class:`typing.NamedTuple`.

View file

@ -1,2 +0,0 @@
Add missing documentation for the ``end_lineno`` and ``end_offset`` attributes
of the :class:`traceback.TracebackException` class.

View file

@ -1,3 +0,0 @@
Add missing documentation for the ``max_group_depth`` and ``max_group_width``
parameters and the ``exceptions`` attribute of the
:class:`traceback.TracebackException` class.

View file

@ -1,2 +0,0 @@
Remove IDLE's modification of tokenize.tabsize and test other uses of
tokenize data and methods.

View file

@ -1 +0,0 @@
Reduce calls of ``_idle_semaphore.release()`` in :func:`concurrent.futures.thread._worker`.

View file

@ -1,4 +0,0 @@
Prepare the ``_tkinter`` module for building with Tcl 9.0 and future
libtommath by replacing usage of deprecated functions
:c:func:`mp_to_unsigned_bin_n` and :c:func:`mp_unsigned_bin_size`
when necessary.

View file

@ -1,3 +0,0 @@
We now release the GIL around built-in :mod:`hashlib` computations of
reasonable size for the SHA families and MD5 hash functions, matching
what our OpenSSL backed hash computations already does.

View file

@ -1,5 +0,0 @@
On Linux where :mod:`subprocess` can use the ``vfork()`` syscall for faster
spawning, prevent the parent process from blocking other threads by dropping
the GIL while it waits for the vfork'ed child process ``exec()`` outcome.
This prevents spawning a binary from a slow filesystem from blocking the
rest of the application.

View file

@ -1,2 +0,0 @@
Allow :class:`typing.Protocol` classes to inherit from
:class:`collections.abc.Buffer`. Patch by Jelle Zijlstra.

View file

@ -1,4 +0,0 @@
Adjust the location of the (see :pep:`695`) ``type_params`` field on
:class:`ast.ClassDef`, :class:`ast.AsyncFunctionDef`, and
:class:`ast.FunctionDef` to better preserve backward compatibility. Patch by
Jelle Zijlstra

View file

@ -1,2 +0,0 @@
Document the ``__name__`` and ``__supertype__`` attributes of
:class:`typing.NewType`. Patch by Jelle Zijlstra.

View file

@ -1,3 +0,0 @@
Fix bugs with the interaction between :func:`typing.runtime_checkable` and
:class:`typing.Generic` that were introduced by the :pep:`695`
implementation. Patch by Jelle Zijlstra.

View file

@ -1,2 +0,0 @@
Make comparisons between :class:`pathlib.PureWindowsPath` objects consistent
across Windows and Posix to match 3.11 behavior.

View file

@ -1,2 +0,0 @@
Fix ``pathlib.PurePosixPath(pathlib.PureWindowsPath(...))`` not converting
path separators to restore 3.11 compatible behavior.

View file

@ -1 +0,0 @@
Deprecate undocumented copy/deepcopy/pickle support for itertools.

View file

@ -1,2 +0,0 @@
Improve performance of :meth:`pathlib.PurePath.match` by compiling an
:class:`re.Pattern` object for the entire pattern.

View file

@ -1,5 +0,0 @@
Fix a recent regression in the :mod:`typing` module. The regression meant
that doing ``class Foo(X, typing.Protocol)``, where ``X`` was a class that
had :class:`abc.ABCMeta` as its metaclass, would then cause subsequent
``isinstance(1, X)`` calls to erroneously raise :exc:`TypeError`. Patch by
Alex Waygood.

View file

@ -1 +0,0 @@
Fixed inconsistent signature on derived classes for :func:`inspect.signature`

View file

@ -1,2 +0,0 @@
Fix longstanding bug where ``issubclass(object, typing.Protocol)`` would
evaluate to ``True`` in some edge cases. Patch by Alex Waygood.

View file

@ -1,4 +0,0 @@
Fix bug where ``isinstance([], collections.abc.Mapping)`` could evaluate to
``True`` if garbage collection happened at the wrong time. The bug was
caused by changes to the implementation of :class:`typing.Protocol` in
Python 3.12.

View file

@ -1,2 +0,0 @@
Refresh our new HACL* built-in :mod:`hashlib` code from upstream. Built-in
SHA2 should be faster and an issue with SHA3 on 32-bit platforms is fixed.

View file

@ -1,2 +0,0 @@
The version of OpenSSL used in our binary builds has been upgraded to 1.1.1u
to address several CVEs.

View file

@ -1,3 +0,0 @@
Add :func:`os.path.isdevdrive` to detect whether a path is on a Windows Dev
Drive. Returns ``False`` on platforms that do not support Dev Drive, and is
absent on non-Windows platforms.

View file

@ -1,2 +0,0 @@
Fixes :func:`~os.stat` and related functions on file systems that do not
support file ID requests. This includes FAT32 and exFAT.

View file

@ -1,3 +0,0 @@
Improve performance of :func:`shutil.copy2` by using the operating system's
``CopyFile2`` function. This may result in subtle changes to metadata copied
along with some files, bringing them in line with normal OS behavior.

View file

@ -1,5 +0,0 @@
When installed from the Microsoft Store, ``pip`` no longer defaults to
per-user installs. However, as the install directory is unwritable, it
should automatically decide to do a per-user install anyway. This should
resolve issues when ``pip`` is passed an option that conflicts with
``--user``.

View file

@ -1,2 +0,0 @@
Updated the links at the end of the installer to point to Discourse rather
than the mailing lists.

View file

@ -1 +0,0 @@
Update macOS installer to use OpenSSL 1.1.1u.

View file

@ -1,4 +1,4 @@
This is Python version 3.12.0 beta 1
This is Python version 3.12.0 beta 2
=====================================
.. image:: https://github.com/python/cpython/workflows/Tests/badge.svg