.. bpo: 39427
.. date: 2020-01-22-22-28-04
.. nonce: LiO-Eo
.. release date: 2020-01-24
.. section: Core and Builtins

Document all possibilities for the ``-X`` options in the command line help
section. Patch by Pablo Galindo.

..

.. bpo: 39421
.. date: 2020-01-22-15-53-37
.. nonce: O3nG7u
.. section: Core and Builtins

Fix possible crashes when operating with the functions in the :mod:`heapq`
module and custom comparison operators.

..

.. bpo: 39386
.. date: 2020-01-20-21-40-57
.. nonce: ULqD8t
.. section: Core and Builtins

Prevent double awaiting of async iterator.

..

.. bpo: 17005
.. date: 2020-01-17-00-00-58
.. nonce: nTSxsy
.. section: Core and Builtins

Add :class:`functools.TopologicalSorter` to the :mod:`functools` module to
offers functionality to perform topological sorting of graphs. Patch by
Pablo Galindo, Tim Peters and Larry Hastings.

..

.. bpo: 39320
.. date: 2020-01-15-15-33-44
.. nonce: b4hnJW
.. section: Core and Builtins

Replace four complex bytecodes for building sequences with three simpler
ones.

The following four bytecodes have been removed:

* BUILD_LIST_UNPACK
* BUILD_TUPLE_UNPACK
* BUILD_SET_UNPACK
* BUILD_TUPLE_UNPACK_WITH_CALL

The following three bytecodes have been added:

* LIST_TO_TUPLE
* LIST_EXTEND
* SET_UPDATE

..

.. bpo: 39336
.. date: 2020-01-15-01-39-29
.. nonce: nJ7W9I
.. section: Core and Builtins

Import loaders which publish immutable module objects can now publish
immutable packages in addition to individual modules.

..

.. bpo: 39322
.. date: 2020-01-13-15-18-13
.. nonce: aAs-1T
.. section: Core and Builtins

Added a new function :func:`gc.is_finalized` to check if an object has been
finalized by the garbage collector. Patch by Pablo Galindo.

..

.. bpo: 39048
.. date: 2020-01-13-14-45-22
.. nonce: iPsj81
.. section: Core and Builtins

Improve the displayed error message when incorrect types are passed to
``async with`` statements by looking up the :meth:`__aenter__` special
method before the :meth:`__aexit__` special method when entering an
asynchronous context manager. Patch by Géry Ogam.

..

.. bpo: 39235
.. date: 2020-01-09-10-01-18
.. nonce: RYwjoc
.. section: Core and Builtins

Fix AST end location for lone generator expression in function call, e.g.
f(i for i in a).

..

.. bpo: 39209
.. date: 2020-01-06-10-29-16
.. nonce: QHAONe
.. section: Core and Builtins

Correctly handle multi-line tokens in interactive mode. Patch by Pablo
Galindo.

..

.. bpo: 1635741
.. date: 2020-01-05-13-40-08
.. nonce: QRTJVC
.. section: Core and Builtins

Port _json extension module to multiphase initialization (:pep:`489`).

..

.. bpo: 39216
.. date: 2020-01-05-06-55-52
.. nonce: 74jLh9
.. section: Core and Builtins

Fix constant folding optimization for positional only arguments - by Anthony
Sottile.

..

.. bpo: 39215
.. date: 2020-01-04-17-25-34
.. nonce: xiqiIz
.. section: Core and Builtins

Fix ``SystemError`` when nested function has annotation on positional-only
argument - by Anthony Sottile.

..

.. bpo: 39200
.. date: 2020-01-04-01-14-32
.. nonce: 8Z9DYp
.. section: Core and Builtins

Correct the error message when calling the :func:`min` or :func:`max` with
no arguments. Patch by Donghee Na.

..

.. bpo: 39200
.. date: 2020-01-03-14-50-14
.. nonce: Ip2_iI
.. section: Core and Builtins

Correct the error message when trying to construct :class:`range` objects
with no arguments. Patch by Pablo Galindo.

