.. 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:`~!nntplib.NNTP` and :class:`~!nntplib.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:`~!nntplib.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.