mirror of
https://github.com/AdaCore/cpython.git
synced 2026-02-12 12:57:15 -08:00
Merge tag 'v3.9.0a5'
Python 3.9.0a5
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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'
|
||||
'**Programmer’s 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'
|
||||
'**Programmer’s 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
1310
Misc/NEWS.d/3.9.0a5.rst
Normal file
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.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user