..

.. bpo: 39166
.. date: 2020-01-02-22-22-03
.. nonce: Qt-UeD
.. section: Core and Builtins

Fix incorrect line execution reporting in trace functions when tracing the
last iteration of asynchronous for loops. Patch by Pablo Galindo.

..

.. bpo: 39114
.. date: 2019-12-31-18-25-45
.. nonce: WG9alt
.. section: Core and Builtins

Fix incorrect line execution reporting in trace functions when tracing
exception handlers with name binding. Patch by Pablo Galindo.

..

.. bpo: 39156
.. date: 2019-12-30-10-53-59
.. nonce: veT-CB
.. section: Core and Builtins

Split the COMPARE_OP bytecode instruction into four distinct instructions.

*  COMPARE_OP for rich comparisons
*  IS_OP for 'is' and 'is not' tests
*  CONTAINS_OP for 'in' and 'is not' tests
*  JUMP_IF_NOT_EXC_MATCH for checking exceptions in 'try-except' statements.

This improves the clarity of the interpreter and should provide a modest
speedup.

..

.. bpo: 38588
.. date: 2019-12-29-19-13-54
.. nonce: pgXnNS
.. section: Core and Builtins

Fix possible crashes in dict and list when calling
:c:func:`PyObject_RichCompareBool`.

..

.. bpo: 13601
.. date: 2019-12-17-22-32-11
.. nonce: vNP4LC
.. section: Core and Builtins

By default, ``sys.stderr`` is line-buffered now, even if ``stderr`` is
redirected to a file. You can still make ``sys.stderr`` unbuffered by
passing the :option:`-u` command-line option or setting the
:envvar:`PYTHONUNBUFFERED` environment variable.

(Contributed by Jendrik Seipp in bpo-13601.)

..

.. bpo: 38610
.. date: 2019-10-31-14-30-39
.. nonce: fHdVMS
.. section: Core and Builtins

Fix possible crashes in several list methods by holding strong references to
list elements when calling :c:func:`PyObject_RichCompareBool`.

..

.. bpo: 32021
.. date: 2019-03-11-13-30-40
.. nonce: dpbtkP
.. section: Core and Builtins

Include brotli .br encoding in mimetypes encodings_map

..

.. bpo: 39430
.. date: 2020-01-24-11-05-21
.. nonce: I0UQzM
.. section: Library

Fixed race condition in lazy imports in :mod:`tarfile`.

..

.. bpo: 39413
.. date: 2020-01-24-10-10-25
.. nonce: 7XYDM8
.. section: Library

The :func:`os.unsetenv` function is now also available on Windows.

..

.. bpo: 39390
.. date: 2020-01-23-21-34-29
.. nonce: D2tSXk
.. section: Library

Fixed a regression with the ``ignore`` callback of :func:`shutil.copytree`.
The argument types are now ``str`` and ``List[str]`` again.

..

.. bpo: 39395
.. date: 2020-01-23-03-05-41
.. nonce: 4dda42
.. section: Library

The :func:`os.putenv` and :func:`os.unsetenv` functions are now always
available.

..

.. bpo: 39406
.. date: 2020-01-22-21-18-58
.. nonce: HMpe8x
.. section: Library

If ``setenv()`` C function is available, :func:`os.putenv` is now
implemented with ``setenv()`` instead of ``putenv()``, so Python doesn't
have to handle the environment variable memory.

..

.. bpo: 39396
.. date: 2020-01-21-09-00-42
.. nonce: 6UXQXE
.. section: Library

Fix ``math.nextafter(-0.0, +0.0)`` on AIX 7.1.

..

.. bpo: 29435
.. date: 2020-01-20-18-48-00
.. nonce: qqJ2Ax
.. section: Library

Allow :func:`tarfile.is_tarfile` to be used with file and file-like objects,
like :func:`zipfile.is_zipfile`. Patch by William Woodruff.

..

.. bpo: 39377
.. date: 2020-01-20-13-00-35
.. nonce: QSFdaU
.. section: Library

Removed ``encoding`` option from :func:`json.loads`.  It has been deprecated
since Python 3.1.

..

.. bpo: 39389
.. date: 2020-01-20-00-56-01
.. nonce: fEirIS
.. section: Library

Write accurate compression level metadata in :mod:`gzip` archives, rather
than always signaling maximum compression.

..

.. bpo: 39366
.. date: 2020-01-17-18-14-51
.. nonce: Cv3NQS
.. section: Library

The previously deprecated ``xpath()`` and ``xgtitle()`` methods of
:class:`!nntplib.NNTP` have been removed.

..

.. bpo: 39357
.. date: 2020-01-16-11-24-00
.. nonce: bCwx-h
.. section: Library

Remove the *buffering* parameter of :class:`bz2.BZ2File`. Since Python 3.0,
it was ignored and using it was emitting :exc:`DeprecationWarning`. Pass an
open file object, to control how the file is opened. The *compresslevel*
parameter becomes keyword-only.

..

.. bpo: 39353
.. date: 2020-01-16-10-21-48
.. nonce: ntp7Ql
.. section: Library

Deprecate binhex4 and hexbin4 standards. Deprecate the :mod:`binhex` module
and the following :mod:`binascii` functions: :func:`~binascii.b2a_hqx`,
:func:`~binascii.a2b_hqx`, :func:`~binascii.rlecode_hqx`,
:func:`~binascii.rledecode_hqx`, :func:`~binascii.crc_hqx`.

..

.. bpo: 39351
.. date: 2020-01-16-09-27-28
.. nonce: a-FQdv
.. section: Library

Remove ``base64.encodestring()`` and ``base64.decodestring()``, aliases
deprecated since Python 3.1: use :func:`base64.encodebytes` and
:func:`base64.decodebytes` instead.

..

.. bpo: 39350
.. date: 2020-01-16-09-15-40
.. nonce: ZQx0uY
.. section: Library

Remove ``fractions.gcd()`` function, deprecated since Python 3.5
(:issue:`22486`): use :func:`math.gcd` instead.

..

.. bpo: 39329
.. date: 2020-01-14-22-16-07
.. nonce: 6OKGBn
.. section: Library

:class:`~smtplib.LMTP` constructor now has an optional *timeout* parameter.
Patch by Donghee Na.

..

.. bpo: 39313
.. date: 2020-01-12-18-17-00
.. nonce: DCTsnm
.. section: Library

Add a new ``exec_function`` option (*--exec-function* in the CLI) to
``RefactoringTool`` for making ``exec`` a function. Patch by Batuhan
Taskaya.

..

.. bpo: 39259
.. date: 2020-01-12-17-19-40
.. nonce: iax06r
.. section: Library

:class:`~ftplib.FTP_TLS` and :class:`~ftplib.FTP_TLS` now raise a
:class:`ValueError` if the given timeout for their constructor is zero to
prevent the creation of a non-blocking socket. Patch by Donghee Na.

..

.. bpo: 39259
.. date: 2020-01-12-16-34-28
.. nonce: J_yBVq
.. section: Library

:class:`~smtplib.SMTP` and :class:`~smtplib.SMTP_SSL` now raise a
:class:`ValueError` if the given timeout for their constructor is zero to
prevent the creation of a non-blocking socket. Patch by Donghee Na.

..

.. bpo: 39310
.. date: 2020-01-12-13-34-42
.. nonce: YMRdcj
.. section: Library

Add :func:`math.ulp`: return the value of the least significant bit of a
float.

..

.. bpo: 39297
.. date: 2020-01-11-01-15-37
.. nonce: y98Z6Q
.. section: Library

Improved performance of importlib.metadata distribution discovery and
resilients to inaccessible sys.path entries (importlib_metadata v1.4.0).

..

.. bpo: 39259
.. date: 2020-01-11-00-32-45
.. nonce: _S5VjC
.. section: Library

:class:`!NNTP` and :class:`!NNTP_SSL` now raise a
:class:`ValueError` if the given timeout for their constructor is zero to
prevent the creation of a non-blocking socket. Patch by Donghee Na.

..

.. bpo: 38901
.. date: 2020-01-10-22-30-48
.. nonce: OdVIIb
.. section: Library

When you specify prompt='.' or equivalently python -m venv --prompt . ...
the basename of the current directory is used to set the created venv's
prompt when it's activated.

..

.. bpo: 39288
.. date: 2020-01-10-16-52-09
.. nonce: IB-aQX
.. section: Library

Add :func:`math.nextafter`: return the next floating-point value after *x*
towards *y*.

..

.. bpo: 39259
.. date: 2020-01-09-10-58-58
.. nonce: RmDgCC
.. section: Library

:class:`~poplib.POP3` and :class:`~poplib.POP3_SSL` now raise a
:class:`ValueError` if the given timeout for their constructor is zero to
prevent the creation of a non-blocking socket. Patch by Donghee Na.

..

.. bpo: 39242
.. date: 2020-01-08-23-25-27
.. nonce: bnL65N
.. section: Library

Updated the Gmane domain from news.gmane.org to news.gmane.io which is used
for examples of :class:`!NNTP` news reader server and nntplib tests.

..

.. bpo: 35292
.. date: 2020-01-08-14-39-19
.. nonce: ihRT1z
.. section: Library

Proxy the ``SimpleHTTPRequestHandler.guess_type`` to ``mimetypes.guess_type`` so
the ``mimetypes.init`` is called lazily to avoid unnecessary costs when
:mod:`http.server` module is imported.

..

.. bpo: 39239
.. date: 2020-01-07-01-02-44
.. nonce: r7vecs
.. section: Library

The :meth:`select.epoll.unregister` method no longer ignores the
:data:`~errno.EBADF` error.

..

.. bpo: 38907
.. date: 2020-01-06-02-14-38
.. nonce: F1RkCR
.. section: Library

In http.server script, restore binding to IPv4 on Windows.

..

.. bpo: 39152
.. date: 2020-01-03-18-02-50
.. nonce: JgPjCC
.. section: Library

Fix ttk.Scale.configure([name]) to return configuration tuple for name or
all options.  Giovanni Lombardo contributed part of the patch.

..

.. bpo: 39198
.. date: 2020-01-02-20-21-03
.. nonce: nzwGyG
.. section: Library

If an exception were to be thrown in ``Logger.isEnabledFor`` (say, by asyncio
timeouts or stopit) , the ``logging`` global lock may not be released
appropriately, resulting in deadlock.  This change wraps that block of code
with ``try...finally`` to ensure the lock is released.

..

.. bpo: 39191
.. date: 2020-01-02-17-28-03
.. nonce: ur_scy
.. section: Library

Perform a check for running loop before starting a new task in
``loop.run_until_complete()`` to fail fast; it prevents the side effect of
new task spawning before exception raising.

..

.. bpo: 38871
.. date: 2020-01-01-18-44-52
.. nonce: 3EEOLg
.. section: Library

Correctly parenthesize filter-based statements that contain lambda
expressions in :mod:`!lib2to3`. Patch by Donghee Na.

..

.. bpo: 39142
.. date: 2019-12-31-19-27-23
.. nonce: oqU5iD
.. section: Library

A change was made to logging.config.dictConfig to avoid converting instances
of named tuples to ConvertingTuple. It's assumed that named tuples are too
specialised to be treated like ordinary tuples; if a user of named tuples
requires ConvertingTuple functionality, they will have to implement that
themselves in their named tuple class.

..

.. bpo: 39158
.. date: 2019-12-29-15-44-38
.. nonce: cxVoOR
.. section: Library

ast.literal_eval() now supports empty sets.

..

.. bpo: 39129
.. date: 2019-12-24-10-43-13
.. nonce: jVx5rW
.. section: Library

Fix import path for ``asyncio.TimeoutError``

..

.. bpo: 39057
.. date: 2019-12-15-21-47-54
.. nonce: FOxn-w
.. section: Library

:func:`urllib.request.proxy_bypass_environment` now ignores leading dots and
no longer ignores a trailing newline.

..

.. bpo: 39056
.. date: 2019-12-15-21-05-16
.. nonce: nEfUM9
.. section: Library

Fixed handling invalid warning category in the -W option.  No longer import
the re module if it is not needed.

..

.. bpo: 39055
.. date: 2019-12-15-19-23-23
.. nonce: FmN3un
.. section: Library

:func:`base64.b64decode` with ``validate=True`` raises now a binascii.Error
if the input ends with a single ``\n``.

..

.. bpo: 21600
.. date: 2019-12-14-14-38-40
.. nonce: kC4Cgh
.. section: Library

Fix :func:`mock.patch.stopall` to stop active patches that were created with
:func:`mock.patch.dict`.

..

.. bpo: 39019
.. date: 2019-12-10-21-11-05
.. nonce: YIlgZ7
.. section: Library

Implement dummy ``__class_getitem__`` for
:class:`tempfile.SpooledTemporaryFile`.

..

.. bpo: 39019
.. date: 2019-12-10-21-03-34
.. nonce: i8RpMZ
.. section: Library

Implement dummy ``__class_getitem__`` for ``subprocess.Popen``,
``subprocess.CompletedProcess``

..

.. bpo: 38914
.. date: 2019-11-26-23-21-56
.. nonce: 8l-g-T
.. section: Library

Adjusted the wording of the warning issued by distutils' ``check`` command
when the ``author`` and ``maintainer`` fields are supplied but no
corresponding e-mail field (``author_email`` or ``maintainer_email``) is
found. The wording now reflects the fact that these fields are suggested,
but not required. Patch by Juergen Gmach.

..

.. bpo: 38878
.. date: 2019-11-22-12-08-52
.. nonce: EJ0cFf
.. section: Library

Fixed __subclasshook__ of :class:`os.PathLike` to return a correct result
upon inheritance. Patch by Bar Harel.

..

.. bpo: 38615
.. date: 2019-11-17-17-32-35
.. nonce: OVyaNX
.. section: Library

:class:`~imaplib.IMAP4` and :class:`~imaplib.IMAP4_SSL` now have an optional
*timeout* parameter for their constructors. Also, the
:meth:`~imaplib.IMAP4.open` method now has an optional *timeout* parameter
with this change. The overridden methods of :class:`~imaplib.IMAP4_SSL` and
:class:`~imaplib.IMAP4_stream` were applied to this change. Patch by
Donghee Na.

..

.. bpo: 35182
.. date: 2019-10-31-19-23-25
.. nonce: hzeNl9
.. section: Library

Fixed :func:`Popen.communicate` subsequent call crash when the child process
has already closed any piped standard stream, but still continues to be
running. Patch by Andriy Maletsky.

..

.. bpo: 38630
.. date: 2019-10-29-12-21-10
.. nonce: Dv6Xrm
.. section: Library

On Unix, :meth:`subprocess.Popen.send_signal` now polls the process status.
Polling reduces the risk of sending a signal to the wrong process if the
process completed, the :attr:`subprocess.Popen.returncode` attribute is
still ``None``, and the pid has been reassigned (recycled) to a new
different process.

..

.. bpo: 38536
.. date: 2019-10-21-20-24-51
.. nonce: beZ0Sk
.. section: Library

Removes trailing space in formatted currency with ``international=True`` and a
locale with symbol following value. E.g. ``locale.currency(12.34,
international=True)`` returned ``'12,34 EUR '`` instead of ``'12,34 EUR'``.

..

.. bpo: 38473
.. date: 2019-10-14-21-14-55
.. nonce: uXpVld
.. section: Library

Use signature from inner mock for autospecced methods attached with
:func:`unittest.mock.attach_mock`. Patch by Karthikeyan Singaravelan.

..

.. bpo: 38361
.. date: 2019-10-04-09-49-56
.. nonce: LM4u4T
.. section: Library

