gh-123299: Copyedit "What's New in Python 3.14" (#125438)

This commit is contained in:
Hugo van Kemenade 2024-10-15 10:39:15 +03:00 committed by GitHub
parent a2fe9ff11d
commit 66064c342c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 82 additions and 81 deletions

View File

@ -1,4 +1,4 @@
Pending Removal in Python 3.14 Pending removal in Python 3.14
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* The ``ma_version_tag`` field in :c:type:`PyDictObject` for extension modules * The ``ma_version_tag`` field in :c:type:`PyDictObject` for extension modules

View File

@ -1,4 +1,4 @@
Pending Removal in Python 3.15 Pending removal in Python 3.15
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* The bundled copy of ``libmpdecimal``. * The bundled copy of ``libmpdecimal``.

View File

@ -1,4 +1,4 @@
Pending Removal in Future Versions Pending removal in future versions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following APIs are deprecated and will be removed, The following APIs are deprecated and will be removed,

View File

@ -7,7 +7,7 @@ Deprecations
.. include:: pending-removal-in-future.rst .. include:: pending-removal-in-future.rst
C API Deprecations C API deprecations
------------------ ------------------
.. include:: c-api-pending-removal-in-3.15.rst .. include:: c-api-pending-removal-in-3.15.rst

View File

@ -1,4 +1,4 @@
Pending Removal in Python 3.13 Pending removal in Python 3.13
------------------------------ ------------------------------
Modules (see :pep:`594`): Modules (see :pep:`594`):

View File

@ -1,4 +1,4 @@
Pending Removal in Python 3.14 Pending removal in Python 3.14
------------------------------ ------------------------------
* The import system: * The import system:

View File

@ -1,4 +1,4 @@
Pending Removal in Python 3.15 Pending removal in Python 3.15
------------------------------ ------------------------------
* The import system: * The import system:
@ -63,7 +63,7 @@ Pending Removal in Python 3.15
* The undocumented keyword argument syntax for creating * The undocumented keyword argument syntax for creating
:class:`~typing.NamedTuple` classes :class:`~typing.NamedTuple` classes
(e.g. ``Point = NamedTuple("Point", x=int, y=int)``) (for example, ``Point = NamedTuple("Point", x=int, y=int)``)
has been deprecated since Python 3.13. has been deprecated since Python 3.13.
Use the class-based syntax or the functional syntax instead. Use the class-based syntax or the functional syntax instead.

View File

@ -1,15 +1,6 @@
Pending Removal in Python 3.16 Pending removal in Python 3.16
------------------------------ ------------------------------
* :mod:`builtins`:
* Bitwise inversion on boolean types, ``~True`` or ``~False``
has been deprecated since Python 3.12,
as it produces surprising and unintuitive results (``-2`` and ``-1``).
Use ``not x`` instead for the logical negation of a Boolean.
In the rare case that you need the bitwise inversion of
the underlying integer, convert to ``int`` explicitly (``~int(x)``).
* :mod:`array`: * :mod:`array`:
* The ``'u'`` format code (:c:type:`wchar_t`) * The ``'u'`` format code (:c:type:`wchar_t`)
@ -20,11 +11,19 @@ Pending Removal in Python 3.16
* :mod:`asyncio`: * :mod:`asyncio`:
* :mod:`asyncio`: * :func:`!asyncio.iscoroutinefunction` is deprecated
:func:`!asyncio.iscoroutinefunction` is deprecated and will be removed in Python 3.16,
and will be removed in Python 3.16, use :func:`inspect.iscoroutinefunction` instead.
use :func:`inspect.iscoroutinefunction` instead. (Contributed by Jiahao Li and Kumar Aditya in :gh:`122875`.)
(Contributed by Jiahao Li and Kumar Aditya in :gh:`122875`.)
* :mod:`builtins`:
* Bitwise inversion on boolean types, ``~True`` or ``~False``
has been deprecated since Python 3.12,
as it produces surprising and unintuitive results (``-2`` and ``-1``).
Use ``not x`` instead for the logical negation of a Boolean.
In the rare case that you need the bitwise inversion of
the underlying integer, convert to ``int`` explicitly (``~int(x)``).
* :mod:`shutil`: * :mod:`shutil`:

View File

@ -1,4 +1,4 @@
Pending Removal in Future Versions Pending removal in future versions
---------------------------------- ----------------------------------
The following APIs will be removed in the future, The following APIs will be removed in the future,

View File

@ -1,6 +1,6 @@
**************************** ****************************
What's New In Python 3.14 What's new in Python 3.14
**************************** ****************************
:Editor: TBD :Editor: TBD
@ -56,7 +56,7 @@ For full details, see the :ref:`changelog <changelog>`.
so it's worth checking back even after reading earlier versions. so it's worth checking back even after reading earlier versions.
Summary -- Release highlights Summary -- release highlights
============================= =============================
.. This section singles out the most important changes in Python 3.14. .. This section singles out the most important changes in Python 3.14.
@ -67,12 +67,12 @@ Summary -- Release highlights
New Features New features
============ ============
.. _whatsnew-314-pep649: .. _whatsnew314-pep649:
PEP 649: Deferred Evaluation of Annotations PEP 649: deferred evaluation of annotations
------------------------------------------- -------------------------------------------
The :term:`annotations <annotation>` on functions, classes, and modules are no The :term:`annotations <annotation>` on functions, classes, and modules are no
@ -150,12 +150,12 @@ In Python 3.7, :pep:`563` introduced the ``from __future__ import annotations``
directive, which turns all annotations into strings. This directive is now directive, which turns all annotations into strings. This directive is now
considered deprecated and it is expected to be removed in a future version of Python. considered deprecated and it is expected to be removed in a future version of Python.
However, this removal will not happen until after Python 3.13, the last version of However, this removal will not happen until after Python 3.13, the last version of
Python without deferred evaluation of annotations, reaches its end of life. Python without deferred evaluation of annotations, reaches its end of life in 2029.
In Python 3.14, the behavior of code using ``from __future__ import annotations`` In Python 3.14, the behavior of code using ``from __future__ import annotations``
is unchanged. is unchanged.
Improved Error Messages Improved error messages
----------------------- -----------------------
* When unpacking assignment fails due to incorrect number of variables, the * When unpacking assignment fails due to incorrect number of variables, the
@ -172,16 +172,16 @@ Improved Error Messages
ValueError: too many values to unpack (expected 3, got 4) ValueError: too many values to unpack (expected 3, got 4)
Other Language Changes Other language changes
====================== ======================
* Incorrect usage of :keyword:`await` and asynchronous comprehensions * Incorrect usage of :keyword:`await` and asynchronous comprehensions
is now detected even if the code is optimized away by the :option:`-O` is now detected even if the code is optimized away by the :option:`-O`
command line option. For example, ``python -O -c 'assert await 1'`` command-line option. For example, ``python -O -c 'assert await 1'``
now produces a :exc:`SyntaxError`. (Contributed by Jelle Zijlstra in :gh:`121637`.) now produces a :exc:`SyntaxError`. (Contributed by Jelle Zijlstra in :gh:`121637`.)
* Writes to ``__debug__`` are now detected even if the code is optimized * Writes to ``__debug__`` are now detected even if the code is optimized
away by the :option:`-O` command line option. For example, away by the :option:`-O` command-line option. For example,
``python -O -c 'assert (__debug__ := 1)'`` now produces a ``python -O -c 'assert (__debug__ := 1)'`` now produces a
:exc:`SyntaxError`. (Contributed by Irit Katriel in :gh:`122245`.) :exc:`SyntaxError`. (Contributed by Irit Katriel in :gh:`122245`.)
@ -191,7 +191,7 @@ Other Language Changes
(Contributed by Serhiy Storchaka in :gh:`84978`.) (Contributed by Serhiy Storchaka in :gh:`84978`.)
New Modules New modules
=========== ===========
* :mod:`annotationlib`: For introspecting :term:`annotations <annotation>`. * :mod:`annotationlib`: For introspecting :term:`annotations <annotation>`.
@ -199,7 +199,7 @@ New Modules
(Contributed by Jelle Zijlstra in :gh:`119180`.) (Contributed by Jelle Zijlstra in :gh:`119180`.)
Improved Modules Improved modules
================ ================
argparse argparse
@ -214,7 +214,7 @@ ast
--- ---
* Add :func:`ast.compare` for comparing two ASTs. * Add :func:`ast.compare` for comparing two ASTs.
(Contributed by Batuhan Taskaya and Jeremy Hylton in :issue:`15987`.) (Contributed by Batuhan Taskaya and Jeremy Hylton in :gh:`60191`.)
* Add support for :func:`copy.replace` for AST nodes. * Add support for :func:`copy.replace` for AST nodes.
(Contributed by Bénédikt Tran in :gh:`121141`.) (Contributed by Bénédikt Tran in :gh:`121141`.)
@ -246,6 +246,12 @@ decimal
:meth:`Decimal.from_number() <decimal.Decimal.from_number>`. :meth:`Decimal.from_number() <decimal.Decimal.from_number>`.
(Contributed by Serhiy Storchaka in :gh:`121798`.) (Contributed by Serhiy Storchaka in :gh:`121798`.)
datetime
--------
* Add :meth:`datetime.time.strptime` and :meth:`datetime.date.strptime`.
(Contributed by Wannes Boeykens in :gh:`41431`.)
dis dis
--- ---
@ -254,9 +260,10 @@ dis
This feature is added to the following interfaces via the *show_positions* This feature is added to the following interfaces via the *show_positions*
keyword argument: keyword argument:
- :class:`dis.Bytecode`, - :class:`dis.Bytecode`
- :func:`dis.dis`, :func:`dis.distb`, and - :func:`dis.dis`
- :func:`dis.disassemble`. - :func:`dis.distb`
- :func:`dis.disassemble`
This feature is also exposed via :option:`dis --show-positions`. This feature is also exposed via :option:`dis --show-positions`.
(Contributed by Bénédikt Tran in :gh:`123165`.) (Contributed by Bénédikt Tran in :gh:`123165`.)
@ -310,7 +317,8 @@ json
of the error. of the error.
(Contributed by Serhiy Storchaka in :gh:`122163`.) (Contributed by Serhiy Storchaka in :gh:`122163`.)
* Enable the :mod:`json` module to work as a script using the :option:`-m` switch: ``python -m json``. * Enable the :mod:`json` module to work as a script using the :option:`-m`
switch: :program:`python -m json`.
See the :ref:`JSON command-line interface <json-commandline>` documentation. See the :ref:`JSON command-line interface <json-commandline>` documentation.
(Contributed by Trey Hunner in :gh:`122873`.) (Contributed by Trey Hunner in :gh:`122873`.)
@ -325,12 +333,6 @@ operator
(Contributed by Raymond Hettinger and Nico Mexis in :gh:`115808`.) (Contributed by Raymond Hettinger and Nico Mexis in :gh:`115808`.)
datetime
--------
* Add :meth:`datetime.time.strptime` and :meth:`datetime.date.strptime`.
(Contributed by Wannes Boeykens in :gh:`41431`.)
os os
-- --
@ -357,11 +359,11 @@ pathlib
pdb pdb
--- ---
* Hard-coded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace`) now * Hardcoded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace`) now
reuse the most recent :class:`~pdb.Pdb` instance that calls reuse the most recent :class:`~pdb.Pdb` instance that calls
:meth:`~pdb.Pdb.set_trace`, instead of creating a new one each time. :meth:`~pdb.Pdb.set_trace`, instead of creating a new one each time.
As a result, all the instance specific data like :pdbcmd:`display` and As a result, all the instance specific data like :pdbcmd:`display` and
:pdbcmd:`commands` are preserved across hard-coded breakpoints. :pdbcmd:`commands` are preserved across hardcoded breakpoints.
(Contributed by Tian Gao in :gh:`121450`.) (Contributed by Tian Gao in :gh:`121450`.)
* Add a new argument *mode* to :class:`pdb.Pdb`. Disable the ``restart`` * Add a new argument *mode* to :class:`pdb.Pdb`. Disable the ``restart``
@ -391,9 +393,9 @@ symtable
* Expose the following :class:`symtable.Symbol` methods: * Expose the following :class:`symtable.Symbol` methods:
* :meth:`~symtable.Symbol.is_free_class`
* :meth:`~symtable.Symbol.is_comp_iter`
* :meth:`~symtable.Symbol.is_comp_cell` * :meth:`~symtable.Symbol.is_comp_cell`
* :meth:`~symtable.Symbol.is_comp_iter`
* :meth:`~symtable.Symbol.is_free_class`
(Contributed by Bénédikt Tran in :gh:`120029`.) (Contributed by Bénédikt Tran in :gh:`120029`.)
@ -472,11 +474,11 @@ ast
* Remove the following classes. They were all deprecated since Python 3.8, * Remove the following classes. They were all deprecated since Python 3.8,
and have emitted deprecation warnings since Python 3.12: and have emitted deprecation warnings since Python 3.12:
* :class:`!ast.Bytes`
* :class:`!ast.Ellipsis`
* :class:`!ast.NameConstant`
* :class:`!ast.Num` * :class:`!ast.Num`
* :class:`!ast.Str` * :class:`!ast.Str`
* :class:`!ast.Bytes`
* :class:`!ast.NameConstant`
* :class:`!ast.Ellipsis`
Use :class:`ast.Constant` instead. As a consequence of these removals, Use :class:`ast.Constant` instead. As a consequence of these removals,
user-defined ``visit_Num``, ``visit_Str``, ``visit_Bytes``, user-defined ``visit_Num``, ``visit_Str``, ``visit_Bytes``,
@ -501,16 +503,16 @@ asyncio
* Remove the following classes and functions. They were all deprecated and * Remove the following classes and functions. They were all deprecated and
emitted deprecation warnings since Python 3.12: emitted deprecation warnings since Python 3.12:
* :class:`!asyncio.AbstractChildWatcher`
* :class:`!asyncio.SafeChildWatcher`
* :class:`!asyncio.MultiLoopChildWatcher`
* :class:`!asyncio.FastChildWatcher`
* :class:`!asyncio.ThreadedChildWatcher`
* :class:`!asyncio.PidfdChildWatcher`
* :meth:`!asyncio.AbstractEventLoopPolicy.get_child_watcher`
* :meth:`!asyncio.AbstractEventLoopPolicy.set_child_watcher`
* :func:`!asyncio.get_child_watcher` * :func:`!asyncio.get_child_watcher`
* :func:`!asyncio.set_child_watcher` * :func:`!asyncio.set_child_watcher`
* :meth:`!asyncio.AbstractEventLoopPolicy.get_child_watcher`
* :meth:`!asyncio.AbstractEventLoopPolicy.set_child_watcher`
* :class:`!asyncio.AbstractChildWatcher`
* :class:`!asyncio.FastChildWatcher`
* :class:`!asyncio.MultiLoopChildWatcher`
* :class:`!asyncio.PidfdChildWatcher`
* :class:`!asyncio.SafeChildWatcher`
* :class:`!asyncio.ThreadedChildWatcher`
(Contributed by Kumar Aditya in :gh:`120804`.) (Contributed by Kumar Aditya in :gh:`120804`.)
@ -623,14 +625,14 @@ Changes in the Python API
(Contributed by Serhiy Storchaka in :gh:`69998`.) (Contributed by Serhiy Storchaka in :gh:`69998`.)
Build Changes Build changes
============= =============
C API Changes C API changes
============= =============
New Features New features
------------ ------------
* Add :c:func:`PyLong_GetSign` function to get the sign of :class:`int` objects. * Add :c:func:`PyLong_GetSign` function to get the sign of :class:`int` objects.
@ -640,17 +642,17 @@ New Features
object: object:
* :c:func:`PyUnicodeWriter_Create` * :c:func:`PyUnicodeWriter_Create`
* :c:func:`PyUnicodeWriter_DecodeUTF8Stateful`
* :c:func:`PyUnicodeWriter_Discard` * :c:func:`PyUnicodeWriter_Discard`
* :c:func:`PyUnicodeWriter_Finish` * :c:func:`PyUnicodeWriter_Finish`
* :c:func:`PyUnicodeWriter_WriteChar`
* :c:func:`PyUnicodeWriter_WriteUTF8`
* :c:func:`PyUnicodeWriter_WriteUCS4`
* :c:func:`PyUnicodeWriter_WriteWideChar`
* :c:func:`PyUnicodeWriter_WriteStr`
* :c:func:`PyUnicodeWriter_WriteRepr`
* :c:func:`PyUnicodeWriter_WriteSubstring`
* :c:func:`PyUnicodeWriter_Format` * :c:func:`PyUnicodeWriter_Format`
* :c:func:`PyUnicodeWriter_DecodeUTF8Stateful` * :c:func:`PyUnicodeWriter_WriteChar`
* :c:func:`PyUnicodeWriter_WriteRepr`
* :c:func:`PyUnicodeWriter_WriteStr`
* :c:func:`PyUnicodeWriter_WriteSubstring`
* :c:func:`PyUnicodeWriter_WriteUCS4`
* :c:func:`PyUnicodeWriter_WriteUTF8`
* :c:func:`PyUnicodeWriter_WriteWideChar`
(Contributed by Victor Stinner in :gh:`119182`.) (Contributed by Victor Stinner in :gh:`119182`.)
@ -671,14 +673,14 @@ New Features
* Add new functions to convert C ``<stdint.h>`` numbers from/to Python * Add new functions to convert C ``<stdint.h>`` numbers from/to Python
:class:`int`: :class:`int`:
* :c:func:`PyLong_FromInt32`
* :c:func:`PyLong_FromInt64`
* :c:func:`PyLong_FromUInt32`
* :c:func:`PyLong_FromUInt64`
* :c:func:`PyLong_AsInt32` * :c:func:`PyLong_AsInt32`
* :c:func:`PyLong_AsInt64` * :c:func:`PyLong_AsInt64`
* :c:func:`PyLong_AsUInt32` * :c:func:`PyLong_AsUInt32`
* :c:func:`PyLong_AsUInt64` * :c:func:`PyLong_AsUInt64`
* :c:func:`PyLong_FromInt32`
* :c:func:`PyLong_FromInt64`
* :c:func:`PyLong_FromUInt32`
* :c:func:`PyLong_FromUInt64`
(Contributed by Victor Stinner in :gh:`120389`.) (Contributed by Victor Stinner in :gh:`120389`.)
@ -701,20 +703,20 @@ New Features
* Add functions to configure the Python initialization (:pep:`741`): * Add functions to configure the Python initialization (:pep:`741`):
* :c:func:`Py_InitializeFromInitConfig`
* :c:func:`PyInitConfig_AddModule`
* :c:func:`PyInitConfig_Create` * :c:func:`PyInitConfig_Create`
* :c:func:`PyInitConfig_Free` * :c:func:`PyInitConfig_Free`
* :c:func:`PyInitConfig_FreeStrList`
* :c:func:`PyInitConfig_GetError` * :c:func:`PyInitConfig_GetError`
* :c:func:`PyInitConfig_GetExitCode` * :c:func:`PyInitConfig_GetExitCode`
* :c:func:`PyInitConfig_HasOption`
* :c:func:`PyInitConfig_GetInt` * :c:func:`PyInitConfig_GetInt`
* :c:func:`PyInitConfig_GetStr` * :c:func:`PyInitConfig_GetStr`
* :c:func:`PyInitConfig_GetStrList` * :c:func:`PyInitConfig_GetStrList`
* :c:func:`PyInitConfig_FreeStrList` * :c:func:`PyInitConfig_HasOption`
* :c:func:`PyInitConfig_SetInt` * :c:func:`PyInitConfig_SetInt`
* :c:func:`PyInitConfig_SetStr` * :c:func:`PyInitConfig_SetStr`
* :c:func:`PyInitConfig_SetStrList` * :c:func:`PyInitConfig_SetStrList`
* :c:func:`PyInitConfig_AddModule`
* :c:func:`Py_InitializeFromInitConfig`
(Contributed by Victor Stinner in :gh:`107954`.) (Contributed by Victor Stinner in :gh:`107954`.)