Skip to content

Commit bf34fdf

Browse files
committed
Group PEP 594 removals, move shared deprecation info to top
1 parent b469a31 commit bf34fdf

File tree

1 file changed

+116
-113
lines changed

1 file changed

+116
-113
lines changed

Doc/whatsnew/3.13.rst

Lines changed: 116 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -688,10 +688,122 @@ although there is currently no date scheduled for their removal.
688688
Removed
689689
=======
690690

691-
* :pep:`594`: Remove the :mod:`!telnetlib` module, deprecated in Python 3.11:
692-
use the projects `telnetlib3 <https://pypi.org/project/telnetlib3/>`_ or
693-
`Exscript <https://pypi.org/project/Exscript/>`_ instead.
694-
(Contributed by Victor Stinner in :gh:`104773`.)
691+
PEP 594: dead batteries
692+
-----------------------
693+
694+
* :pep:`594`: Removed 19 modules from the standard library,
695+
deprecated in Python 3.11:
696+
697+
* :mod:`!telnetlib`, :use the projects
698+
`telnetlib3 <https://pypi.org/project/telnetlib3/>`_ or
699+
`Exscript <https://pypi.org/project/Exscript/>`_ instead.
700+
(Contributed by Victor Stinner in :gh:`104773`.)
701+
702+
* :mod:`!cgi` and :mod:`!cgitb`.
703+
704+
* ``cgi.FieldStorage`` can typically be replaced with
705+
:func:`urllib.parse.parse_qsl` for ``GET`` and ``HEAD`` requests,
706+
and the :mod:`email.message` module or `multipart
707+
<https://pypi.org/project/multipart/>`__ PyPI project for ``POST`` and
708+
``PUT``.
709+
710+
* ``cgi.parse()`` can be replaced by calling :func:`urllib.parse.parse_qs`
711+
directly on the desired query string, except for ``multipart/form-data``
712+
input, which can be handled as described for ``cgi.parse_multipart()``.
713+
714+
* ``cgi.parse_multipart()`` can be replaced with the functionality in the
715+
:mod:`email` package (e.g. :class:`email.message.EmailMessage` and
716+
:class:`email.message.Message`) which implements the same MIME RFCs, or
717+
with the `multipart <https://pypi.org/project/multipart/>`__ PyPI project.
718+
719+
* ``cgi.parse_header()`` can be replaced with the functionality in the
720+
:mod:`email` package, which implements the same MIME RFCs. For example,
721+
with :class:`email.message.EmailMessage`::
722+
723+
from email.message import EmailMessage
724+
msg = EmailMessage()
725+
msg['content-type'] = 'application/json; charset="utf8"'
726+
main, params = msg.get_content_type(), msg['content-type'].params
727+
728+
(Contributed by Victor Stinner in :gh:`104773`.)
729+
730+
* :mod:`!sndhdr`: use the projects
731+
`filetype <https://pypi.org/project/filetype/>`_,
732+
`puremagic <https://pypi.org/project/puremagic/>`_, or
733+
`python-magic <https://pypi.org/project/python-magic/>`_ instead.
734+
(Contributed by Victor Stinner in :gh:`104773`.)
735+
736+
* :mod:`!pipes`: use the :mod:`subprocess` module instead.
737+
(Contributed by Victor Stinner in :gh:`104773`.)
738+
739+
* :mod:`!ossaudiodev`: use the
740+
`pygame project <https://www.pygame.org/>`_ for audio playback.
741+
(Contributed by Victor Stinner in :gh:`104780`.)
742+
743+
* :mod:`!sunau`.
744+
(Contributed by Victor Stinner in :gh:`104773`.)
745+
746+
* :mod:`!mailcap`.
747+
The :mod:`mimetypes` module provides an alternative.
748+
(Contributed by Victor Stinner in :gh:`104773`.)
749+
750+
* :mod:`!spwd`:
751+
the `python-pam project <https://pypi.org/project/python-pam/>`_
752+
can be used instead.
753+
(Contributed by Victor Stinner in :gh:`104773`.)
754+
755+
* :mod:`!nntplib`:
756+
the `PyPI nntplib project <https://pypi.org/project/nntplib/>`_
757+
can be used instead.
758+
(Contributed by Victor Stinner in :gh:`104773`.)
759+
760+
* :mod:`!nis`.
761+
(Contributed by Victor Stinner in :gh:`104773`.)
762+
763+
* :mod:`!xdrlib`.
764+
(Contributed by Victor Stinner in :gh:`104773`.)
765+
766+
* :mod:`!msilib`.
767+
(Contributed by Zachary Ware in :gh:`104773`.)
768+
769+
* :mod:`!crypt` module and its private :mod:`!_crypt` extension.
770+
The :mod:`hashlib` module is a potential replacement for certain use cases.
771+
Otherwise, the following PyPI projects can be used:
772+
773+
* `bcrypt <https://pypi.org/project/bcrypt/>`_:
774+
Modern password hashing for your software and your servers.
775+
* `passlib <https://pypi.org/project/passlib/>`_:
776+
Comprehensive password hashing framework supporting over 30 schemes.
777+
* `argon2-cffi <https://pypi.org/project/argon2-cffi/>`_:
778+
The secure Argon2 password hashing algorithm.
779+
* `legacycrypt <https://pypi.org/project/legacycrypt/>`_:
780+
Wrapper to the POSIX crypt library call and associated functionality.
781+
782+
(Contributed by Victor Stinner in :gh:`104773`.)
783+
784+
* :mod:`!uu`: the :mod:`base64` module is a modern alternative.
785+
(Contributed by Victor Stinner in :gh:`104773`.)
786+
787+
* :mod:`!aifc`.
788+
(Contributed by Victor Stinner in :gh:`104773`.)
789+
790+
* :mod:`!audioop`.
791+
(Contributed by Victor Stinner in :gh:`104773`.)
792+
793+
* :mod:`!chunk`.
794+
(Contributed by Victor Stinner in :gh:`104773`.)
795+
796+
* :mod:`!imghdr`:
797+
use the projects
798+
`filetype <https://pypi.org/project/filetype/>`_,
799+
`puremagic <https://pypi.org/project/puremagic/>`_,
800+
or `python-magic <https://pypi.org/project/python-magic/>`_ instead.
801+
(Contributed by Victor Stinner in :gh:`104773`.)
802+
803+
* Remove support for the keyword-argument method of creating
804+
:class:`typing.TypedDict` types, deprecated in Python 3.11.
805+
(Contributed by Tomas Roun in :gh:`104786`.)
806+
695807

696808
* Remove the ``2to3`` program and the :mod:`!lib2to3` module,
697809
deprecated in Python 3.11.
@@ -733,115 +845,6 @@ Removed
733845

734846
(Contributed by Hugo van Kemenade in :gh:`104835`.)
735847

736-
* :pep:`594`: Remove the :mod:`!cgi` and :mod:`!cgitb` modules,
737-
deprecated in Python 3.11.
738-
739-
* ``cgi.FieldStorage`` can typically be replaced with
740-
:func:`urllib.parse.parse_qsl` for ``GET`` and ``HEAD`` requests, and the
741-
:mod:`email.message` module or `multipart
742-
<https://pypi.org/project/multipart/>`__ PyPI project for ``POST`` and
743-
``PUT``.
744-
745-
* ``cgi.parse()`` can be replaced by calling :func:`urllib.parse.parse_qs`
746-
directly on the desired query string, except for ``multipart/form-data``
747-
input, which can be handled as described for ``cgi.parse_multipart()``.
748-
749-
* ``cgi.parse_multipart()`` can be replaced with the functionality in the
750-
:mod:`email` package (e.g. :class:`email.message.EmailMessage` and
751-
:class:`email.message.Message`) which implements the same MIME RFCs, or
752-
with the `multipart <https://pypi.org/project/multipart/>`__ PyPI project.
753-
754-
* ``cgi.parse_header()`` can be replaced with the functionality in the
755-
:mod:`email` package, which implements the same MIME RFCs. For example,
756-
with :class:`email.message.EmailMessage`::
757-
758-
from email.message import EmailMessage
759-
msg = EmailMessage()
760-
msg['content-type'] = 'application/json; charset="utf8"'
761-
main, params = msg.get_content_type(), msg['content-type'].params
762-
763-
(Contributed by Victor Stinner in :gh:`104773`.)
764-
765-
* :pep:`594`: Remove the :mod:`!sndhdr` module, deprecated in Python 3.11: use
766-
the projects `filetype <https://pypi.org/project/filetype/>`_, `puremagic
767-
<https://pypi.org/project/puremagic/>`_, or `python-magic
768-
<https://pypi.org/project/python-magic/>`_ instead.
769-
(Contributed by Victor Stinner in :gh:`104773`.)
770-
771-
* :pep:`594`: Remove the :mod:`!pipes` module, deprecated in Python 3.11:
772-
use the :mod:`subprocess` module instead.
773-
(Contributed by Victor Stinner in :gh:`104773`.)
774-
775-
* :pep:`594`: Remove the :mod:`!ossaudiodev` module, deprecated in Python 3.11:
776-
use the `pygame project <https://www.pygame.org/>`_ for audio playback.
777-
(Contributed by Victor Stinner in :gh:`104780`.)
778-
779-
* :pep:`594`: Remove the :mod:`!sunau` module, deprecated in Python 3.11.
780-
(Contributed by Victor Stinner in :gh:`104773`.)
781-
782-
* :pep:`594`: Remove the :mod:`!mailcap` module, deprecated in Python 3.11.
783-
The :mod:`mimetypes` module provides an alternative.
784-
(Contributed by Victor Stinner in :gh:`104773`.)
785-
786-
* :pep:`594`: Remove the :mod:`!spwd` module, deprecated in Python 3.11:
787-
the `python-pam project <https://pypi.org/project/python-pam/>`_ can be used
788-
instead.
789-
(Contributed by Victor Stinner in :gh:`104773`.)
790-
791-
* :pep:`594`: Remove the :mod:`!nntplib` module, deprecated in Python 3.11:
792-
the `PyPI nntplib project <https://pypi.org/project/nntplib/>`_ can be used
793-
instead.
794-
(Contributed by Victor Stinner in :gh:`104773`.)
795-
796-
* :pep:`594`: Remove the :mod:`!nis` module, deprecated in Python 3.11.
797-
(Contributed by Victor Stinner in :gh:`104773`.)
798-
799-
* :pep:`594`: Remove the :mod:`!xdrlib` module, deprecated in Python 3.11.
800-
(Contributed by Victor Stinner in :gh:`104773`.)
801-
802-
* :pep:`594`: Remove the :mod:`!msilib` module, deprecated in Python 3.11.
803-
(Contributed by Zachary Ware in :gh:`104773`.)
804-
805-
* :pep:`594`: Remove the :mod:`!crypt` module and its private :mod:`!_crypt`
806-
extension, deprecated in Python 3.11.
807-
The :mod:`hashlib` module is a potential replacement for certain use cases.
808-
Otherwise, the following PyPI projects can be used:
809-
810-
* `bcrypt <https://pypi.org/project/bcrypt/>`_:
811-
Modern password hashing for your software and your servers.
812-
* `passlib <https://pypi.org/project/passlib/>`_:
813-
Comprehensive password hashing framework supporting over 30 schemes.
814-
* `argon2-cffi <https://pypi.org/project/argon2-cffi/>`_:
815-
The secure Argon2 password hashing algorithm.
816-
* `legacycrypt <https://pypi.org/project/legacycrypt/>`_:
817-
Wrapper to the POSIX crypt library call and associated functionality.
818-
819-
(Contributed by Victor Stinner in :gh:`104773`.)
820-
821-
* :pep:`594`: Remove the :mod:`!uu` module, deprecated in Python 3.11:
822-
the :mod:`base64` module is a modern alternative.
823-
(Contributed by Victor Stinner in :gh:`104773`.)
824-
825-
* :pep:`594`: Remove the :mod:`!aifc` module, deprecated in Python 3.11.
826-
(Contributed by Victor Stinner in :gh:`104773`.)
827-
828-
* :pep:`594`: Remove the :mod:`!audioop` module, deprecated in Python 3.11.
829-
(Contributed by Victor Stinner in :gh:`104773`.)
830-
831-
* :pep:`594`: Remove the :mod:`!chunk` module, deprecated in Python 3.11.
832-
(Contributed by Victor Stinner in :gh:`104773`.)
833-
834-
* Remove support for the keyword-argument method of creating
835-
:class:`typing.TypedDict` types, deprecated in Python 3.11.
836-
(Contributed by Tomas Roun in :gh:`104786`.)
837-
838-
* :pep:`594`: Remove the :mod:`!imghdr` module, deprecated in Python 3.11:
839-
use the projects
840-
`filetype <https://pypi.org/project/filetype/>`_,
841-
`puremagic <https://pypi.org/project/puremagic/>`_,
842-
or `python-magic <https://pypi.org/project/python-magic/>`_ instead.
843-
(Contributed by Victor Stinner in :gh:`104773`.)
844-
845848
* Remove the untested and undocumented :meth:`!unittest.TestProgram.usageExit`
846849
method, deprecated in Python 3.11.
847850
(Contributed by Hugo van Kemenade in :gh:`104992`.)

0 commit comments

Comments
 (0)