Fixed an issue where ``ident`` could include a leading path separator when
:func:`syslog.openlog` was called without arguments.

..

.. bpo: 38293
.. date: 2019-09-29-08-17-03
.. nonce: wls5s3
.. section: Library

Add :func:`copy.copy` and :func:`copy.deepcopy` support to :func:`property`
objects.

..

.. bpo: 37958
.. date: 2019-08-27-03-57-25
.. nonce: lRORI3
.. section: Library

Added the pstats.Stats.get_profile_dict() method to return the profile data
as a StatsProfile instance.

..

.. bpo: 28367
.. date: 2019-05-06-22-38-47
.. nonce: 2AKen5
.. section: Library

Termios magic constants for the following baud rates:   - B500000   -
B576000   - B921600   - B1000000   - B1152000   - B1500000   - B2000000   -
B2500000   - B3000000   - B3500000   - B4000000 Patch by Andrey Smirnov

..

.. bpo: 39381
.. date: 2020-01-18-15-37-56
.. nonce: wTWe8d
.. section: Documentation

Mention in docs that :func:`asyncio.get_event_loop` implicitly creates new
event loop only if called from the main thread.

..

.. bpo: 38918
.. date: 2019-12-15-22-04-41
.. nonce: 8JnDTS
.. section: Documentation

Add an entry for ``__module__`` in the "function" & "method" sections of the
:mod:`inspect` docs' :ref:`inspect-types` table.

..

.. bpo: 3530
.. date: 2019-11-17-11-53-10
.. nonce: 8zFUMc
.. section: Documentation

In the :mod:`ast` module documentation, fix a misleading ``NodeTransformer``
example and add advice on when to use the ``fix_missing_locations``
function.

..

.. bpo: 39395
.. date: 2020-01-23-03-05-13
.. nonce: RoArIZ
.. section: Build

On non-Windows platforms, the :c:func:`setenv` and :c:func:`unsetenv`
functions are now required to build Python.

..

.. bpo: 39160
.. date: 2019-12-30-03-54-24
.. nonce: aBmj13
.. section: Build

Updated the documentation in ``./configure --help`` to show default values,
reference documentation where required and add additional explanation where
needed.

..

.. bpo: 39144
.. date: 2019-12-27-22-18-26
.. nonce: dwHMlR
.. section: Build

The ctags and etags build targets both include Modules/_ctypes and Python
standard library source files.

..

.. bpo: 39050
.. date: 2020-01-22-22-28-06
.. nonce: zkn0FO
.. section: IDLE

Make IDLE Settings dialog Help button work again.

..

.. bpo: 34118
.. date: 2019-12-30-16-44-07
.. nonce: FaNW0a
.. section: IDLE

Tag memoryview, range, and tuple as classes, the same as list, etcetera, in
the library manual built-in functions list.

..

.. bpo: 32989
.. date: 2018-03-03-12-56-26
.. nonce: FVhmhH
.. section: IDLE

Add tests for editor newline_and_indent_event method. Remove dead code from
pyparse find_good_parse_start method.

..

.. bpo: 39372
.. date: 2020-01-17-19-25-48
.. nonce: hGJMY6
.. section: C API

Clean header files of interfaces defined but with no implementation. The
public API symbols being removed are:
``_PyBytes_InsertThousandsGroupingLocale``,
``_PyBytes_InsertThousandsGrouping``, ``_Py_InitializeFromArgs``,
``_Py_InitializeFromWideArgs``, ``_PyFloat_Repr``, ``_PyFloat_Digits``,
``_PyFloat_DigitsInit``, ``PyFrame_ExtendStack``, ``_PyAIterWrapper_Type``,
``PyNullImporter_Type``, ``PyCmpWrapper_Type``, ``PySortWrapper_Type``,
``PyNoArgsFunction``.

..

.. bpo: 39164
.. date: 2019-12-30-10-43-52
.. nonce: WEV0uu
.. section: C API

Add a private ``_PyErr_GetExcInfo()`` function to retrieve exception
information of the specified Python thread state.
