mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Python 3.9.5
This commit is contained in:
parent
bb2f3ff7a8
commit
0a7dcbdb13
49 changed files with 599 additions and 208 deletions
|
@ -18,12 +18,12 @@
|
|||
/*--start constants--*/
|
||||
#define PY_MAJOR_VERSION 3
|
||||
#define PY_MINOR_VERSION 9
|
||||
#define PY_MICRO_VERSION 4
|
||||
#define PY_MICRO_VERSION 5
|
||||
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
|
||||
#define PY_RELEASE_SERIAL 0
|
||||
|
||||
/* Version as a string */
|
||||
#define PY_VERSION "3.9.4+"
|
||||
#define PY_VERSION "3.9.5"
|
||||
/*--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 Sun Apr 4 14:53:49 2021
|
||||
# Autogenerated by Sphinx on Mon May 3 16:52:46 2021
|
||||
topics = {'assert': 'The "assert" statement\n'
|
||||
'**********************\n'
|
||||
'\n'
|
||||
|
@ -986,9 +986,9 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'\n'
|
||||
'For instance bindings, the precedence of descriptor '
|
||||
'invocation depends\n'
|
||||
'on the which descriptor methods are defined. A '
|
||||
'descriptor can define\n'
|
||||
'any combination of "__get__()", "__set__()" and '
|
||||
'on which descriptor methods are defined. A descriptor '
|
||||
'can define any\n'
|
||||
'combination of "__get__()", "__set__()" and '
|
||||
'"__delete__()". If it\n'
|
||||
'does not define "__get__()", then accessing the '
|
||||
'attribute will return\n'
|
||||
|
@ -1358,6 +1358,10 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'through their "__code__" attribute. See also the '
|
||||
'"code" module.\n'
|
||||
'\n'
|
||||
'Accessing "__code__" raises an auditing event '
|
||||
'"object.__getattr__"\n'
|
||||
'with arguments "obj" and ""__code__"".\n'
|
||||
'\n'
|
||||
'A code object can be executed or evaluated by passing '
|
||||
'it (instead of a\n'
|
||||
'source string) to the "exec()" or "eval()" built-in '
|
||||
|
@ -2655,7 +2659,6 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
' decorators ::= decorator+\n'
|
||||
' decorator ::= "@" assignment_expression '
|
||||
'NEWLINE\n'
|
||||
' dotted_name ::= identifier ("." identifier)*\n'
|
||||
' parameter_list ::= defparameter ("," '
|
||||
'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
|
||||
' | parameter_list_no_posonly\n'
|
||||
|
@ -2755,7 +2758,7 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'Calls.\n'
|
||||
'A function call always assigns values to all parameters '
|
||||
'mentioned in\n'
|
||||
'the parameter list, either from position arguments, from '
|
||||
'the parameter list, either from positional arguments, from '
|
||||
'keyword\n'
|
||||
'arguments, or from default values. If the form “"*identifier"” '
|
||||
'is\n'
|
||||
|
@ -2767,8 +2770,14 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'new\n'
|
||||
'empty mapping of the same type. Parameters after “"*"” or\n'
|
||||
'“"*identifier"” are keyword-only parameters and may only be '
|
||||
'passed\n'
|
||||
'used keyword arguments.\n'
|
||||
'passed by\n'
|
||||
'keyword arguments. Parameters before “"/"” are positional-only\n'
|
||||
'parameters and may only be passed by positional arguments.\n'
|
||||
'\n'
|
||||
'Changed in version 3.8: The "/" function parameter syntax may be '
|
||||
'used\n'
|
||||
'to indicate positional-only parameters. See **PEP 570** for '
|
||||
'details.\n'
|
||||
'\n'
|
||||
'Parameters may have an *annotation* of the form “": '
|
||||
'expression"”\n'
|
||||
|
@ -5217,7 +5226,7 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'character that can be any character and defaults to a space '
|
||||
'if\n'
|
||||
'omitted. It is not possible to use a literal curly brace '
|
||||
'(“"{"” or\n'
|
||||
'(”"{"” or\n'
|
||||
'“"}"”) as the *fill* character in a formatted string '
|
||||
'literal or when\n'
|
||||
'using the "str.format()" method. However, it is possible '
|
||||
|
@ -5795,7 +5804,6 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
' decorators ::= decorator+\n'
|
||||
' decorator ::= "@" assignment_expression '
|
||||
'NEWLINE\n'
|
||||
' dotted_name ::= identifier ("." identifier)*\n'
|
||||
' parameter_list ::= defparameter ("," '
|
||||
'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
|
||||
' | parameter_list_no_posonly\n'
|
||||
|
@ -5895,7 +5903,7 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'Calls.\n'
|
||||
'A function call always assigns values to all parameters '
|
||||
'mentioned in\n'
|
||||
'the parameter list, either from position arguments, from '
|
||||
'the parameter list, either from positional arguments, from '
|
||||
'keyword\n'
|
||||
'arguments, or from default values. If the form “"*identifier"” '
|
||||
'is\n'
|
||||
|
@ -5907,8 +5915,14 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'new\n'
|
||||
'empty mapping of the same type. Parameters after “"*"” or\n'
|
||||
'“"*identifier"” are keyword-only parameters and may only be '
|
||||
'passed\n'
|
||||
'used keyword arguments.\n'
|
||||
'passed by\n'
|
||||
'keyword arguments. Parameters before “"/"” are positional-only\n'
|
||||
'parameters and may only be passed by positional arguments.\n'
|
||||
'\n'
|
||||
'Changed in version 3.8: The "/" function parameter syntax may be '
|
||||
'used\n'
|
||||
'to indicate positional-only parameters. See **PEP 570** for '
|
||||
'details.\n'
|
||||
'\n'
|
||||
'Parameters may have an *annotation* of the form “": '
|
||||
'expression"”\n'
|
||||
|
@ -6613,10 +6627,7 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'lambda': 'Lambdas\n'
|
||||
'*******\n'
|
||||
'\n'
|
||||
' lambda_expr ::= "lambda" [parameter_list] ":" '
|
||||
'expression\n'
|
||||
' lambda_expr_nocond ::= "lambda" [parameter_list] ":" '
|
||||
'expression_nocond\n'
|
||||
' lambda_expr ::= "lambda" [parameter_list] ":" expression\n'
|
||||
'\n'
|
||||
'Lambda expressions (sometimes called lambda forms) are used to '
|
||||
'create\n'
|
||||
|
@ -6896,7 +6907,7 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'\n'
|
||||
'Note that numeric literals do not include a sign; a phrase like '
|
||||
'"-1"\n'
|
||||
'is actually an expression composed of the unary operator ‘"-"‘ '
|
||||
'is actually an expression composed of the unary operator ‘"-"’ '
|
||||
'and the\n'
|
||||
'literal "1".\n',
|
||||
'numeric-types': 'Emulating numeric types\n'
|
||||
|
@ -7237,8 +7248,8 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'\n'
|
||||
'The following table summarizes the operator precedence '
|
||||
'in Python, from\n'
|
||||
'lowest precedence (least binding) to highest precedence '
|
||||
'(most\n'
|
||||
'highest precedence (most binding) to lowest precedence '
|
||||
'(least\n'
|
||||
'binding). Operators in the same box have the same '
|
||||
'precedence. Unless\n'
|
||||
'the syntax is explicitly given, operators are binary. '
|
||||
|
@ -7257,65 +7268,6 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'| Operator | '
|
||||
'Description |\n'
|
||||
'|=================================================|=======================================|\n'
|
||||
'| ":=" | '
|
||||
'Assignment expression |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "lambda" | '
|
||||
'Lambda expression |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "if" – "else" | '
|
||||
'Conditional expression |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "or" | '
|
||||
'Boolean OR |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "and" | '
|
||||
'Boolean AND |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "not" "x" | '
|
||||
'Boolean NOT |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "in", "not in", "is", "is not", "<", "<=", ">", | '
|
||||
'Comparisons, including membership |\n'
|
||||
'| ">=", "!=", "==" | '
|
||||
'tests and identity tests |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "|" | '
|
||||
'Bitwise OR |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "^" | '
|
||||
'Bitwise XOR |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "&" | '
|
||||
'Bitwise AND |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "<<", ">>" | '
|
||||
'Shifts |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "+", "-" | '
|
||||
'Addition and subtraction |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "*", "@", "/", "//", "%" | '
|
||||
'Multiplication, matrix |\n'
|
||||
'| | '
|
||||
'multiplication, division, floor |\n'
|
||||
'| | '
|
||||
'division, remainder [5] |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "+x", "-x", "~x" | '
|
||||
'Positive, negative, bitwise NOT |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "**" | '
|
||||
'Exponentiation [6] |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "await" "x" | '
|
||||
'Await expression |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "x[index]", "x[index:index]", | '
|
||||
'Subscription, slicing, call, |\n'
|
||||
'| "x(arguments...)", "x.attribute" | '
|
||||
'attribute reference |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "(expressions...)", "[expressions...]", "{key: | '
|
||||
'Binding or parenthesized expression, |\n'
|
||||
'| value...}", "{expressions...}" | list '
|
||||
|
@ -7323,6 +7275,65 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'| | '
|
||||
'display |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "x[index]", "x[index:index]", | '
|
||||
'Subscription, slicing, call, |\n'
|
||||
'| "x(arguments...)", "x.attribute" | '
|
||||
'attribute reference |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "await" "x" | '
|
||||
'Await expression |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "**" | '
|
||||
'Exponentiation [5] |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "+x", "-x", "~x" | '
|
||||
'Positive, negative, bitwise NOT |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "*", "@", "/", "//", "%" | '
|
||||
'Multiplication, matrix |\n'
|
||||
'| | '
|
||||
'multiplication, division, floor |\n'
|
||||
'| | '
|
||||
'division, remainder [6] |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "+", "-" | '
|
||||
'Addition and subtraction |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "<<", ">>" | '
|
||||
'Shifts |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "&" | '
|
||||
'Bitwise AND |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "^" | '
|
||||
'Bitwise XOR |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "|" | '
|
||||
'Bitwise OR |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "in", "not in", "is", "is not", "<", "<=", ">", | '
|
||||
'Comparisons, including membership |\n'
|
||||
'| ">=", "!=", "==" | '
|
||||
'tests and identity tests |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "not" "x" | '
|
||||
'Boolean NOT |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "and" | '
|
||||
'Boolean AND |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "or" | '
|
||||
'Boolean OR |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "if" – "else" | '
|
||||
'Conditional expression |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| "lambda" | '
|
||||
'Lambda expression |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'| ":=" | '
|
||||
'Assignment expression |\n'
|
||||
'+-------------------------------------------------+---------------------------------------+\n'
|
||||
'\n'
|
||||
'-[ Footnotes ]-\n'
|
||||
'\n'
|
||||
|
@ -7402,14 +7413,14 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'Check their\n'
|
||||
' documentation for more info.\n'
|
||||
'\n'
|
||||
'[5] The "%" operator is also used for string formatting; '
|
||||
'the same\n'
|
||||
' precedence applies.\n'
|
||||
'\n'
|
||||
'[6] The power operator "**" binds less tightly than an '
|
||||
'[5] The power operator "**" binds less tightly than an '
|
||||
'arithmetic or\n'
|
||||
' bitwise unary operator on its right, that is, '
|
||||
'"2**-1" is "0.5".\n',
|
||||
'"2**-1" is "0.5".\n'
|
||||
'\n'
|
||||
'[6] The "%" operator is also used for string formatting; '
|
||||
'the same\n'
|
||||
' precedence applies.\n',
|
||||
'pass': 'The "pass" statement\n'
|
||||
'********************\n'
|
||||
'\n'
|
||||
|
@ -7494,12 +7505,18 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'\n'
|
||||
'The "from" clause is used for exception chaining: if given, the '
|
||||
'second\n'
|
||||
'*expression* must be another exception class or instance, which '
|
||||
'will\n'
|
||||
'then be attached to the raised exception as the "__cause__" '
|
||||
'attribute\n'
|
||||
'(which is writable). If the raised exception is not handled, both\n'
|
||||
'exceptions will be printed:\n'
|
||||
'*expression* must be another exception class or instance. If the\n'
|
||||
'second expression is an exception instance, it will be attached to '
|
||||
'the\n'
|
||||
'raised exception as the "__cause__" attribute (which is writable). '
|
||||
'If\n'
|
||||
'the expression is an exception class, the class will be '
|
||||
'instantiated\n'
|
||||
'and the resulting exception instance will be attached to the '
|
||||
'raised\n'
|
||||
'exception as the "__cause__" attribute. If the raised exception is '
|
||||
'not\n'
|
||||
'handled, both exceptions will be printed:\n'
|
||||
'\n'
|
||||
' >>> try:\n'
|
||||
' ... print(1 / 0)\n'
|
||||
|
@ -8841,10 +8858,10 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'\n'
|
||||
'For instance bindings, the precedence of descriptor '
|
||||
'invocation depends\n'
|
||||
'on the which descriptor methods are defined. A descriptor '
|
||||
'can define\n'
|
||||
'any combination of "__get__()", "__set__()" and '
|
||||
'"__delete__()". If it\n'
|
||||
'on which descriptor methods are defined. A descriptor can '
|
||||
'define any\n'
|
||||
'combination of "__get__()", "__set__()" and "__delete__()". '
|
||||
'If it\n'
|
||||
'does not define "__get__()", then accessing the attribute '
|
||||
'will return\n'
|
||||
'the descriptor object itself unless there is a value in the '
|
||||
|
@ -10071,7 +10088,7 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
'*start* and\n'
|
||||
' *end* are interpreted as in slice notation.\n'
|
||||
'\n'
|
||||
'str.encode(encoding="utf-8", errors="strict")\n'
|
||||
"str.encode(encoding='utf-8', errors='strict')\n"
|
||||
'\n'
|
||||
' Return an encoded version of the string as a bytes '
|
||||
'object. Default\n'
|
||||
|
@ -11590,7 +11607,7 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
' points. All the code points in the range "U+0000 - '
|
||||
'U+10FFFF"\n'
|
||||
' can be represented in a string. Python doesn’t have a '
|
||||
'"char"\n'
|
||||
'*char*\n'
|
||||
' type; instead, every code point in the string is '
|
||||
'represented\n'
|
||||
' as a string object with length "1". The built-in '
|
||||
|
@ -12320,6 +12337,10 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
' gives the precise instruction (this is an index into the\n'
|
||||
' bytecode string of the code object).\n'
|
||||
'\n'
|
||||
' Accessing "f_code" raises an auditing event '
|
||||
'"object.__getattr__"\n'
|
||||
' with arguments "obj" and ""f_code"".\n'
|
||||
'\n'
|
||||
' Special writable attributes: "f_trace", if not "None", is a\n'
|
||||
' function called for various events during code execution '
|
||||
'(this\n'
|
||||
|
@ -12403,6 +12424,9 @@ topics = {'assert': 'The "assert" statement\n'
|
|||
' the exception occurred in a "try" statement with no matching\n'
|
||||
' except clause or with a finally clause.\n'
|
||||
'\n'
|
||||
' Accessing "tb_frame" raises an auditing event\n'
|
||||
' "object.__getattr__" with arguments "obj" and ""tb_frame"".\n'
|
||||
'\n'
|
||||
' Special writable attribute: "tb_next" is the next level in '
|
||||
'the\n'
|
||||
' stack trace (towards the frame where the exception occurred), '
|
||||
|
|
473
Misc/NEWS.d/3.9.5.rst
Normal file
473
Misc/NEWS.d/3.9.5.rst
Normal file
|
@ -0,0 +1,473 @@
|
|||
.. bpo: 43434
|
||||
.. date: 2021-05-02-17-50-23
|
||||
.. nonce: cy7xz6
|
||||
.. release date: 2021-05-03
|
||||
.. section: Security
|
||||
|
||||
Creating a :class:`sqlite3.Connection` object now also produces a
|
||||
``sqlite3.connect`` :ref:`auditing event <auditing>`. Previously this event
|
||||
was only produced by :func:`sqlite3.connect` calls. Patch by Erlend E.
|
||||
Aasland.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43882
|
||||
.. date: 2021-04-25-07-46-37
|
||||
.. nonce: Jpwx85
|
||||
.. section: Security
|
||||
|
||||
The presence of newline or tab characters in parts of a URL could allow some
|
||||
forms of attacks.
|
||||
|
||||
Following the controlling specification for URLs defined by WHATWG
|
||||
:func:`urllib.parse` now removes ASCII newlines and tabs from URLs,
|
||||
preventing such attacks.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43472
|
||||
.. date: 2021-04-21-22-53-31
|
||||
.. nonce: gjLBTb
|
||||
.. section: Security
|
||||
|
||||
Ensures interpreter-level audit hooks receive the
|
||||
``cpython.PyInterpreterState_New`` event when called through the
|
||||
``_xxsubinterpreters`` module.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 36384
|
||||
.. date: 2021-03-30-16-29-51
|
||||
.. nonce: sCAmLs
|
||||
.. section: Security
|
||||
|
||||
:mod:`ipaddress` module no longer accepts any leading zeros in IPv4 address
|
||||
strings. Leading zeros are ambiguous and interpreted as octal notation by
|
||||
some libraries. For example the legacy function :func:`socket.inet_aton`
|
||||
treats leading zeros as octal notatation. glibc implementation of modern
|
||||
:func:`~socket.inet_pton` does not accept any leading zeros. For a while the
|
||||
:mod:`ipaddress` module used to accept ambiguous leading zeros.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43075
|
||||
.. date: 2021-01-31-05-28-14
|
||||
.. nonce: DoAXqO
|
||||
.. section: Security
|
||||
|
||||
Fix Regular Expression Denial of Service (ReDoS) vulnerability in
|
||||
:class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable
|
||||
regex has quadratic worst-case complexity and it allows cause a denial of
|
||||
service when identifying crafted invalid RFCs. This ReDoS issue is on the
|
||||
client side and needs remote attackers to control the HTTP server.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 42800
|
||||
.. date: 2021-01-09-17-07-36
|
||||
.. nonce: _dtZvW
|
||||
.. section: Security
|
||||
|
||||
Audit hooks are now fired for frame.f_code, traceback.tb_frame, and
|
||||
generator code/frame attribute access.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43105
|
||||
.. date: 2021-03-31-20-35-11
|
||||
.. nonce: PBVmHm
|
||||
.. section: Core and Builtins
|
||||
|
||||
Importlib now resolves relative paths when creating module spec objects from
|
||||
file locations.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 42924
|
||||
.. date: 2021-01-13-14-06-01
|
||||
.. nonce: _WS1Ok
|
||||
.. section: Core and Builtins
|
||||
|
||||
Fix ``bytearray`` repetition incorrectly copying data from the start of the
|
||||
buffer, even if the data is offset within the buffer (e.g. after reassigning
|
||||
a slice at the start of the ``bytearray`` to a shorter byte string).
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43993
|
||||
.. date: 2021-04-30-19-23-45
|
||||
.. nonce: T7_yoq
|
||||
.. section: Library
|
||||
|
||||
Update bundled pip to 21.1.1.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43937
|
||||
.. date: 2021-04-25-13-34-13
|
||||
.. nonce: isx95l
|
||||
.. section: Library
|
||||
|
||||
Fixed the :mod:`turtle` module working with non-default root window.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43930
|
||||
.. date: 2021-04-24-14-23-07
|
||||
.. nonce: R7ah0m
|
||||
.. section: Library
|
||||
|
||||
Update bundled pip to 21.1 and setuptools to 56.0.0
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43920
|
||||
.. date: 2021-04-23-11-54-38
|
||||
.. nonce: cJMQ2D
|
||||
.. section: Library
|
||||
|
||||
OpenSSL 3.0.0: :meth:`~ssl.SSLContext.load_verify_locations` now returns a
|
||||
consistent error message when cadata contains no valid certificate.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43607
|
||||
.. date: 2021-04-22-22-39-58
|
||||
.. nonce: 7IYDkG
|
||||
.. section: Library
|
||||
|
||||
:mod:`urllib` can now convert Windows paths with ``\\?\`` prefixes into URL
|
||||
paths.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43284
|
||||
.. date: 2021-04-21-14-50-57
|
||||
.. nonce: 2QZn2T
|
||||
.. section: Library
|
||||
|
||||
platform.win32_ver derives the windows version from
|
||||
sys.getwindowsversion().platform_version which in turn derives the version
|
||||
from kernel32.dll (which can be of a different version than Windows itself).
|
||||
Therefore change the platform.win32_ver to determine the version using the
|
||||
platform module's _syscmd_ver private function to return an accurate
|
||||
version.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 42248
|
||||
.. date: 2021-04-11-21-10-57
|
||||
.. nonce: pedB1E
|
||||
.. section: Library
|
||||
|
||||
[Enum] ensure exceptions raised in ``_missing__`` are released
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43799
|
||||
.. date: 2021-04-10-11-35-50
|
||||
.. nonce: 1iV4pX
|
||||
.. section: Library
|
||||
|
||||
OpenSSL 3.0.0: define ``OPENSSL_API_COMPAT`` 1.1.1 to suppress deprecation
|
||||
warnings. Python requires OpenSSL 1.1.1 APIs.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43794
|
||||
.. date: 2021-04-09-16-14-22
|
||||
.. nonce: -1XPDH
|
||||
.. section: Library
|
||||
|
||||
Add :data:`ssl.OP_IGNORE_UNEXPECTED_EOF` constants (OpenSSL 3.0.0)
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43789
|
||||
.. date: 2021-04-09-14-08-03
|
||||
.. nonce: eaHlAm
|
||||
.. section: Library
|
||||
|
||||
OpenSSL 3.0.0: Don't call the password callback function a second time when
|
||||
first call has signaled an error condition.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43788
|
||||
.. date: 2021-04-09-12-08-01
|
||||
.. nonce: YsvInM
|
||||
.. section: Library
|
||||
|
||||
The header files for :mod:`ssl` error codes are now OpenSSL
|
||||
version-specific. Exceptions will now show correct reason and library codes.
|
||||
The ``make_ssl_data.py`` script has been rewritten to use OpenSSL's text
|
||||
file with error codes.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43655
|
||||
.. date: 2021-04-04-20-51-19
|
||||
.. nonce: LwGy8R
|
||||
.. section: Library
|
||||
|
||||
:mod:`tkinter` dialog windows are now recognized as dialogs by window
|
||||
managers on macOS and X Window.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43534
|
||||
.. date: 2021-03-18-15-46-08
|
||||
.. nonce: vPE9Us
|
||||
.. section: Library
|
||||
|
||||
:func:`turtle.textinput` and :func:`turtle.numinput` create now a transient
|
||||
window working on behalf of the canvas window.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43522
|
||||
.. date: 2021-03-16-22-37-32
|
||||
.. nonce: dhNwOu
|
||||
.. section: Library
|
||||
|
||||
Fix problem with :attr:`~ssl.SSLContext.hostname_checks_common_name`.
|
||||
OpenSSL does not copy hostflags from *struct SSL_CTX* to *struct SSL*.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 42967
|
||||
.. date: 2021-03-11-00-31-41
|
||||
.. nonce: 2PeQRw
|
||||
.. section: Library
|
||||
|
||||
Allow :class:`bytes` ``separator`` argument in ``urllib.parse.parse_qs`` and
|
||||
``urllib.parse.parse_qsl`` when parsing :class:`str` query strings.
|
||||
Previously, this raised a ``TypeError``.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43176
|
||||
.. date: 2021-02-09-07-24-29
|
||||
.. nonce: bocNQn
|
||||
.. section: Library
|
||||
|
||||
Fixed processing of a dataclass that inherits from a frozen dataclass with
|
||||
no fields. It is now correctly detected as an error.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 41735
|
||||
.. date: 2020-09-07-21-40-07
|
||||
.. nonce: NKqGKy
|
||||
.. section: Library
|
||||
|
||||
Fix thread locks in zlib module may go wrong in rare case. Patch by Ma Lin.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 36470
|
||||
.. date: 2020-06-13-23-33-32
|
||||
.. nonce: oi6Kdb
|
||||
.. section: Library
|
||||
|
||||
Fix dataclasses with ``InitVar``\s and :func:`~dataclasses.replace()`. Patch
|
||||
by Claudiu Popa.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 32745
|
||||
.. date: 2018-08-09-23-47-10
|
||||
.. nonce: iQi9hI
|
||||
.. section: Library
|
||||
|
||||
Fix a regression in the handling of ctypes' :data:`ctypes.c_wchar_p` type:
|
||||
embedded null characters would cause a :exc:`ValueError` to be raised. Patch
|
||||
by Zackery Spytz.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43959
|
||||
.. date: 2021-04-27-22-22-22
|
||||
.. nonce: n2261q
|
||||
.. section: Documentation
|
||||
|
||||
The documentation on the PyContextVar C-API was clarified.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43938
|
||||
.. date: 2021-04-25-22-44-27
|
||||
.. nonce: nC660q
|
||||
.. section: Documentation
|
||||
|
||||
Update dataclasses documentation to express that FrozenInstanceError is
|
||||
derived from AttributeError.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43755
|
||||
.. date: 2021-04-06-14-55-45
|
||||
.. nonce: 1m0fGq
|
||||
.. section: Documentation
|
||||
|
||||
Update documentation to reflect that unparenthesized lambda expressions can
|
||||
no longer be the expression part in an ``if`` clause in comprehensions and
|
||||
generator expressions since Python 3.9.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43739
|
||||
.. date: 2021-04-06-07-05-49
|
||||
.. nonce: L4HjiX
|
||||
.. section: Documentation
|
||||
|
||||
Fixing the example code in Doc/extending/extending.rst to declare and
|
||||
initialize the pmodule variable to be of the right type.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43961
|
||||
.. date: 2021-04-28-13-21-52
|
||||
.. nonce: gNchls
|
||||
.. section: Tests
|
||||
|
||||
Fix test_logging.test_namer_rotator_inheritance() on Windows: use
|
||||
:func:`os.replace` rather than :func:`os.rename`. Patch by Victor Stinner.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43842
|
||||
.. date: 2021-04-16-14-07-40
|
||||
.. nonce: w60GAH
|
||||
.. section: Tests
|
||||
|
||||
Fix a race condition in the SMTP test of test_logging. Don't close a file
|
||||
descriptor (socket) from a different thread while asyncore.loop() is polling
|
||||
the file descriptor. Patch by Victor Stinner.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43811
|
||||
.. date: 2021-04-12-11-14-28
|
||||
.. nonce: vGNbnD
|
||||
.. section: Tests
|
||||
|
||||
Tests multiple OpenSSL versions on GitHub Actions. Use ccache to speed up
|
||||
testing.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43791
|
||||
.. date: 2021-04-09-15-10-38
|
||||
.. nonce: 4KxiXK
|
||||
.. section: Tests
|
||||
|
||||
OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and 1.1. Tests
|
||||
are failing with TLSV1_ALERT_INTERNAL_ERROR.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 35306
|
||||
.. date: 2021-04-22-20-39-49
|
||||
.. nonce: F0Cg6X
|
||||
.. section: Windows
|
||||
|
||||
Avoid raising errors from :meth:`pathlib.Path.exists()` when passed an
|
||||
invalid filename.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 38822
|
||||
.. date: 2021-04-22-19-49-20
|
||||
.. nonce: jgdPmq
|
||||
.. section: Windows
|
||||
|
||||
Fixed :func:`os.stat` failing on inaccessible directories with a trailing
|
||||
slash, rather than falling back to the parent directory's metadata. This
|
||||
implicitly affected :func:`os.path.exists` and :func:`os.path.isdir`.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 26227
|
||||
.. date: 2021-04-21-23-37-34
|
||||
.. nonce: QMY_eA
|
||||
.. section: Windows
|
||||
|
||||
Fixed decoding of host names in :func:`socket.gethostbyaddr` and
|
||||
:func:`socket.gethostbyname_ex`.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 40432
|
||||
.. date: 2021-04-20-23-07-22
|
||||
.. nonce: 9OFpoq
|
||||
.. section: Windows
|
||||
|
||||
Updated pegen regeneration script on Windows to find and use Python 3.8 or
|
||||
higher. Prior to this, pegen regeneration already required 3.8 or higher,
|
||||
but the script may have used lower versions of Python.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43745
|
||||
.. date: 2021-04-06-12-27-33
|
||||
.. nonce: rdKNda
|
||||
.. section: Windows
|
||||
|
||||
Actually updates Windows release to OpenSSL 1.1.1k. Earlier releases were
|
||||
mislabelled and actually included 1.1.1i again.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43492
|
||||
.. date: 2021-03-15-11-34-33
|
||||
.. nonce: AsYnVX
|
||||
.. section: Windows
|
||||
|
||||
Upgrade Windows installer to use SQLite 3.35.5.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 42119
|
||||
.. date: 2021-05-02-21-03-27
|
||||
.. nonce: Y7BSX_
|
||||
.. section: macOS
|
||||
|
||||
Fix check for macOS SDK paths when building Python. Narrow search to match
|
||||
contents of SDKs, namely only files in ``/System/Library``,
|
||||
``/System/IOSSupport``, and ``/usr`` other than ``/usr/local``. Previously,
|
||||
anything under ``/System`` was assumed to be in an SDK which causes problems
|
||||
with the new file system layout in 10.15+ where user file systems may appear
|
||||
to be mounted under ``/System``. Paths in ``/Library`` were also
|
||||
incorrectly treated as SDK locations.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 44009
|
||||
.. date: 2021-05-02-03-45-30
|
||||
.. nonce: uvhmlh
|
||||
.. section: macOS
|
||||
|
||||
Provide "python3.x-intel64" executable to allow reliably forcing macOS
|
||||
universal2 framework builds to run under Rosetta 2 Intel-64 emulation on
|
||||
Apple Silicon Macs. This can be useful for testing or when universal2
|
||||
wheels are not yet available.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43492
|
||||
.. date: 2021-03-15-11-32-23
|
||||
.. nonce: 1ZRcV9
|
||||
.. section: macOS
|
||||
|
||||
Update macOS installer to use SQLite 3.35.4.
|
||||
|
||||
..
|
||||
|
||||
.. bpo: 43655
|
||||
.. date: 2021-04-04-20-52-07
|
||||
.. nonce: HSyaKH
|
||||
.. section: IDLE
|
||||
|
||||
IDLE dialog windows are now recognized as dialogs by window managers on
|
||||
macOS and X Window.
|
|
@ -1 +0,0 @@
|
|||
Fix ``bytearray`` repetition incorrectly copying data from the start of the buffer, even if the data is offset within the buffer (e.g. after reassigning a slice at the start of the ``bytearray`` to a shorter byte string).
|
|
@ -1,2 +0,0 @@
|
|||
Importlib now resolves relative paths when creating module spec objects from
|
||||
file locations.
|
|
@ -1 +0,0 @@
|
|||
Fixing the example code in Doc/extending/extending.rst to declare and initialize the pmodule variable to be of the right type.
|
|
@ -1,3 +0,0 @@
|
|||
Update documentation to reflect that unparenthesized lambda expressions can
|
||||
no longer be the expression part in an ``if`` clause in comprehensions and
|
||||
generator expressions since Python 3.9.
|
|
@ -1,2 +0,0 @@
|
|||
Update dataclasses documentation to express that FrozenInstanceError is
|
||||
derived from AttributeError.
|
|
@ -1 +0,0 @@
|
|||
The documentation on the PyContextVar C-API was clarified.
|
|
@ -1,2 +0,0 @@
|
|||
IDLE dialog windows are now recognized as dialogs by window managers on
|
||||
macOS and X Window.
|
|
@ -1,3 +0,0 @@
|
|||
Fix a regression in the handling of ctypes' :data:`ctypes.c_wchar_p` type:
|
||||
embedded null characters would cause a :exc:`ValueError` to be raised. Patch
|
||||
by Zackery Spytz.
|
|
@ -1,2 +0,0 @@
|
|||
Fix dataclasses with ``InitVar``\s and :func:`~dataclasses.replace()`. Patch
|
||||
by Claudiu Popa.
|
|
@ -1 +0,0 @@
|
|||
Fix thread locks in zlib module may go wrong in rare case. Patch by Ma Lin.
|
|
@ -1 +0,0 @@
|
|||
Fixed processing of a dataclass that inherits from a frozen dataclass with no fields. It is now correctly detected as an error.
|
|
@ -1,3 +0,0 @@
|
|||
Allow :class:`bytes` ``separator`` argument in ``urllib.parse.parse_qs`` and
|
||||
``urllib.parse.parse_qsl`` when parsing :class:`str` query strings. Previously,
|
||||
this raised a ``TypeError``.
|
|
@ -1 +0,0 @@
|
|||
Fix problem with :attr:`~ssl.SSLContext.hostname_checks_common_name`. OpenSSL does not copy hostflags from *struct SSL_CTX* to *struct SSL*.
|
|
@ -1,2 +0,0 @@
|
|||
:func:`turtle.textinput` and :func:`turtle.numinput` create now a transient
|
||||
window working on behalf of the canvas window.
|
|
@ -1,2 +0,0 @@
|
|||
:mod:`tkinter` dialog windows are now recognized as dialogs by window
|
||||
managers on macOS and X Window.
|
|
@ -1,4 +0,0 @@
|
|||
The header files for :mod:`ssl` error codes are now OpenSSL
|
||||
version-specific. Exceptions will now show correct reason and library
|
||||
codes. The ``make_ssl_data.py`` script has been rewritten to use OpenSSL's
|
||||
text file with error codes.
|
|
@ -1,2 +0,0 @@
|
|||
OpenSSL 3.0.0: Don't call the password callback function a second time when
|
||||
first call has signaled an error condition.
|
|
@ -1 +0,0 @@
|
|||
Add :data:`ssl.OP_IGNORE_UNEXPECTED_EOF` constants (OpenSSL 3.0.0)
|
|
@ -1,2 +0,0 @@
|
|||
OpenSSL 3.0.0: define ``OPENSSL_API_COMPAT`` 1.1.1 to suppress deprecation
|
||||
warnings. Python requires OpenSSL 1.1.1 APIs.
|
|
@ -1 +0,0 @@
|
|||
[Enum] ensure exceptions raised in ``_missing__`` are released
|
|
@ -1,6 +0,0 @@
|
|||
platform.win32_ver derives the windows version from
|
||||
sys.getwindowsversion().platform_version which in turn derives the version
|
||||
from kernel32.dll (which can be of a different version than Windows itself).
|
||||
Therefore change the platform.win32_ver to determine the version using the
|
||||
platform module's _syscmd_ver private function to return an accurate
|
||||
version.
|
|
@ -1,2 +0,0 @@
|
|||
:mod:`urllib` can now convert Windows paths with ``\\?\`` prefixes into URL
|
||||
paths.
|
|
@ -1,2 +0,0 @@
|
|||
OpenSSL 3.0.0: :meth:`~ssl.SSLContext.load_verify_locations` now returns a
|
||||
consistent error message when cadata contains no valid certificate.
|
|
@ -1 +0,0 @@
|
|||
Update bundled pip to 21.1 and setuptools to 56.0.0
|
|
@ -1 +0,0 @@
|
|||
Fixed the :mod:`turtle` module working with non-default root window.
|
|
@ -1 +0,0 @@
|
|||
Update bundled pip to 21.1.1.
|
|
@ -1 +0,0 @@
|
|||
Audit hooks are now fired for frame.f_code, traceback.tb_frame, and generator code/frame attribute access.
|
|
@ -1 +0,0 @@
|
|||
Fix Regular Expression Denial of Service (ReDoS) vulnerability in :class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server.
|
|
@ -1,6 +0,0 @@
|
|||
:mod:`ipaddress` module no longer accepts any leading zeros in IPv4 address
|
||||
strings. Leading zeros are ambiguous and interpreted as octal notation by
|
||||
some libraries. For example the legacy function :func:`socket.inet_aton`
|
||||
treats leading zeros as octal notatation. glibc implementation of modern
|
||||
:func:`~socket.inet_pton` does not accept any leading zeros. For a while
|
||||
the :mod:`ipaddress` module used to accept ambiguous leading zeros.
|
|
@ -1,3 +0,0 @@
|
|||
Ensures interpreter-level audit hooks receive the
|
||||
``cpython.PyInterpreterState_New`` event when called through the
|
||||
``_xxsubinterpreters`` module.
|
|
@ -1,6 +0,0 @@
|
|||
The presence of newline or tab characters in parts of a URL could allow
|
||||
some forms of attacks.
|
||||
|
||||
Following the controlling specification for URLs defined by WHATWG
|
||||
:func:`urllib.parse` now removes ASCII newlines and tabs from URLs,
|
||||
preventing such attacks.
|
|
@ -1,4 +0,0 @@
|
|||
Creating a :class:`sqlite3.Connection` object now also produces
|
||||
a ``sqlite3.connect`` :ref:`auditing event <auditing>`.
|
||||
Previously this event was only produced by :func:`sqlite3.connect`
|
||||
calls. Patch by Erlend E. Aasland.
|
|
@ -1,2 +0,0 @@
|
|||
OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and 1.1. Tests
|
||||
are failing with TLSV1_ALERT_INTERNAL_ERROR.
|
|
@ -1,2 +0,0 @@
|
|||
Tests multiple OpenSSL versions on GitHub Actions. Use ccache to speed up
|
||||
testing.
|
|
@ -1,4 +0,0 @@
|
|||
Fix a race condition in the SMTP test of test_logging. Don't close a file
|
||||
descriptor (socket) from a different thread while asyncore.loop() is polling
|
||||
the file descriptor.
|
||||
Patch by Victor Stinner.
|
|
@ -1,2 +0,0 @@
|
|||
Fix test_logging.test_namer_rotator_inheritance() on Windows: use
|
||||
:func:`os.replace` rather than :func:`os.rename`. Patch by Victor Stinner.
|
|
@ -1 +0,0 @@
|
|||
Upgrade Windows installer to use SQLite 3.35.5.
|
|
@ -1,2 +0,0 @@
|
|||
Actually updates Windows release to OpenSSL 1.1.1k. Earlier releases were
|
||||
mislabelled and actually included 1.1.1i again.
|
|
@ -1,3 +0,0 @@
|
|||
Updated pegen regeneration script on Windows to find and use Python 3.8 or
|
||||
higher. Prior to this, pegen regeneration already required 3.8 or higher,
|
||||
but the script may have used lower versions of Python.
|
|
@ -1,2 +0,0 @@
|
|||
Fixed decoding of host names in :func:`socket.gethostbyaddr` and
|
||||
:func:`socket.gethostbyname_ex`.
|
|
@ -1,3 +0,0 @@
|
|||
Fixed :func:`os.stat` failing on inaccessible directories with a trailing
|
||||
slash, rather than falling back to the parent directory's metadata. This
|
||||
implicitly affected :func:`os.path.exists` and :func:`os.path.isdir`.
|
|
@ -1,2 +0,0 @@
|
|||
Avoid raising errors from :meth:`pathlib.Path.exists()` when passed an
|
||||
invalid filename.
|
|
@ -1 +0,0 @@
|
|||
Update macOS installer to use SQLite 3.35.4.
|
|
@ -1,4 +0,0 @@
|
|||
Provide "python3.x-intel64" executable to allow reliably forcing macOS
|
||||
universal2 framework builds to run under Rosetta 2 Intel-64 emulation on
|
||||
Apple Silicon Macs. This can be useful for testing or when universal2
|
||||
wheels are not yet available.
|
|
@ -1,7 +0,0 @@
|
|||
Fix check for macOS SDK paths when building Python. Narrow search to match
|
||||
contents of SDKs, namely only files in ``/System/Library``,
|
||||
``/System/IOSSupport``, and ``/usr`` other than ``/usr/local``. Previously,
|
||||
anything under ``/System`` was assumed to be in an SDK which causes problems
|
||||
with the new file system layout in 10.15+ where user file systems may appear
|
||||
to be mounted under ``/System``. Paths in ``/Library`` were also
|
||||
incorrectly treated as SDK locations.
|
|
@ -1,4 +1,4 @@
|
|||
This is Python version 3.9.4
|
||||
This is Python version 3.9.5
|
||||
============================
|
||||
|
||||
.. image:: https://travis-ci.org/python/cpython.svg?branch=3.9
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue