Merge tag 'v3.9.0a5'

Python 3.9.0a5
This commit is contained in:
Łukasz Langa
2020-03-23 23:00:18 +01:00
129 changed files with 1381 additions and 315 deletions

View File

@@ -20,10 +20,10 @@
#define PY_MINOR_VERSION 9
#define PY_MICRO_VERSION 0
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA
#define PY_RELEASE_SERIAL 4
#define PY_RELEASE_SERIAL 5
/* Version as a string */
#define PY_VERSION "3.9.0a4+"
#define PY_VERSION "3.9.0a5"
/*--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 Tue Feb 25 13:20:31 2020
# Autogenerated by Sphinx on Mon Mar 23 17:18:04 2020
topics = {'assert': 'The "assert" statement\n'
'**********************\n'
'\n'
@@ -1476,8 +1476,8 @@ topics = {'assert': 'The "assert" statement\n'
' | starred_and_keywords ["," '
'keywords_arguments]\n'
' | keywords_arguments\n'
' positional_arguments ::= ["*"] expression ("," ["*"] '
'expression)*\n'
' positional_arguments ::= positional_item ("," positional_item)*\n'
' positional_item ::= assignment_expression | "*" expression\n'
' starred_and_keywords ::= ("*" expression | keyword_item)\n'
' ("," "*" expression | "," '
'keyword_item)*\n'
@@ -1717,6 +1717,10 @@ topics = {'assert': 'The "assert" statement\n'
'for\n'
'function decorators. The result is then bound to the class name.\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'
'**Programmers note:** Variables defined in the class definition '
'are\n'
'class attributes; they are shared by instances. Instance '
@@ -2187,8 +2191,8 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'The "if" statement is used for conditional execution:\n'
'\n'
' if_stmt ::= "if" expression ":" suite\n'
' ("elif" expression ":" suite)*\n'
' if_stmt ::= "if" assignment_expression ":" suite\n'
' ("elif" assignment_expression ":" suite)*\n'
' ["else" ":" suite]\n'
'\n'
'It selects exactly one of the suites by evaluating the '
@@ -2211,7 +2215,7 @@ topics = {'assert': 'The "assert" statement\n'
'an\n'
'expression is true:\n'
'\n'
' while_stmt ::= "while" expression ":" suite\n'
' while_stmt ::= "while" assignment_expression ":" suite\n'
' ["else" ":" suite]\n'
'\n'
'This repeatedly tests the expression and, if it is true, '
@@ -2626,8 +2630,8 @@ topics = {'assert': 'The "assert" statement\n'
'[parameter_list] ")"\n'
' ["->" expression] ":" suite\n'
' decorators ::= decorator+\n'
' decorator ::= "@" dotted_name ["(" '
'[argument_list [","]] ")"] NEWLINE\n'
' decorator ::= "@" assignment_expression '
'NEWLINE\n'
' dotted_name ::= identifier ("." identifier)*\n'
' parameter_list ::= defparameter ("," '
'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
@@ -2681,6 +2685,11 @@ topics = {'assert': 'The "assert" statement\n'
'the name\n'
'"func".\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'
'*expression*, the function is said to have “default parameter '
'values.”\n'
@@ -2882,6 +2891,10 @@ topics = {'assert': 'The "assert" statement\n'
'function decorators. The result is then bound to the class '
'name.\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'
'**Programmers note:** Variables defined in the class definition '
'are\n'
'class attributes; they are shared by instances. Instance '
@@ -4403,8 +4416,8 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'The "if" statement is used for conditional execution:\n'
'\n'
' if_stmt ::= "if" expression ":" suite\n'
' ("elif" expression ":" suite)*\n'
' if_stmt ::= "if" assignment_expression ":" suite\n'
' ("elif" assignment_expression ":" suite)*\n'
' ["else" ":" suite]\n'
'\n'
'It selects exactly one of the suites by evaluating the expressions '
@@ -4824,7 +4837,7 @@ topics = {'assert': 'The "assert" statement\n'
'[","]\n'
' starred_expression ::= expression | (starred_item ",")* '
'[starred_item]\n'
' starred_item ::= expression | "*" or_expr\n'
' starred_item ::= assignment_expression | "*" or_expr\n'
'\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 '
@@ -5134,11 +5147,11 @@ topics = {'assert': 'The "assert" statement\n'
'only\n'
'supported by the numeric types.\n'
'\n'
'A general convention is that an empty format string ("""") '
'A general convention is that an empty format specification '
'produces\n'
'the same result as if you had called "str()" on the value. '
'A non-empty\n'
'format string typically modifies the result.\n'
'format specification typically modifies the result.\n'
'\n'
'The general form of a *standard format specifier* is:\n'
'\n'
@@ -5693,8 +5706,8 @@ topics = {'assert': 'The "assert" statement\n'
'[parameter_list] ")"\n'
' ["->" expression] ":" suite\n'
' decorators ::= decorator+\n'
' decorator ::= "@" dotted_name ["(" '
'[argument_list [","]] ")"] NEWLINE\n'
' decorator ::= "@" assignment_expression '
'NEWLINE\n'
' dotted_name ::= identifier ("." identifier)*\n'
' parameter_list ::= defparameter ("," '
'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
@@ -5748,6 +5761,11 @@ topics = {'assert': 'The "assert" statement\n'
'the name\n'
'"func".\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'
'*expression*, the function is said to have “default parameter '
'values.”\n'
@@ -6119,8 +6137,8 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'The "if" statement is used for conditional execution:\n'
'\n'
' if_stmt ::= "if" expression ":" suite\n'
' ("elif" expression ":" suite)*\n'
' if_stmt ::= "if" assignment_expression ":" suite\n'
' ("elif" assignment_expression ":" suite)*\n'
' ["else" ":" suite]\n'
'\n'
'It selects exactly one of the suites by evaluating the expressions '
@@ -9018,7 +9036,7 @@ topics = {'assert': 'The "assert" statement\n'
'\n'
'If the metaclass has no "__prepare__" attribute, then the '
'class\n'
'namespace is initialised as an empty "dict()".\n'
'namespace is initialised as an empty ordered mapping.\n'
'\n'
'See also:\n'
'\n'
@@ -11196,10 +11214,17 @@ topics = {'assert': 'The "assert" statement\n'
'for\n'
' the operands provided. (The interpreter will then try 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'
' See Implementing the arithmetic operations for more details.\n'
'\n'
' Changed in version 3.9: Evaluating "NotImplemented" in a '
'boolean\n'
' context is deprecated. While it currently evaluates as true, it\n'
' will emit a "DeprecationWarning". It will raise a "TypeError" in '
'a\n'
' future version of Python.\n'
'\n'
'Ellipsis\n'
' This type has a single value. There is a single object with '
'this\n'
@@ -12487,6 +12512,29 @@ topics = {'assert': 'The "assert" statement\n'
' >>> d.values() == d.values()\n'
' False\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 '
'same "(key,\n'
' 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'
'expression is true:\n'
'\n'
' while_stmt ::= "while" expression ":" suite\n'
' while_stmt ::= "while" assignment_expression ":" suite\n'
' ["else" ":" suite]\n'
'\n'
'This repeatedly tests the expression and, if it is true, executes '

1310
Misc/NEWS.d/3.9.0a5.rst Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -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.

View File

@@ -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.

View File

@@ -1 +0,0 @@
Fix build with DTrace but without additional DFLAGS.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -1,2 +0,0 @@
:c:func:`PyNumber_ToBase` now raises a :exc:`SystemError` instead of
crashing when called with invalid base.

View File

@@ -1,2 +0,0 @@
:c:macro:`Py_UNREACHABLE` is now implemented with
``__builtin_unreachable()`` and analogs in release mode.

View File

@@ -1,3 +0,0 @@
Deprecated :c:func:`PyEval_InitThreads` and
:c:func:`PyEval_ThreadsInitialized`. Calling :c:func:`PyEval_InitThreads` now
does nothing.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -1 +0,0 @@
Add :c:func:`PyInterpreterState_Get` function to the limited C API.

View File

@@ -1,2 +0,0 @@
Add :c:func:`PyThreadState_GetInterpreter`: get the interpreter of a Python
thread state.

View File

@@ -1 +0,0 @@
Add _PyArg_NoKwnames helper function. Patch by Dong-hee Na.

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