Python 3.9.0a5
This commit is contained in:
parent
9a81ab107a
commit
dcd4c4f9c9
|
@ -20,10 +20,10 @@
|
||||||
#define PY_MINOR_VERSION 9
|
#define PY_MINOR_VERSION 9
|
||||||
#define PY_MICRO_VERSION 0
|
#define PY_MICRO_VERSION 0
|
||||||
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA
|
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA
|
||||||
#define PY_RELEASE_SERIAL 4
|
#define PY_RELEASE_SERIAL 5
|
||||||
|
|
||||||
/* Version as a string */
|
/* Version as a string */
|
||||||
#define PY_VERSION "3.9.0a4+"
|
#define PY_VERSION "3.9.0a5"
|
||||||
/*--end constants--*/
|
/*--end constants--*/
|
||||||
|
|
||||||
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
|
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Autogenerated by Sphinx on Tue Feb 25 13:20:31 2020
|
# Autogenerated by Sphinx on Mon Mar 23 17:18:04 2020
|
||||||
topics = {'assert': 'The "assert" statement\n'
|
topics = {'assert': 'The "assert" statement\n'
|
||||||
'**********************\n'
|
'**********************\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
@ -1476,8 +1476,8 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
' | starred_and_keywords ["," '
|
' | starred_and_keywords ["," '
|
||||||
'keywords_arguments]\n'
|
'keywords_arguments]\n'
|
||||||
' | keywords_arguments\n'
|
' | keywords_arguments\n'
|
||||||
' positional_arguments ::= ["*"] expression ("," ["*"] '
|
' positional_arguments ::= positional_item ("," positional_item)*\n'
|
||||||
'expression)*\n'
|
' positional_item ::= assignment_expression | "*" expression\n'
|
||||||
' starred_and_keywords ::= ("*" expression | keyword_item)\n'
|
' starred_and_keywords ::= ("*" expression | keyword_item)\n'
|
||||||
' ("," "*" expression | "," '
|
' ("," "*" expression | "," '
|
||||||
'keyword_item)*\n'
|
'keyword_item)*\n'
|
||||||
|
@ -1717,6 +1717,10 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'for\n'
|
'for\n'
|
||||||
'function decorators. The result is then bound to the class name.\n'
|
'function decorators. The result is then bound to the class name.\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
'Changed in version 3.9: Classes may be decorated with any valid\n'
|
||||||
|
'"assignment_expression". Previously, the grammar was much more\n'
|
||||||
|
'restrictive; see **PEP 614** for details.\n'
|
||||||
|
'\n'
|
||||||
'**Programmer’s note:** Variables defined in the class definition '
|
'**Programmer’s note:** Variables defined in the class definition '
|
||||||
'are\n'
|
'are\n'
|
||||||
'class attributes; they are shared by instances. Instance '
|
'class attributes; they are shared by instances. Instance '
|
||||||
|
@ -2187,8 +2191,8 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'\n'
|
'\n'
|
||||||
'The "if" statement is used for conditional execution:\n'
|
'The "if" statement is used for conditional execution:\n'
|
||||||
'\n'
|
'\n'
|
||||||
' if_stmt ::= "if" expression ":" suite\n'
|
' if_stmt ::= "if" assignment_expression ":" suite\n'
|
||||||
' ("elif" expression ":" suite)*\n'
|
' ("elif" assignment_expression ":" suite)*\n'
|
||||||
' ["else" ":" suite]\n'
|
' ["else" ":" suite]\n'
|
||||||
'\n'
|
'\n'
|
||||||
'It selects exactly one of the suites by evaluating the '
|
'It selects exactly one of the suites by evaluating the '
|
||||||
|
@ -2211,7 +2215,7 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'an\n'
|
'an\n'
|
||||||
'expression is true:\n'
|
'expression is true:\n'
|
||||||
'\n'
|
'\n'
|
||||||
' while_stmt ::= "while" expression ":" suite\n'
|
' while_stmt ::= "while" assignment_expression ":" suite\n'
|
||||||
' ["else" ":" suite]\n'
|
' ["else" ":" suite]\n'
|
||||||
'\n'
|
'\n'
|
||||||
'This repeatedly tests the expression and, if it is true, '
|
'This repeatedly tests the expression and, if it is true, '
|
||||||
|
@ -2626,8 +2630,8 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'[parameter_list] ")"\n'
|
'[parameter_list] ")"\n'
|
||||||
' ["->" expression] ":" suite\n'
|
' ["->" expression] ":" suite\n'
|
||||||
' decorators ::= decorator+\n'
|
' decorators ::= decorator+\n'
|
||||||
' decorator ::= "@" dotted_name ["(" '
|
' decorator ::= "@" assignment_expression '
|
||||||
'[argument_list [","]] ")"] NEWLINE\n'
|
'NEWLINE\n'
|
||||||
' dotted_name ::= identifier ("." identifier)*\n'
|
' dotted_name ::= identifier ("." identifier)*\n'
|
||||||
' parameter_list ::= defparameter ("," '
|
' parameter_list ::= defparameter ("," '
|
||||||
'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
|
'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
|
||||||
|
@ -2681,6 +2685,11 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'the name\n'
|
'the name\n'
|
||||||
'"func".\n'
|
'"func".\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
'Changed in version 3.9: Functions may be decorated with any '
|
||||||
|
'valid\n'
|
||||||
|
'"assignment_expression". Previously, the grammar was much more\n'
|
||||||
|
'restrictive; see **PEP 614** for details.\n'
|
||||||
|
'\n'
|
||||||
'When one or more *parameters* have the form *parameter* "="\n'
|
'When one or more *parameters* have the form *parameter* "="\n'
|
||||||
'*expression*, the function is said to have “default parameter '
|
'*expression*, the function is said to have “default parameter '
|
||||||
'values.”\n'
|
'values.”\n'
|
||||||
|
@ -2882,6 +2891,10 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'function decorators. The result is then bound to the class '
|
'function decorators. The result is then bound to the class '
|
||||||
'name.\n'
|
'name.\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
'Changed in version 3.9: Classes may be decorated with any valid\n'
|
||||||
|
'"assignment_expression". Previously, the grammar was much more\n'
|
||||||
|
'restrictive; see **PEP 614** for details.\n'
|
||||||
|
'\n'
|
||||||
'**Programmer’s note:** Variables defined in the class definition '
|
'**Programmer’s note:** Variables defined in the class definition '
|
||||||
'are\n'
|
'are\n'
|
||||||
'class attributes; they are shared by instances. Instance '
|
'class attributes; they are shared by instances. Instance '
|
||||||
|
@ -4403,8 +4416,8 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'\n'
|
'\n'
|
||||||
'The "if" statement is used for conditional execution:\n'
|
'The "if" statement is used for conditional execution:\n'
|
||||||
'\n'
|
'\n'
|
||||||
' if_stmt ::= "if" expression ":" suite\n'
|
' if_stmt ::= "if" assignment_expression ":" suite\n'
|
||||||
' ("elif" expression ":" suite)*\n'
|
' ("elif" assignment_expression ":" suite)*\n'
|
||||||
' ["else" ":" suite]\n'
|
' ["else" ":" suite]\n'
|
||||||
'\n'
|
'\n'
|
||||||
'It selects exactly one of the suites by evaluating the expressions '
|
'It selects exactly one of the suites by evaluating the expressions '
|
||||||
|
@ -4824,7 +4837,7 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'[","]\n'
|
'[","]\n'
|
||||||
' starred_expression ::= expression | (starred_item ",")* '
|
' starred_expression ::= expression | (starred_item ",")* '
|
||||||
'[starred_item]\n'
|
'[starred_item]\n'
|
||||||
' starred_item ::= expression | "*" or_expr\n'
|
' starred_item ::= assignment_expression | "*" or_expr\n'
|
||||||
'\n'
|
'\n'
|
||||||
'Except when part of a list or set display, an expression list\n'
|
'Except when part of a list or set display, an expression list\n'
|
||||||
'containing at least one comma yields a tuple. The length of '
|
'containing at least one comma yields a tuple. The length of '
|
||||||
|
@ -5134,11 +5147,11 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'only\n'
|
'only\n'
|
||||||
'supported by the numeric types.\n'
|
'supported by the numeric types.\n'
|
||||||
'\n'
|
'\n'
|
||||||
'A general convention is that an empty format string ("""") '
|
'A general convention is that an empty format specification '
|
||||||
'produces\n'
|
'produces\n'
|
||||||
'the same result as if you had called "str()" on the value. '
|
'the same result as if you had called "str()" on the value. '
|
||||||
'A non-empty\n'
|
'A non-empty\n'
|
||||||
'format string typically modifies the result.\n'
|
'format specification typically modifies the result.\n'
|
||||||
'\n'
|
'\n'
|
||||||
'The general form of a *standard format specifier* is:\n'
|
'The general form of a *standard format specifier* is:\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
@ -5693,8 +5706,8 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'[parameter_list] ")"\n'
|
'[parameter_list] ")"\n'
|
||||||
' ["->" expression] ":" suite\n'
|
' ["->" expression] ":" suite\n'
|
||||||
' decorators ::= decorator+\n'
|
' decorators ::= decorator+\n'
|
||||||
' decorator ::= "@" dotted_name ["(" '
|
' decorator ::= "@" assignment_expression '
|
||||||
'[argument_list [","]] ")"] NEWLINE\n'
|
'NEWLINE\n'
|
||||||
' dotted_name ::= identifier ("." identifier)*\n'
|
' dotted_name ::= identifier ("." identifier)*\n'
|
||||||
' parameter_list ::= defparameter ("," '
|
' parameter_list ::= defparameter ("," '
|
||||||
'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
|
'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
|
||||||
|
@ -5748,6 +5761,11 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'the name\n'
|
'the name\n'
|
||||||
'"func".\n'
|
'"func".\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
'Changed in version 3.9: Functions may be decorated with any '
|
||||||
|
'valid\n'
|
||||||
|
'"assignment_expression". Previously, the grammar was much more\n'
|
||||||
|
'restrictive; see **PEP 614** for details.\n'
|
||||||
|
'\n'
|
||||||
'When one or more *parameters* have the form *parameter* "="\n'
|
'When one or more *parameters* have the form *parameter* "="\n'
|
||||||
'*expression*, the function is said to have “default parameter '
|
'*expression*, the function is said to have “default parameter '
|
||||||
'values.”\n'
|
'values.”\n'
|
||||||
|
@ -6119,8 +6137,8 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'\n'
|
'\n'
|
||||||
'The "if" statement is used for conditional execution:\n'
|
'The "if" statement is used for conditional execution:\n'
|
||||||
'\n'
|
'\n'
|
||||||
' if_stmt ::= "if" expression ":" suite\n'
|
' if_stmt ::= "if" assignment_expression ":" suite\n'
|
||||||
' ("elif" expression ":" suite)*\n'
|
' ("elif" assignment_expression ":" suite)*\n'
|
||||||
' ["else" ":" suite]\n'
|
' ["else" ":" suite]\n'
|
||||||
'\n'
|
'\n'
|
||||||
'It selects exactly one of the suites by evaluating the expressions '
|
'It selects exactly one of the suites by evaluating the expressions '
|
||||||
|
@ -9018,7 +9036,7 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'\n'
|
'\n'
|
||||||
'If the metaclass has no "__prepare__" attribute, then the '
|
'If the metaclass has no "__prepare__" attribute, then the '
|
||||||
'class\n'
|
'class\n'
|
||||||
'namespace is initialised as an empty "dict()".\n'
|
'namespace is initialised as an empty ordered mapping.\n'
|
||||||
'\n'
|
'\n'
|
||||||
'See also:\n'
|
'See also:\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
@ -11196,10 +11214,17 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'for\n'
|
'for\n'
|
||||||
' the operands provided. (The interpreter will then try the\n'
|
' the operands provided. (The interpreter will then try the\n'
|
||||||
' reflected operation, or some other fallback, depending on the\n'
|
' reflected operation, or some other fallback, depending on the\n'
|
||||||
' operator.) Its truth value is true.\n'
|
' operator.) It should not be evaluated in a boolean context.\n'
|
||||||
'\n'
|
'\n'
|
||||||
' See Implementing the arithmetic operations for more details.\n'
|
' See Implementing the arithmetic operations for more details.\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
' Changed in version 3.9: Evaluating "NotImplemented" in a '
|
||||||
|
'boolean\n'
|
||||||
|
' context is deprecated. While it currently evaluates as true, it\n'
|
||||||
|
' will emit a "DeprecationWarning". It will raise a "TypeError" in '
|
||||||
|
'a\n'
|
||||||
|
' future version of Python.\n'
|
||||||
|
'\n'
|
||||||
'Ellipsis\n'
|
'Ellipsis\n'
|
||||||
' This type has a single value. There is a single object with '
|
' This type has a single value. There is a single object with '
|
||||||
'this\n'
|
'this\n'
|
||||||
|
@ -12487,6 +12512,29 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
' >>> d.values() == d.values()\n'
|
' >>> d.values() == d.values()\n'
|
||||||
' False\n'
|
' False\n'
|
||||||
'\n'
|
'\n'
|
||||||
|
' d | other\n'
|
||||||
|
'\n'
|
||||||
|
' Create a new dictionary with the merged keys and '
|
||||||
|
'values of *d*\n'
|
||||||
|
' and *other*, which must both be dictionaries. The '
|
||||||
|
'values of\n'
|
||||||
|
' *other* take priority when *d* and *other* share '
|
||||||
|
'keys.\n'
|
||||||
|
'\n'
|
||||||
|
' New in version 3.9.\n'
|
||||||
|
'\n'
|
||||||
|
' d |= other\n'
|
||||||
|
'\n'
|
||||||
|
' Update the dictionary *d* with keys and values from '
|
||||||
|
'*other*,\n'
|
||||||
|
' which may be either a *mapping* or an *iterable* of '
|
||||||
|
'key/value\n'
|
||||||
|
' pairs. The values of *other* take priority when *d* '
|
||||||
|
'and *other*\n'
|
||||||
|
' share keys.\n'
|
||||||
|
'\n'
|
||||||
|
' New in version 3.9.\n'
|
||||||
|
'\n'
|
||||||
' Dictionaries compare equal if and only if they have the '
|
' Dictionaries compare equal if and only if they have the '
|
||||||
'same "(key,\n'
|
'same "(key,\n'
|
||||||
' value)" pairs (regardless of ordering). Order comparisons '
|
' value)" pairs (regardless of ordering). Order comparisons '
|
||||||
|
@ -13616,7 +13664,7 @@ topics = {'assert': 'The "assert" statement\n'
|
||||||
'The "while" statement is used for repeated execution as long as an\n'
|
'The "while" statement is used for repeated execution as long as an\n'
|
||||||
'expression is true:\n'
|
'expression is true:\n'
|
||||||
'\n'
|
'\n'
|
||||||
' while_stmt ::= "while" expression ":" suite\n'
|
' while_stmt ::= "while" assignment_expression ":" suite\n'
|
||||||
' ["else" ":" suite]\n'
|
' ["else" ":" suite]\n'
|
||||||
'\n'
|
'\n'
|
||||||
'This repeatedly tests the expression and, if it is true, executes '
|
'This repeatedly tests the expression and, if it is true, executes '
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +0,0 @@
|
||||||
Add ``--with-platlibdir`` option to the configure script: name of the
|
|
||||||
platform-specific library directory, stored in the new :attr:`sys.platlibdir`
|
|
||||||
attribute. It is used to build the path of platform-specific dynamic libraries
|
|
||||||
and the path of the standard library. It is equal to ``"lib"`` on most
|
|
||||||
platforms. On Fedora and SuSE, it is equal to ``"lib64"`` on 64-bit platforms.
|
|
||||||
Patch by Jan Matějek, Matěj Cepl, Charalampos Stratakis and Victor Stinner.
|
|
|
@ -1,3 +0,0 @@
|
||||||
setup.py now uses a basic implementation of the :mod:`subprocess` module if
|
|
||||||
the :mod:`subprocess` module is not available: before required C extension
|
|
||||||
modules are built.
|
|
|
@ -1 +0,0 @@
|
||||||
Fix build with DTrace but without additional DFLAGS.
|
|
|
@ -1,5 +0,0 @@
|
||||||
Add a private API to get and set the frame evaluation function: add
|
|
||||||
:c:func:`_PyInterpreterState_GetEvalFrameFunc` and
|
|
||||||
:c:func:`_PyInterpreterState_SetEvalFrameFunc` C functions.
|
|
||||||
The :c:type:`_PyFrameEvalFunction` function type now takes a *tstate*
|
|
||||||
parameter.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Fixed segfault in ``Py_BuildValue()`` called with a format containing "#"
|
|
||||||
and undefined PY_SSIZE_T_CLEAN whwn an exception is set.
|
|
|
@ -1,10 +0,0 @@
|
||||||
Extension modules: :c:member:`~PyModuleDef.m_traverse`,
|
|
||||||
:c:member:`~PyModuleDef.m_clear` and :c:member:`~PyModuleDef.m_free` functions
|
|
||||||
of :c:type:`PyModuleDef` are no longer called if the module state was requested
|
|
||||||
but is not allocated yet. This is the case immediately after the module is
|
|
||||||
created and before the module is executed (:c:data:`Py_mod_exec` function). More
|
|
||||||
precisely, these functions are not called if :c:member:`~PyModuleDef.m_size` is
|
|
||||||
greater than 0 and the module state (as returned by
|
|
||||||
:c:func:`PyModule_GetState`) is ``NULL``.
|
|
||||||
|
|
||||||
Extension modules without module state (``m_size <= 0``) are not affected.
|
|
|
@ -1,3 +0,0 @@
|
||||||
The :c:func:`Py_FatalError` function is replaced with a macro which logs
|
|
||||||
automatically the name of the current function, unless the ``Py_LIMITED_API``
|
|
||||||
macro is defined.
|
|
|
@ -1,2 +0,0 @@
|
||||||
:c:func:`PyNumber_ToBase` now raises a :exc:`SystemError` instead of
|
|
||||||
crashing when called with invalid base.
|
|
|
@ -1,2 +0,0 @@
|
||||||
:c:macro:`Py_UNREACHABLE` is now implemented with
|
|
||||||
``__builtin_unreachable()`` and analogs in release mode.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Deprecated :c:func:`PyEval_InitThreads` and
|
|
||||||
:c:func:`PyEval_ThreadsInitialized`. Calling :c:func:`PyEval_InitThreads` now
|
|
||||||
does nothing.
|
|
|
@ -1,2 +0,0 @@
|
||||||
:c:func:`PyDescr_NewMethod` and :c:func:`PyCFunction_NewEx` now include the
|
|
||||||
method name in the SystemError "bad call flags" error message to ease debug.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Py_TRASHCAN_BEGIN_CONDITION and Py_TRASHCAN_END macro no longer access
|
|
||||||
PyThreadState attributes, but call new private _PyTrash_begin() and
|
|
||||||
_PyTrash_end() functions which hide implementation details.
|
|
|
@ -1,4 +0,0 @@
|
||||||
Move the static inline function flavor of Py_EnterRecursiveCall() and
|
|
||||||
Py_LeaveRecursiveCall() to the internal C API: they access PyThreadState
|
|
||||||
attributes. The limited C API provides regular functions which hide
|
|
||||||
implementation details.
|
|
|
@ -1,2 +0,0 @@
|
||||||
If :c:func:`PySys_Audit` fails in :c:func:`PyEval_SetProfile` or
|
|
||||||
:c:func:`PyEval_SetTrace`, log the error as an unraisable exception.
|
|
|
@ -1 +0,0 @@
|
||||||
Add :c:func:`PyInterpreterState_Get` function to the limited C API.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Add :c:func:`PyThreadState_GetInterpreter`: get the interpreter of a Python
|
|
||||||
thread state.
|
|
|
@ -1 +0,0 @@
|
||||||
Add _PyArg_NoKwnames helper function. Patch by Dong-hee Na.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Add :c:func:`PyThreadState_GetFrame` function: get the current frame of a
|
|
||||||
Python thread state.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Remove ``_PyRuntime.getframe`` hook and remove ``_PyThreadState_GetFrame``
|
|
||||||
macro which was an alias to ``_PyRuntime.getframe``. They were only exposed
|
|
||||||
by the internal C API. Remove also ``PyThreadFrameGetter`` type.
|
|
|
@ -1 +0,0 @@
|
||||||
Add :c:func:`PyModule_AddType` helper function: add a type to a module. Patch by Dong-hee Na.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Don't leak environment variable ``__PYVENV_LAUNCHER__`` into the interpreter
|
|
||||||
session on macOS.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Using :data:`NotImplemented` in a boolean context has been deprecated. Patch
|
|
||||||
contributed by Josh Rosenberg.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Do not optimize annotations if 'from __future__ import annotations' is used.
|
|
||||||
Patch by Pablo Galindo.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Fix unparsing of ext slices with no items (``foo[:,]``). Patch by Batuhan
|
|
||||||
Taskaya.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Optimize :c:func:`PyUnicode_AsUTF8` and :c:func:`PyUnicode_AsUTF8AndSize`
|
|
||||||
slightly when they need to create internal UTF-8 cache.
|
|
|
@ -1 +0,0 @@
|
||||||
Port _locale extension module to multiphase initialization (:pep:`489`).
|
|
|
@ -1 +0,0 @@
|
||||||
Tweak import deadlock detection code to not deadlock itself.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Relax :term:`decorator` grammar restrictions to allow any valid expression
|
|
||||||
(:pep:`614`).
|
|
|
@ -1 +0,0 @@
|
||||||
Port audioop extension module to multiphase initialization (:pep:`489`).
|
|
|
@ -1,2 +0,0 @@
|
||||||
Fixed a crash due to incorrect handling of weak references in
|
|
||||||
``collections.OrderedDict`` classes. Patch by Pablo Galindo.
|
|
|
@ -1,6 +0,0 @@
|
||||||
Fix race condition where threads created by PyGILState_Ensure() could get a
|
|
||||||
duplicate id.
|
|
||||||
|
|
||||||
This affects consumers of tstate->id like the contextvar caching machinery,
|
|
||||||
which could return invalid cached objects under heavy thread load (observed
|
|
||||||
in embedded scenarios).
|
|
|
@ -1,3 +0,0 @@
|
||||||
Fix a possible :exc:`SystemError` in ``math.{atan2,copysign,remainder}()``
|
|
||||||
when the first argument cannot be converted to a :class:`float`. Patch by
|
|
||||||
Zachary Spytz.
|
|
|
@ -1,5 +0,0 @@
|
||||||
Fix :c:func:`PyEval_RestoreThread` random crash at exit with daemon threads.
|
|
||||||
It now accesses the ``_PyRuntime`` variable directly instead of using
|
|
||||||
``tstate->interp->runtime``, since ``tstate`` can be a dangling pointer after
|
|
||||||
:c:func:`Py_Finalize` has been called. Moreover, the daemon thread now exits
|
|
||||||
before trying to take the GIL.
|
|
|
@ -1,4 +0,0 @@
|
||||||
Fix a bug that was causing incomplete results when calling
|
|
||||||
``pathlib.Path.glob`` in the presence of symlinks that point
|
|
||||||
to files where the user does not have read access. Patch by Pablo
|
|
||||||
Galindo and Matt Wozniski.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Clear the frames of daemon threads earlier during the Python shutdown to
|
|
||||||
call objects destructors. So "unclosed file" resource warnings are now
|
|
||||||
emitted for daemon threads in a more reliable way.
|
|
|
@ -1 +0,0 @@
|
||||||
Update Unicode database to Unicode version 13.0.0.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Chaged list overallocation strategy. It no longer overallocates if the new
|
|
||||||
size is closer to overalocated size than to the old size and adds padding.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Speed up calls to ``tuple()`` by using the :pep:`590` ``vectorcall`` calling
|
|
||||||
convention. Patch by Dong-hee Na.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Allow executing asynchronous comprehensions on the top level when the
|
|
||||||
``PyCF_ALLOW_TOP_LEVEL_AWAIT`` flag is given. Patch by Batuhan Taskaya.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Correctly raise ``SyntaxError`` if *await* is used inside non-async
|
|
||||||
functions and ``PyCF_ALLOW_TOP_LEVEL_AWAIT`` is set (like in the asyncio
|
|
||||||
REPL). Patch by Pablo Galindo.
|
|
|
@ -1 +0,0 @@
|
||||||
Use inline function to replace extension modules' get_module_state macros.
|
|
|
@ -1 +0,0 @@
|
||||||
Port _statistics module to multiphase initialization (:pep:`489`).
|
|
|
@ -1,2 +0,0 @@
|
||||||
Speed up calls to ``set()`` by using the :pep:`590` ``vectorcall`` calling
|
|
||||||
convention. Patch by Dong-hee Na.
|
|
|
@ -1,3 +0,0 @@
|
||||||
subinterpreters: Move ``_PyRuntimeState.ceval.tracing_possible`` to
|
|
||||||
``PyInterpreterState.ceval.tracing_possible``: each interpreter now has its own
|
|
||||||
variable.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Speed up calls to ``frozenset()`` by using the :pep:`590` ``vectorcall``
|
|
||||||
calling convention. Patch by Dong-hee Na.
|
|
|
@ -1 +0,0 @@
|
||||||
Port itertools module to multiphase initialization (:pep:`489`).
|
|
|
@ -1 +0,0 @@
|
||||||
Port _heapq module to multiphase initialization.
|
|
|
@ -1,4 +0,0 @@
|
||||||
If :c:func:`Py_AddPendingCall` is called in a subinterpreter, the function is
|
|
||||||
now scheduled to be called from the subinterpreter, rather than being called
|
|
||||||
from the main interpreter. Each subinterpreter now has its own list of
|
|
||||||
scheduled calls.
|
|
|
@ -1,8 +0,0 @@
|
||||||
Optimize signal handling in multithreaded applications. If a thread different
|
|
||||||
than the main thread gets a signal, the bytecode evaluation loop is no longer
|
|
||||||
interrupted at each bytecode instruction to check for pending signals which
|
|
||||||
cannot be handled. Only the main thread of the main interpreter can handle
|
|
||||||
signals.
|
|
||||||
|
|
||||||
Previously, the bytecode evaluation loop was interrupted at each instruction
|
|
||||||
until the main thread handles signals.
|
|
|
@ -1 +0,0 @@
|
||||||
Port _collections module to multiphase initialization (:pep:`489`).
|
|
|
@ -1 +0,0 @@
|
||||||
Port _weakref extension module to multiphase initialization (:pep:`489`).
|
|
|
@ -1,8 +0,0 @@
|
||||||
Optimize pending calls in multithreaded applications. If a thread different
|
|
||||||
than the main thread schedules a pending call (:c:func:`Py_AddPendingCall`),
|
|
||||||
the bytecode evaluation loop is no longer interrupted at each bytecode
|
|
||||||
instruction to check for pending calls which cannot be executed. Only the
|
|
||||||
main thread can execute pending calls.
|
|
||||||
|
|
||||||
Previously, the bytecode evaluation loop was interrupted at each instruction
|
|
||||||
until the main thread executes pending calls.
|
|
|
@ -1 +0,0 @@
|
||||||
Changed operand name of **MAKE_FUNCTION** from *argc* to *flags* for module :mod:`dis`
|
|
|
@ -1 +0,0 @@
|
||||||
Update :mod:`token` documentation to reflect additions in Python 3.8
|
|
|
@ -1 +0,0 @@
|
||||||
Fix misleading documentation about mixed-type numeric comparisons.
|
|
|
@ -1,2 +0,0 @@
|
||||||
The language reference no longer restricts default class namespaces to dicts
|
|
||||||
only.
|
|
|
@ -1 +0,0 @@
|
||||||
Change 'string' to 'specification' in format doc.
|
|
|
@ -1 +0,0 @@
|
||||||
Updated the Language Reference for :pep:`572`.
|
|
|
@ -1 +0,0 @@
|
||||||
Selecting code context lines no longer causes a jump.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Edit "Go to line" now clears any selection, preventing accidental deletion.
|
|
||||||
It also updates Ln and Col on the status bar.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Since clicking to get an IDLE context menu moves the cursor,
|
|
||||||
any text selection should be and now is cleared.
|
|
|
@ -1,2 +0,0 @@
|
||||||
For 'Go to Line', use a Query box subclass with IDLE standard behavior
|
|
||||||
and improved error checking.
|
|
|
@ -1,5 +0,0 @@
|
||||||
Simplified AST for subscription. Simple indices are now represented by their
|
|
||||||
value, extended slices are represented as tuples. :mod:`ast` classes
|
|
||||||
``Index`` and ``ExtSlice`` are considered deprecated and will be removed in
|
|
||||||
future Python versions. In the meantime, ``Index(value)`` now returns
|
|
||||||
a ``value`` itself, ``ExtSlice(slices)`` returns ``Tuple(slices, Load())``.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Add support for scoped IPv6 addresses to :mod:`ipaddress`. Patch by Oleksandr
|
|
||||||
Pavliuk.
|
|
|
@ -1,2 +0,0 @@
|
||||||
When using minidom module to generate XML documents the ability to add Standalone Document Declaration is added.
|
|
||||||
All the changes are made to generate a document in compliance with Extensible Markup Language (XML) 1.0 (Fifth Edition) W3C Recommendation (available here: https://www.w3.org/TR/xml/#sec-prolog-dtd).
|
|
|
@ -1,2 +0,0 @@
|
||||||
Added starred expressions support to ``return`` and ``yield`` statements for
|
|
||||||
``lib2to3``. Patch by Vlad Emelianov.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Open issue in the BPO indicated a desire to make the implementation of
|
|
||||||
codecs.open() at parity with io.open(), which implements a try/except to
|
|
||||||
assure file stream gets closed before an exception is raised.
|
|
|
@ -1 +0,0 @@
|
||||||
Remove default value from *attrs* parameter of :meth:`xml.etree.ElementTree.TreeBuilder.start` for consistency between Python and C implementations.
|
|
|
@ -1 +0,0 @@
|
||||||
Adding HTTP status 418 "I'm a Teapot" to HTTPStatus in http library. Patch by Ross Rhodes.
|
|
|
@ -1,2 +0,0 @@
|
||||||
HTTP status codes ``103 EARLY_HINTS`` and ``425 TOO_EARLY`` are added to
|
|
||||||
:class:`http.HTTPStatus`. Patch by Dong-hee Na.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Fix handling of header in :class:`urllib.request.AbstractDigestAuthHandler` when the optional ``qop`` parameter
|
|
||||||
is not present.
|
|
|
@ -1 +0,0 @@
|
||||||
Add thread_name_prefix to default asyncio executor
|
|
|
@ -1 +0,0 @@
|
||||||
Deprecated ``ast.Suite`` node class because it's no longer used. Patch by Batuhan Taskaya.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Keep ASDL signatures in the docstrings for ``AST`` nodes. Patch by Batuhan
|
|
||||||
Taskaya
|
|
|
@ -1 +0,0 @@
|
||||||
Improve pathlib.Path compatibility on zipfile.Path and correct performance degradation as found in zipp 3.0.
|
|
|
@ -1 +0,0 @@
|
||||||
Remove :meth:`tempfile.SpooledTemporaryFile.softspace` as files no longer have the ``softspace`` attribute in Python 3. Patch by Shantanu.
|
|
|
@ -1,3 +0,0 @@
|
||||||
The :mod:`importlib` module now ignores the :envvar:`PYTHONCASEOK`
|
|
||||||
environment variable when the :option:`-E` or :option:`-I` command line
|
|
||||||
options are being used.
|
|
|
@ -1,2 +0,0 @@
|
||||||
:class:`types.MappingProxyType` objects now support the merge (``|``) operator
|
|
||||||
from :pep:`584`.
|
|
|
@ -1,4 +0,0 @@
|
||||||
The :func:`compileall.compile_dir` function's *ddir* parameter and the
|
|
||||||
compileall command line flag `-d` no longer write the wrong pathname to the
|
|
||||||
generated pyc file for submodules beneath the root of the directory tree
|
|
||||||
being compiled. This fixes a regression introduced with Python 3.5.
|
|
|
@ -1 +0,0 @@
|
||||||
Fix AttributeError when calling get_stack on a PyAsyncGenObject Task
|
|
|
@ -1,2 +0,0 @@
|
||||||
Refactor queue_manager in :class:`concurrent.futures.ProcessPoolExecutor` to
|
|
||||||
make it easier to maintain.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Change ``inspect.Signature.parameters`` back to ``collections.OrderedDict``.
|
|
||||||
This was changed to ``dict`` in Python 3.9.0a4.
|
|
|
@ -1 +0,0 @@
|
||||||
Fix runpy.run_path() when using pathlike objects
|
|
|
@ -1 +0,0 @@
|
||||||
:class:`collections.defaultdict` now implements ``|`` (:pep:`584`).
|
|
|
@ -1,2 +0,0 @@
|
||||||
Add --without-decimal-contextvar build option. This enables a thread-local
|
|
||||||
rather than a coroutine local context.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Reimplement :func:`distutils.spawn.spawn` function with the
|
|
||||||
:mod:`subprocess` module.
|
|
|
@ -1 +0,0 @@
|
||||||
Add getConnection method to logging HTTPHandler to enable custom connections.
|
|
|
@ -1 +0,0 @@
|
||||||
The hosts method on 32-bit prefix length IPv4Networks and 128-bit prefix IPv6Networks now returns a list containing the single Address instead of an empty list.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Revert "bpo-37330: open() no longer accept 'U' in file mode". The "U" mode of
|
|
||||||
open() is kept in Python 3.9 to ease transition from Python 2.7, but will be
|
|
||||||
removed in Python 3.10.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Avoid a possible *"RuntimeError: dictionary changed size during iteration"*
|
|
||||||
from :func:`inspect.getmodule` when it tried to loop through
|
|
||||||
:attr:`sys.modules`.
|
|
|
@ -1 +0,0 @@
|
||||||
Fix :mod:`json.tool` to catch :exc:`BrokenPipeError`. Patch by Dong-hee Na.
|
|
|
@ -1,3 +0,0 @@
|
||||||
Fixed :func:`ast.unparse` for extended slices containing a single element
|
|
||||||
(e.g. ``a[i:j,]``). Remove redundant tuples when index with a tuple (e.g.
|
|
||||||
``a[i, j]``).
|
|
|
@ -1,4 +0,0 @@
|
||||||
:func:`ast.dump()` no longer outputs optional fields and attributes with
|
|
||||||
default values. The default values for optional fields and attributes of
|
|
||||||
AST nodes are now set as class attributes (e.g. ``Constant.kind`` is set
|
|
||||||
to ``None``).
|
|
|
@ -1,5 +0,0 @@
|
||||||
:mod:`multiprocessing` now supports abstract socket addresses (if abstract sockets
|
|
||||||
are supported in the running platform). When creating arbitrary addresses (like when
|
|
||||||
default-constructing :class:`multiprocessing.connection.Listener` objects) abstract
|
|
||||||
sockets are preferred to avoid the case when the temporary-file-generated address is
|
|
||||||
too large for an AF_UNIX socket address. Patch by Pablo Galindo.
|
|
|
@ -1,2 +0,0 @@
|
||||||
More reliable use of ``os.scandir()`` in ``Path.glob()``. It no longer emits
|
|
||||||
a ResourceWarning when interrupted.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Fix the :meth:`random.Random.seed` method when a :class:`bool` is passed as the
|
|
||||||
seed.
|
|
|
@ -1,4 +0,0 @@
|
||||||
The ``ensurepip`` module now invokes ``pip`` via the ``runpy`` module.
|
|
||||||
Hence it is no longer tightly coupled with the internal API of the bundled
|
|
||||||
``pip`` version, allowing easier updates to a newer ``pip`` version both
|
|
||||||
internally and for distributors.
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue