[Python-checkins] [3.12] gh-106976: alphabetise bullets by module name task2-3 (GH-107005) (#107106)

hugovk webhook-mailer at python.org
Sun Jul 23 05:44:43 EDT 2023


https://github.com/python/cpython/commit/a73d5c5e2e0529642adc896f9ae4d3987ec5374a
commit: a73d5c5e2e0529642adc896f9ae4d3987ec5374a
branch: 3.12
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: hugovk <hugovk at users.noreply.github.com>
date: 2023-07-23T09:44:39Z
summary:

[3.12] gh-106976: alphabetise bullets by module name task2-3 (GH-107005) (#107106)

Co-authored-by: littlebutt's workshop <luogan199686 at gmail.com>
Co-authored-by: Hugo van Kemenade <hugovk at users.noreply.github.com>

files:
M Doc/whatsnew/3.12.rst

diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index 6d5fae1d6fcc6..d1b10dbd1999d 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -967,67 +967,76 @@ Demos and Tools
 Deprecated
 ==========
 
-* :class:`typing.Hashable` and :class:`typing.Sized` aliases for :class:`collections.abc.Hashable`
-  and :class:`collections.abc.Sized`. (:gh:`94309`.)
-
-* The :mod:`sqlite3` :ref:`default adapters and converters
-  <sqlite3-default-converters>` are now deprecated.
-  Instead, use the :ref:`sqlite3-adapter-converter-recipes`
-  and tailor them to your needs.
-  (Contributed by Erlend E. Aasland in :gh:`90016`.)
-
-* In :meth:`~sqlite3.Cursor.execute`, :exc:`DeprecationWarning` is now emitted
-  when :ref:`named placeholders <sqlite3-placeholders>` are used together with
-  parameters supplied as a :term:`sequence` instead of as a :class:`dict`.
-  Starting from Python 3.14, using named placeholders with parameters supplied
-  as a sequence will raise a :exc:`~sqlite3.ProgrammingError`.
-  (Contributed by Erlend E. Aasland in :gh:`101698`.)
-
-* The 3-arg signatures (type, value, traceback) of :meth:`~coroutine.throw`,
-  :meth:`~generator.throw` and :meth:`~agen.athrow` are deprecated and
-  may be removed in a future version of Python. Use the single-arg versions
-  of these functions instead. (Contributed by Ofey Chan in :gh:`89874`.)
-
-* :exc:`DeprecationWarning` is now raised when ``__package__`` on a
-  module differs from ``__spec__.parent`` (previously it was
-  :exc:`ImportWarning`).
-  (Contributed by Brett Cannon in :gh:`65961`.)
-
-* The :meth:`~asyncio.get_event_loop` method of the
+* :mod:`asyncio`: The :meth:`~asyncio.get_event_loop` method of the
   default event loop policy now emits a :exc:`DeprecationWarning` if there
   is no current event loop set and it decides to create one.
   (Contributed by Serhiy Storchaka and Guido van Rossum in :gh:`100160`.)
 
-* The :mod:`xml.etree.ElementTree` module now emits :exc:`DeprecationWarning`
-  when testing the truth value of an :class:`xml.etree.ElementTree.Element`.
-  Before, the Python implementation emitted :exc:`FutureWarning`, and the C
-  implementation emitted nothing.
+* :mod:`calendar`: ``calendar.January`` and ``calendar.February`` constants are deprecated and
+  replaced by :data:`calendar.Month.JANUARY` and :data:`calendar.Month.FEBRUARY`.
+  (Contributed by Prince Roshan in :gh:`103636`.)
 
-* In accordance with :pep:`699`, the ``ma_version_tag`` field in :c:type:`PyDictObject`
-  is deprecated for extension modules. Accessing this field will generate a compiler
-  warning at compile time. This field will be removed in Python 3.14.
-  (Contributed by Ramvikrams and Kumar Aditya in :gh:`101193`. PEP by Ken Jin.)
+* :mod:`datetime`: :class:`datetime.datetime`'s :meth:`~datetime.datetime.utcnow` and
+  :meth:`~datetime.datetime.utcfromtimestamp` are deprecated and will be
+  removed in a future version. Instead, use timezone-aware objects to represent
+  datetimes in UTC: respectively, call :meth:`~datetime.datetime.now` and
+  :meth:`~datetime.datetime.fromtimestamp`  with the *tz* parameter set to
+  :const:`datetime.UTC`.
+  (Contributed by Paul Ganssle in :gh:`103857`.)
 
-* The ``st_ctime`` fields return by :func:`os.stat` and :func:`os.lstat` on
+* :mod:`os`: The ``st_ctime`` fields return by :func:`os.stat` and :func:`os.lstat` on
   Windows are deprecated. In a future release, they will contain the last
   metadata change time, consistent with other platforms. For now, they still
   contain the creation time, which is also available in the new ``st_birthtime``
   field. (Contributed by Steve Dower in :gh:`99726`.)
 
-* The :data:`sys.last_type`, :data:`sys.last_value` and :data:`sys.last_traceback`
+* :mod:`shutil`: The *onerror* argument of :func:`shutil.rmtree` is deprecated as will be removed
+  in Python 3.14. Use *onexc* instead. (Contributed by Irit Katriel in :gh:`102828`.)
+
+* :mod:`sqlite3`:
+    * :ref:`default adapters and converters
+      <sqlite3-default-converters>` are now deprecated.
+      Instead, use the :ref:`sqlite3-adapter-converter-recipes`
+      and tailor them to your needs.
+      (Contributed by Erlend E. Aasland in :gh:`90016`.)
+
+    * In :meth:`~sqlite3.Cursor.execute`, :exc:`DeprecationWarning` is now emitted
+      when :ref:`named placeholders <sqlite3-placeholders>` are used together with
+      parameters supplied as a :term:`sequence` instead of as a :class:`dict`.
+      Starting from Python 3.14, using named placeholders with parameters supplied
+      as a sequence will raise a :exc:`~sqlite3.ProgrammingError`.
+      (Contributed by Erlend E. Aasland in :gh:`101698`.)
+
+* :mod:`sys`: The :data:`sys.last_type`, :data:`sys.last_value` and :data:`sys.last_traceback`
   fields are deprecated. Use :data:`sys.last_exc` instead.
   (Contributed by Irit Katriel in :gh:`102778`.)
 
-* The *onerror* argument of :func:`shutil.rmtree` is deprecated as will be removed
-  in Python 3.14. Use *onexc* instead. (Contributed by Irit Katriel in :gh:`102828`.)
-
-* Extracting tar archives without specifying *filter* is deprecated until
+* :mod:`tarfile`: Extracting tar archives without specifying *filter* is deprecated until
   Python 3.14, when ``'data'`` filter will become the default.
   See :ref:`tarfile-extraction-filter` for details.
 
-* ``calendar.January`` and ``calendar.February`` constants are deprecated and
-  replaced by :data:`calendar.Month.JANUARY` and :data:`calendar.Month.FEBRUARY`.
-  (Contributed by Prince Roshan in :gh:`103636`.)
+* :mod:`typing`: :class:`typing.Hashable` and :class:`typing.Sized` aliases for :class:`collections.abc.Hashable`
+  and :class:`collections.abc.Sized`. (:gh:`94309`.)
+
+* :mod:`xml.etree.ElementTree`: The module now emits :exc:`DeprecationWarning`
+  when testing the truth value of an :class:`xml.etree.ElementTree.Element`.
+  Before, the Python implementation emitted :exc:`FutureWarning`, and the C
+  implementation emitted nothing.
+
+* The 3-arg signatures (type, value, traceback) of :meth:`~coroutine.throw`,
+  :meth:`~generator.throw` and :meth:`~agen.athrow` are deprecated and
+  may be removed in a future version of Python. Use the single-arg versions
+  of these functions instead. (Contributed by Ofey Chan in :gh:`89874`.)
+
+* :exc:`DeprecationWarning` is now raised when ``__package__`` on a
+  module differs from ``__spec__.parent`` (previously it was
+  :exc:`ImportWarning`).
+  (Contributed by Brett Cannon in :gh:`65961`.)
+
+* In accordance with :pep:`699`, the ``ma_version_tag`` field in :c:type:`PyDictObject`
+  is deprecated for extension modules. Accessing this field will generate a compiler
+  warning at compile time. This field will be removed in Python 3.14.
+  (Contributed by Ramvikrams and Kumar Aditya in :gh:`101193`. PEP by Ken Jin.)
 
 * The bitwise inversion operator (``~``) on bool is deprecated. It will throw an
   error in Python 3.14. Use ``not`` for logical negation of bools instead.
@@ -1035,16 +1044,6 @@ Deprecated
   ``int``, convert to int explicitly with ``~int(x)``. (Contributed by Tim Hoffmann
   in :gh:`103487`.)
 
-* :class:`datetime.datetime`'s
-  :meth:`~datetime.datetime.utcnow` and
-  :meth:`~datetime.datetime.utcfromtimestamp` are deprecated and will be
-  removed in a future version. Instead, use timezone-aware objects to represent
-  datetimes in UTC: respectively, call
-  :meth:`~datetime.datetime.now` and
-  :meth:`~datetime.datetime.fromtimestamp`  with the *tz* parameter set to
-  :const:`datetime.UTC`.
-  (Contributed by Paul Ganssle in :gh:`103857`.)
-
 Pending Removal in Python 3.13
 ------------------------------
 
@@ -1088,7 +1087,33 @@ APIs:
 Pending Removal in Python 3.14
 ------------------------------
 
-* Deprecated the following :mod:`importlib.abc` classes, scheduled for removal in
+* :mod:`argparse`: The *type*, *choices*, and *metavar* parameters
+  of :class:`!argparse.BooleanOptionalAction` are deprecated
+  and will be removed in 3.14.
+  (Contributed by Nikita Sobolev in :gh:`92248`.)
+
+* :mod:`ast`: The following :mod:`ast` features have been deprecated in documentation since
+  Python 3.8, now cause a :exc:`DeprecationWarning` to be emitted at runtime
+  when they are accessed or used, and will be removed in Python 3.14:
+
+  * :class:`!ast.Num`
+  * :class:`!ast.Str`
+  * :class:`!ast.Bytes`
+  * :class:`!ast.NameConstant`
+  * :class:`!ast.Ellipsis`
+
+  Use :class:`ast.Constant` instead.
+  (Contributed by Serhiy Storchaka in :gh:`90953`.)
+
+* :mod:`collections.abc`: Deprecated :class:`collections.abc.ByteString`.
+  Prefer :class:`Sequence` or :class:`collections.abc.Buffer`.
+  For use in typing, prefer a union, like ``bytes | bytearray``, or :class:`collections.abc.Buffer`.
+  (Contributed by Shantanu Jain in :gh:`91896`.)
+
+* :mod:`email`: Deprecated the *isdst* parameter in :func:`email.utils.localtime`.
+  (Contributed by Alan Williams in :gh:`72346`.)
+
+* :mod:`importlib.abc`: Deprecated the following classes, scheduled for removal in
   Python 3.14:
 
   * :class:`!importlib.abc.ResourceReader`
@@ -1102,27 +1127,13 @@ Pending Removal in Python 3.14
 
   (Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)
 
-* Deprecated :class:`collections.abc.ByteString`.
-  Prefer :class:`Sequence` or :class:`collections.abc.Buffer`.
-  For use in typing, prefer a union, like ``bytes | bytearray``, or :class:`collections.abc.Buffer`.
-  (Contributed by Shantanu Jain in :gh:`91896`.)
-
-* :class:`typing.ByteString`, deprecated since Python 3.9, now causes a
-  :exc:`DeprecationWarning` to be emitted when it is used.
-
-* Creating immutable types (:c:macro:`Py_TPFLAGS_IMMUTABLETYPE`) with mutable
-  bases using the C API.
-
-* Deprecated the *isdst* parameter in :func:`email.utils.localtime`.
-  (Contributed by Alan Williams in :gh:`72346`.)
-
-* ``__package__`` and ``__cached__`` will cease to be set or taken
-  into consideration by the import system (:gh:`97879`).
-
-* Testing the truth value of an :class:`xml.etree.ElementTree.Element`
-  is deprecated and will raise an exception in Python 3.14.
+* :mod:`itertools`: The module had undocumented, inefficient, historically buggy,
+  and inconsistent support for copy, deepcopy, and pickle operations.
+  This will be removed in 3.14 for a significant reduction in code
+  volume and maintenance burden.
+  (Contributed by Raymond Hettinger in :gh:`101588`.)
 
-* The default :mod:`multiprocessing` start method will change to a safer one on
+* :mod:`multiprocessing`: The default :mod:`multiprocessing` start method will change to a safer one on
   Linux, BSDs, and other non-macOS POSIX platforms where ``'fork'`` is currently
   the default (:gh:`84559`). Adding a runtime warning about this was deemed too
   disruptive as the majority of code is not expected to care. Use the
@@ -1130,47 +1141,35 @@ Pending Removal in Python 3.14
   :func:`~multiprocessing.set_start_method` APIs to explicitly specify when
   your code *requires* ``'fork'``.  See :ref:`multiprocessing-start-methods`.
 
-* :mod:`pty` has two undocumented ``master_open()`` and ``slave_open()``
+* :mod:`pkgutil`: :func:`pkgutil.find_loader` and :func:`pkgutil.get_loader`
+  now raise :exc:`DeprecationWarning`;
+  use :func:`importlib.util.find_spec` instead.
+  (Contributed by Nikita Sobolev in :gh:`97850`.)
+
+* :mod:`pty`: The module has two undocumented ``master_open()`` and ``slave_open()``
   functions that have been deprecated since Python 2 but only gained a
   proper :exc:`DeprecationWarning` in 3.12. Remove them in 3.14.
 
-* :mod:`itertools` had undocumented, inefficient, historically buggy,
-  and inconsistent support for copy, deepcopy, and pickle operations.
-  This will be removed in 3.14 for a significant reduction in code
-  volume and maintenance burden.
-  (Contributed by Raymond Hettinger in :gh:`101588`.)
-
-* Accessing ``co_lnotab`` was deprecated in :pep:`626` since 3.10
-  and was planned to be removed in 3.12
-  but it only got a proper :exc:`DeprecationWarning` in 3.12.
-  May be removed in 3.14.
-  (Contributed by Nikita Sobolev in :gh:`101866`.)
-
-* The *onerror* argument of :func:`shutil.rmtree` is deprecated in 3.12,
+* :mod:`shutil`: The *onerror* argument of :func:`shutil.rmtree` is deprecated in 3.12,
   and will be removed in 3.14.
 
-* The *type*, *choices*, and *metavar* parameters
-  of :class:`!argparse.BooleanOptionalAction` are deprecated
-  and will be removed in 3.14.
-  (Contributed by Nikita Sobolev in :gh:`92248`.)
+* :mod:`typing`: :class:`typing.ByteString`, deprecated since Python 3.9, now causes a
+  :exc:`DeprecationWarning` to be emitted when it is used.
 
-* :func:`pkgutil.find_loader` and :func:`pkgutil.get_loader`
-  now raise :exc:`DeprecationWarning`;
-  use :func:`importlib.util.find_spec` instead.
-  (Contributed by Nikita Sobolev in :gh:`97850`.)
+* :mod:`xml.etree.ElementTree`: Testing the truth value of an :class:`xml.etree.ElementTree.Element`
+  is deprecated and will raise an exception in Python 3.14.
 
-* The following :mod:`ast` features have been deprecated in documentation since
-  Python 3.8, now cause a :exc:`DeprecationWarning` to be emitted at runtime
-  when they are accessed or used, and will be removed in Python 3.14:
+* Creating immutable types (:c:macro:`Py_TPFLAGS_IMMUTABLETYPE`) with mutable
+  bases using the C API.
 
-  * :class:`!ast.Num`
-  * :class:`!ast.Str`
-  * :class:`!ast.Bytes`
-  * :class:`!ast.NameConstant`
-  * :class:`!ast.Ellipsis`
+* ``__package__`` and ``__cached__`` will cease to be set or taken
+  into consideration by the import system (:gh:`97879`).
 
-  Use :class:`ast.Constant` instead.
-  (Contributed by Serhiy Storchaka in :gh:`90953`.)
+* Accessing ``co_lnotab`` was deprecated in :pep:`626` since 3.10
+  and was planned to be removed in 3.12
+  but it only got a proper :exc:`DeprecationWarning` in 3.12.
+  May be removed in 3.14.
+  (Contributed by Nikita Sobolev in :gh:`101866`.)
 
 Pending Removal in Future Versions
 ----------------------------------
@@ -1193,13 +1192,29 @@ although there is currently no date scheduled for their removal.
 Removed
 =======
 
-* Remove the ``distutils`` package. It was deprecated in Python 3.10 by
+* ``asynchat`` and ``asyncore``: These two modules have been removed
+  according to the schedule in :pep:`594`,
+  having been deprecated in Python 3.6.
+  Use :mod:`asyncio` instead.
+  (Contributed by Nikita Sobolev in :gh:`96580`.)
+
+* :mod:`configparser`: Several names deprecated in the :mod:`configparser` way back in 3.2 have
+  been removed per :gh:`89336`:
+
+  * :class:`configparser.ParsingError` no longer has a ``filename`` attribute
+    or argument. Use the ``source`` attribute and argument instead.
+  * :mod:`configparser` no longer has a ``SafeConfigParser`` class. Use the
+    shorter :class:`~configparser.ConfigParser` name instead.
+  * :class:`configparser.ConfigParser` no longer has a ``readfp`` method.
+    Use :meth:`~configparser.ConfigParser.read_file` instead.
+
+* ``distutils``: Remove the ``distutils`` package. It was deprecated in Python 3.10 by
   :pep:`632` "Deprecate distutils module". For projects still using
   ``distutils`` and cannot be updated to something else, the ``setuptools``
   project can be installed: it still provides ``distutils``.
   (Contributed by Victor Stinner in :gh:`92584`.)
 
-* Remove the bundled setuptools wheel from :mod:`ensurepip`,
+* :mod:`ensurepip`: Remove the bundled setuptools wheel from :mod:`ensurepip`,
   and stop installing setuptools in environments created by :mod:`venv`.
 
   ``pip (>= 22.1)`` does not require setuptools to be installed in the
@@ -1217,94 +1232,9 @@ Removed
 
   (Contributed by Pradyun Gedam in :gh:`95299`.)
 
-* Removed many old deprecated :mod:`unittest` features:
-
-  - A number of :class:`~unittest.TestCase` method aliases:
-
-    ============================ =============================== ===============
-       Deprecated alias           Method Name                     Deprecated in
-    ============================ =============================== ===============
-     ``failUnless``               :meth:`.assertTrue`             3.1
-     ``failIf``                   :meth:`.assertFalse`            3.1
-     ``failUnlessEqual``          :meth:`.assertEqual`            3.1
-     ``failIfEqual``              :meth:`.assertNotEqual`         3.1
-     ``failUnlessAlmostEqual``    :meth:`.assertAlmostEqual`      3.1
-     ``failIfAlmostEqual``        :meth:`.assertNotAlmostEqual`   3.1
-     ``failUnlessRaises``         :meth:`.assertRaises`           3.1
-     ``assert_``                  :meth:`.assertTrue`             3.2
-     ``assertEquals``             :meth:`.assertEqual`            3.2
-     ``assertNotEquals``          :meth:`.assertNotEqual`         3.2
-     ``assertAlmostEquals``       :meth:`.assertAlmostEqual`      3.2
-     ``assertNotAlmostEquals``    :meth:`.assertNotAlmostEqual`   3.2
-     ``assertRegexpMatches``      :meth:`.assertRegex`            3.2
-     ``assertRaisesRegexp``       :meth:`.assertRaisesRegex`      3.2
-     ``assertNotRegexpMatches``   :meth:`.assertNotRegex`         3.5
-    ============================ =============================== ===============
-
-    You can use https://github.com/isidentical/teyit to automatically modernise
-    your unit tests.
-
-  - Undocumented and broken :class:`~unittest.TestCase` method
-    ``assertDictContainsSubset`` (deprecated in Python 3.2).
-
-  - Undocumented :meth:`TestLoader.loadTestsFromModule
-    <unittest.TestLoader.loadTestsFromModule>` parameter *use_load_tests*
-    (deprecated and ignored since Python 3.2).
-
-  - An alias of the :class:`~unittest.TextTestResult` class:
-    ``_TextTestResult`` (deprecated in Python 3.2).
-
-  (Contributed by Serhiy Storchaka in :issue:`45162`.)
-
-* Several names deprecated in the :mod:`configparser` way back in 3.2 have
-  been removed per :gh:`89336`:
-
-  * :class:`configparser.ParsingError` no longer has a ``filename`` attribute
-    or argument. Use the ``source`` attribute and argument instead.
-  * :mod:`configparser` no longer has a ``SafeConfigParser`` class. Use the
-    shorter :class:`~configparser.ConfigParser` name instead.
-  * :class:`configparser.ConfigParser` no longer has a ``readfp`` method.
-    Use :meth:`~configparser.ConfigParser.read_file` instead.
-
-* The following undocumented :mod:`sqlite3` features, deprecated in Python
-  3.10, are now removed:
-
-  * ``sqlite3.enable_shared_cache()``
-  * ``sqlite3.OptimizedUnicode``
-
-  If a shared cache must be used, open the database in URI mode using the
-  ``cache=shared`` query parameter.
-
-  The ``sqlite3.OptimizedUnicode`` text factory has been an alias for
-  :class:`str` since Python 3.3. Code that previously set the text factory to
-  ``OptimizedUnicode`` can either use ``str`` explicitly, or rely on the
-  default value which is also ``str``.
-
-  (Contributed by Erlend E. Aasland in :gh:`92548`.)
-
-* ``smtpd`` has been removed according to the schedule in :pep:`594`,
-  having been deprecated in Python 3.4.7 and 3.5.4.
-  Use aiosmtpd_ PyPI module or any other
-  :mod:`asyncio`-based server instead.
-  (Contributed by Oleg Iarygin in :gh:`93243`.)
-
-.. _aiosmtpd: https://pypi.org/project/aiosmtpd/
-
-* ``asynchat`` and ``asyncore`` have been removed
-  according to the schedule in :pep:`594`,
-  having been deprecated in Python 3.6.
-  Use :mod:`asyncio` instead.
-  (Contributed by Nikita Sobolev in :gh:`96580`.)
-
-* Remove ``io.OpenWrapper`` and ``_pyio.OpenWrapper``, deprecated in Python
-  3.10: just use :func:`open` instead. The :func:`open` (:func:`io.open`)
-  function is a built-in function. Since Python 3.10, :func:`!_pyio.open` is
-  also a static method.
-  (Contributed by Victor Stinner in :gh:`94169`.)
-
-* Remove the :func:`!ssl.RAND_pseudo_bytes` function, deprecated in Python 3.6:
-  use :func:`os.urandom` or :func:`ssl.RAND_bytes` instead.
-  (Contributed by Victor Stinner in :gh:`94199`.)
+* :mod:`ftplib`: Remove the ``FTP_TLS.ssl_version`` class attribute: use the
+  *context* parameter instead.
+  (Contributed by Victor Stinner in :gh:`94172`.)
 
 * :mod:`gzip`: Remove the ``filename`` attribute of :class:`gzip.GzipFile`,
   deprecated since Python 2.6, use the :attr:`~gzip.GzipFile.name` attribute
@@ -1312,43 +1242,13 @@ Removed
   extension if it was not present.
   (Contributed by Victor Stinner in :gh:`94196`.)
 
-* Remove the :func:`!ssl.match_hostname` function.
-  It was deprecated in Python 3.7. OpenSSL performs
-  hostname matching since Python 3.7, Python no longer uses the
-  :func:`!ssl.match_hostname` function.
-  (Contributed by Victor Stinner in :gh:`94199`.)
-
-* Remove the :func:`!locale.format` function, deprecated in Python 3.7:
-  use :func:`locale.format_string` instead.
-  (Contributed by Victor Stinner in :gh:`94226`.)
-
 * :mod:`hashlib`: Remove the pure Python implementation of
   :func:`hashlib.pbkdf2_hmac()`, deprecated in Python 3.10. Python 3.10 and
   newer requires OpenSSL 1.1.1 (:pep:`644`): this OpenSSL version provides
   a C implementation of :func:`~hashlib.pbkdf2_hmac()` which is faster.
   (Contributed by Victor Stinner in :gh:`94199`.)
 
-* :mod:`xml.etree.ElementTree`: Remove the ``ElementTree.Element.copy()`` method of the
-  pure Python implementation, deprecated in Python 3.10, use the
-  :func:`copy.copy` function instead.  The C implementation of :mod:`xml.etree.ElementTree`
-  has no ``copy()`` method, only a ``__copy__()`` method.
-  (Contributed by Victor Stinner in :gh:`94383`.)
-
-* :mod:`zipimport`: Remove ``find_loader()`` and ``find_module()`` methods,
-  deprecated in Python 3.10: use the ``find_spec()`` method instead.  See
-  :pep:`451` for the rationale.
-  (Contributed by Victor Stinner in :gh:`94379`.)
-
-* Remove the :func:`!ssl.wrap_socket` function, deprecated in Python 3.7:
-  instead, create a :class:`ssl.SSLContext` object and call its
-  :class:`ssl.SSLContext.wrap_socket` method. Any package that still uses
-  :func:`!ssl.wrap_socket` is broken and insecure. The function neither sends a
-  SNI TLS extension nor validates server hostname. Code is subject to `CWE-295
-  <https://cwe.mitre.org/data/definitions/295.html>`_: Improper Certificate
-  Validation.
-  (Contributed by Victor Stinner in :gh:`94199`.)
-
-* Many previously deprecated cleanups in :mod:`importlib` have now been
+* :mod:`importlib`: Many previously deprecated cleanups in :mod:`importlib` have now been
   completed:
 
   * References to, and support for :meth:`!module_repr()` has been removed.
@@ -1413,6 +1313,115 @@ Removed
       ``PY_COMPILED``, ``C_EXTENSION``, ``PY_RESOURCE``, ``PKG_DIRECTORY``,
       ``C_BUILTIN``, ``PY_FROZEN``, ``PY_CODERESOURCE``, ``IMP_HOOK``.
 
+* :mod:`io`: Remove ``io.OpenWrapper`` and ``_pyio.OpenWrapper``, deprecated in Python
+  3.10: just use :func:`open` instead. The :func:`open` (:func:`io.open`)
+  function is a built-in function. Since Python 3.10, :func:`!_pyio.open` is
+  also a static method.
+  (Contributed by Victor Stinner in :gh:`94169`.)
+
+* :mod:`locale`: Remove the :func:`!locale.format` function, deprecated in Python 3.7:
+  use :func:`locale.format_string` instead.
+  (Contributed by Victor Stinner in :gh:`94226`.)
+
+* ``smtpd``: The module has been removed according to the schedule in :pep:`594`,
+  having been deprecated in Python 3.4.7 and 3.5.4.
+  Use aiosmtpd_ PyPI module or any other
+  :mod:`asyncio`-based server instead.
+  (Contributed by Oleg Iarygin in :gh:`93243`.)
+
+.. _aiosmtpd: https://pypi.org/project/aiosmtpd/
+
+* :mod:`sqlite3`: The following undocumented :mod:`sqlite3` features, deprecated in Python
+  3.10, are now removed:
+
+  * ``sqlite3.enable_shared_cache()``
+  * ``sqlite3.OptimizedUnicode``
+
+  If a shared cache must be used, open the database in URI mode using the
+  ``cache=shared`` query parameter.
+
+  The ``sqlite3.OptimizedUnicode`` text factory has been an alias for
+  :class:`str` since Python 3.3. Code that previously set the text factory to
+  ``OptimizedUnicode`` can either use ``str`` explicitly, or rely on the
+  default value which is also ``str``.
+
+  (Contributed by Erlend E. Aasland in :gh:`92548`.)
+
+* :mod:`ssl`:
+
+    * Remove the :func:`!ssl.RAND_pseudo_bytes` function, deprecated in Python 3.6:
+      use :func:`os.urandom` or :func:`ssl.RAND_bytes` instead.
+      (Contributed by Victor Stinner in :gh:`94199`.)
+
+    * Remove the :func:`!ssl.match_hostname` function.
+      It was deprecated in Python 3.7. OpenSSL performs
+      hostname matching since Python 3.7, Python no longer uses the
+      :func:`!ssl.match_hostname` function.
+      (Contributed by Victor Stinner in :gh:`94199`.)
+
+    * Remove the :func:`!ssl.wrap_socket` function, deprecated in Python 3.7:
+      instead, create a :class:`ssl.SSLContext` object and call its
+      :class:`ssl.SSLContext.wrap_socket` method. Any package that still uses
+      :func:`!ssl.wrap_socket` is broken and insecure. The function neither sends a
+      SNI TLS extension nor validates server hostname. Code is subject to `CWE-295
+      <https://cwe.mitre.org/data/definitions/295.html>`_: Improper Certificate
+      Validation.
+      (Contributed by Victor Stinner in :gh:`94199`.)
+
+* :mod:`unittest`: Removed many old deprecated :mod:`unittest` features:
+
+  - A number of :class:`~unittest.TestCase` method aliases:
+
+    ============================ =============================== ===============
+       Deprecated alias           Method Name                     Deprecated in
+    ============================ =============================== ===============
+     ``failUnless``               :meth:`.assertTrue`             3.1
+     ``failIf``                   :meth:`.assertFalse`            3.1
+     ``failUnlessEqual``          :meth:`.assertEqual`            3.1
+     ``failIfEqual``              :meth:`.assertNotEqual`         3.1
+     ``failUnlessAlmostEqual``    :meth:`.assertAlmostEqual`      3.1
+     ``failIfAlmostEqual``        :meth:`.assertNotAlmostEqual`   3.1
+     ``failUnlessRaises``         :meth:`.assertRaises`           3.1
+     ``assert_``                  :meth:`.assertTrue`             3.2
+     ``assertEquals``             :meth:`.assertEqual`            3.2
+     ``assertNotEquals``          :meth:`.assertNotEqual`         3.2
+     ``assertAlmostEquals``       :meth:`.assertAlmostEqual`      3.2
+     ``assertNotAlmostEquals``    :meth:`.assertNotAlmostEqual`   3.2
+     ``assertRegexpMatches``      :meth:`.assertRegex`            3.2
+     ``assertRaisesRegexp``       :meth:`.assertRaisesRegex`      3.2
+     ``assertNotRegexpMatches``   :meth:`.assertNotRegex`         3.5
+    ============================ =============================== ===============
+
+    You can use https://github.com/isidentical/teyit to automatically modernise
+    your unit tests.
+
+  - Undocumented and broken :class:`~unittest.TestCase` method
+    ``assertDictContainsSubset`` (deprecated in Python 3.2).
+
+  - Undocumented :meth:`TestLoader.loadTestsFromModule
+    <unittest.TestLoader.loadTestsFromModule>` parameter *use_load_tests*
+    (deprecated and ignored since Python 3.2).
+
+  - An alias of the :class:`~unittest.TextTestResult` class:
+    ``_TextTestResult`` (deprecated in Python 3.2).
+
+  (Contributed by Serhiy Storchaka in :issue:`45162`.)
+
+* :mod:`webbrowser`: Remove support for obsolete browsers from :mod:`webbrowser`.
+  Removed browsers include: Grail, Mosaic, Netscape, Galeon, Skipstone,
+  Iceape, Firebird, and Firefox versions 35 and below (:gh:`102871`).
+
+* :mod:`xml.etree.ElementTree`: Remove the ``ElementTree.Element.copy()`` method of the
+  pure Python implementation, deprecated in Python 3.10, use the
+  :func:`copy.copy` function instead.  The C implementation of :mod:`xml.etree.ElementTree`
+  has no ``copy()`` method, only a ``__copy__()`` method.
+  (Contributed by Victor Stinner in :gh:`94383`.)
+
+* :mod:`zipimport`: Remove ``find_loader()`` and ``find_module()`` methods,
+  deprecated in Python 3.10: use the ``find_spec()`` method instead.  See
+  :pep:`451` for the rationale.
+  (Contributed by Victor Stinner in :gh:`94379`.)
+
 * Removed the ``suspicious`` rule from the documentation Makefile, and
   removed ``Doc/tools/rstlint.py``, both in favor of `sphinx-lint
   <https://github.com/sphinx-contrib/sphinx-lint>`_.
@@ -1426,15 +1435,6 @@ Removed
   (*ssl_context* in :mod:`imaplib`) instead.
   (Contributed by Victor Stinner in :gh:`94172`.)
 
-* :mod:`ftplib`: Remove the ``FTP_TLS.ssl_version`` class attribute: use the
-  *context* parameter instead.
-  (Contributed by Victor Stinner in :gh:`94172`.)
-
-* Remove support for obsolete browsers from :mod:`webbrowser`.
-  Removed browsers include: Grail, Mosaic, Netscape, Galeon, Skipstone,
-  Iceape, Firebird, and Firefox versions 35 and below (:gh:`102871`).
-
-
 .. _whatsnew312-porting-to-python312:
 
 Porting to Python 3.12



More information about the Python-checkins mailing list