gh-106976: alphabetise bullets by module name task2-3 (#107005)

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
This commit is contained in:
littlebutt's workshop 2023-07-23 09:41:34 +00:00 committed by GitHub
parent f5147c0cfb
commit 102a773716
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 237 additions and 237 deletions

View File

@ -966,21 +966,61 @@ Demos and Tools
Deprecated Deprecated
========== ==========
* :class:`typing.Hashable` and :class:`typing.Sized` aliases for :class:`collections.abc.Hashable` * :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`.)
* :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`.)
* :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`.)
* :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`.)
* :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`.)
* :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.
* :mod:`typing`: :class:`typing.Hashable` and :class:`typing.Sized` aliases for :class:`collections.abc.Hashable`
and :class:`collections.abc.Sized`. (:gh:`94309`.) and :class:`collections.abc.Sized`. (:gh:`94309`.)
* The :mod:`sqlite3` :ref:`default adapters and converters * :mod:`xml.etree.ElementTree`: The module now emits :exc:`DeprecationWarning`
<sqlite3-default-converters>` are now deprecated. when testing the truth value of an :class:`xml.etree.ElementTree.Element`.
Instead, use the :ref:`sqlite3-adapter-converter-recipes` Before, the Python implementation emitted :exc:`FutureWarning`, and the C
and tailor them to your needs. implementation emitted nothing.
(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`, * The 3-arg signatures (type, value, traceback) of :meth:`~coroutine.throw`,
:meth:`~generator.throw` and :meth:`~agen.athrow` are deprecated and :meth:`~generator.throw` and :meth:`~agen.athrow` are deprecated and
@ -992,58 +1032,17 @@ Deprecated
:exc:`ImportWarning`). :exc:`ImportWarning`).
(Contributed by Brett Cannon in :gh:`65961`.) (Contributed by Brett Cannon in :gh:`65961`.)
* 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.
* In accordance with :pep:`699`, the ``ma_version_tag`` field in :c:type:`PyDictObject` * 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 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. 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.) (Contributed by Ramvikrams and Kumar Aditya in :gh:`101193`. PEP by Ken Jin.)
* 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`
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
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`.)
* The bitwise inversion operator (``~``) on bool is deprecated. It will throw an * 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. error in Python 3.14. Use ``not`` for logical negation of bools instead.
In the rare case that you really need the bitwise inversion of the underlying In the rare case that you really need the bitwise inversion of the underlying
``int``, convert to int explicitly with ``~int(x)``. (Contributed by Tim Hoffmann ``int``, convert to int explicitly with ``~int(x)``. (Contributed by Tim Hoffmann
in :gh:`103487`.) 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 Pending Removal in Python 3.13
------------------------------ ------------------------------
@ -1088,7 +1087,33 @@ APIs:
Pending Removal in Python 3.14 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: Python 3.14:
* :class:`!importlib.abc.ResourceReader` * :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`.) (Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)
* Deprecated :class:`collections.abc.ByteString`. * :mod:`itertools`: The module had undocumented, inefficient, historically buggy,
Prefer :class:`Sequence` or :class:`collections.abc.Buffer`. and inconsistent support for copy, deepcopy, and pickle operations.
For use in typing, prefer a union, like ``bytes | bytearray``, or :class:`collections.abc.Buffer`. This will be removed in 3.14 for a significant reduction in code
(Contributed by Shantanu Jain in :gh:`91896`.) volume and maintenance burden.
(Contributed by Raymond Hettinger in :gh:`101588`.)
* :class:`typing.ByteString`, deprecated since Python 3.9, now causes a * :mod:`multiprocessing`: The default :mod:`multiprocessing` start method will change to a safer one on
: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.
* 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 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 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 disruptive as the majority of code is not expected to care. Use the
@ -1130,15 +1141,29 @@ Pending Removal in Python 3.14
:func:`~multiprocessing.set_start_method` APIs to explicitly specify when :func:`~multiprocessing.set_start_method` APIs to explicitly specify when
your code *requires* ``'fork'``. See :ref:`multiprocessing-start-methods`. 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 functions that have been deprecated since Python 2 but only gained a
proper :exc:`DeprecationWarning` in 3.12. Remove them in 3.14. proper :exc:`DeprecationWarning` in 3.12. Remove them in 3.14.
* :mod:`itertools` had undocumented, inefficient, historically buggy, * :mod:`shutil`: The *onerror* argument of :func:`shutil.rmtree` is deprecated in 3.12,
and inconsistent support for copy, deepcopy, and pickle operations. and will be removed in 3.14.
This will be removed in 3.14 for a significant reduction in code
volume and maintenance burden. * :mod:`typing`: :class:`typing.ByteString`, deprecated since Python 3.9, now causes a
(Contributed by Raymond Hettinger in :gh:`101588`.) :exc:`DeprecationWarning` to be emitted when it is used.
* :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.
* Creating immutable types (:c:macro:`Py_TPFLAGS_IMMUTABLETYPE`) with mutable
bases using the C API.
* ``__package__`` and ``__cached__`` will cease to be set or taken
into consideration by the import system (:gh:`97879`).
* Accessing ``co_lnotab`` was deprecated in :pep:`626` since 3.10 * Accessing ``co_lnotab`` was deprecated in :pep:`626` since 3.10
and was planned to be removed in 3.12 and was planned to be removed in 3.12
@ -1146,32 +1171,6 @@ Pending Removal in Python 3.14
May be removed in 3.14. May be removed in 3.14.
(Contributed by Nikita Sobolev in :gh:`101866`.) (Contributed by Nikita Sobolev in :gh:`101866`.)
* 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`.)
* :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`.)
* 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`.)
Pending Removal in Future Versions Pending Removal in Future Versions
---------------------------------- ----------------------------------
@ -1193,13 +1192,29 @@ although there is currently no date scheduled for their removal.
Removed 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 :pep:`632` "Deprecate distutils module". For projects still using
``distutils`` and cannot be updated to something else, the ``setuptools`` ``distutils`` and cannot be updated to something else, the ``setuptools``
project can be installed: it still provides ``distutils``. project can be installed: it still provides ``distutils``.
(Contributed by Victor Stinner in :gh:`92584`.) (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`. and stop installing setuptools in environments created by :mod:`venv`.
``pip (>= 22.1)`` does not require setuptools to be installed in the ``pip (>= 22.1)`` does not require setuptools to be installed in the
@ -1217,94 +1232,9 @@ Removed
(Contributed by Pradyun Gedam in :gh:`95299`.) (Contributed by Pradyun Gedam in :gh:`95299`.)
* Removed many old deprecated :mod:`unittest` features: * :mod:`ftplib`: Remove the ``FTP_TLS.ssl_version`` class attribute: use the
*context* parameter instead.
- A number of :class:`~unittest.TestCase` method aliases: (Contributed by Victor Stinner in :gh:`94172`.)
============================ =============================== ===============
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:`gzip`: Remove the ``filename`` attribute of :class:`gzip.GzipFile`, * :mod:`gzip`: Remove the ``filename`` attribute of :class:`gzip.GzipFile`,
deprecated since Python 2.6, use the :attr:`~gzip.GzipFile.name` attribute deprecated since Python 2.6, use the :attr:`~gzip.GzipFile.name` attribute
@ -1312,43 +1242,13 @@ Removed
extension if it was not present. extension if it was not present.
(Contributed by Victor Stinner in :gh:`94196`.) (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 * :mod:`hashlib`: Remove the pure Python implementation of
:func:`hashlib.pbkdf2_hmac()`, deprecated in Python 3.10. Python 3.10 and :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 newer requires OpenSSL 1.1.1 (:pep:`644`): this OpenSSL version provides
a C implementation of :func:`~hashlib.pbkdf2_hmac()` which is faster. a C implementation of :func:`~hashlib.pbkdf2_hmac()` which is faster.
(Contributed by Victor Stinner in :gh:`94199`.) (Contributed by Victor Stinner in :gh:`94199`.)
* :mod:`xml.etree.ElementTree`: Remove the ``ElementTree.Element.copy()`` method of the * :mod:`importlib`: Many previously deprecated cleanups in :mod:`importlib` have now been
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
completed: completed:
* References to, and support for :meth:`!module_repr()` has been removed. * References to, and support for :meth:`!module_repr()` has been removed.
@ -1413,6 +1313,115 @@ Removed
``PY_COMPILED``, ``C_EXTENSION``, ``PY_RESOURCE``, ``PKG_DIRECTORY``, ``PY_COMPILED``, ``C_EXTENSION``, ``PY_RESOURCE``, ``PKG_DIRECTORY``,
``C_BUILTIN``, ``PY_FROZEN``, ``PY_CODERESOURCE``, ``IMP_HOOK``. ``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 the ``suspicious`` rule from the documentation Makefile, and
removed ``Doc/tools/rstlint.py``, both in favor of `sphinx-lint removed ``Doc/tools/rstlint.py``, both in favor of `sphinx-lint
<https://github.com/sphinx-contrib/sphinx-lint>`_. <https://github.com/sphinx-contrib/sphinx-lint>`_.
@ -1426,15 +1435,6 @@ Removed
(*ssl_context* in :mod:`imaplib`) instead. (*ssl_context* in :mod:`imaplib`) instead.
(Contributed by Victor Stinner in :gh:`94172`.) (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: .. _whatsnew312-porting-to-python312:
Porting to Python 3.12 Porting to Python 3.12