Skip to content

Commit

Permalink
gh-92611: Add details on replacements for cgi utility funcs (GH-92792) (
Browse files Browse the repository at this point in the history
GH-93967)

Per [suggestions on a Discourse thread](https://discuss.python.org/t/pep-594-take-2-removing-dead-batteries-from-the-standard-library/13508/51), discussed in GH-92611 and as a followup to PR GH-92612 , this PR add additional specific per-function replacement information for the utility functions in the `cgi` module deprecated by PEP 594 (PEP-594).

(cherry picked from commit 71354ad)

Co-authored-by: CAM Gerlach <CAM.Gerlach@Gerlach.CAM>
  • Loading branch information
miss-islington and CAM-Gerlach committed Jun 21, 2022
1 parent e2e8847 commit 41964de
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions Doc/library/cgi.rst
Expand Up @@ -19,6 +19,12 @@
The :mod:`cgi` module is deprecated
(see :pep:`PEP 594 <594#cgi>` for details and alternatives).

The :class:`FieldStorage` class can typically be replaced with
:func:`urllib.parse.parse_qsl` for ``GET`` and ``HEAD`` requests,
and the :mod:`email.message` module or
`multipart <https://pypi.org/project/multipart/>`_ for ``POST`` and ``PUT``.
Most :ref:`utility functions <functions-in-cgi-module>` have replacements.

--------------

Support module for Common Gateway Interface (CGI) scripts.
Expand Down Expand Up @@ -293,6 +299,12 @@ algorithms implemented in this module in other circumstances.
``sys.stdin``). The *keep_blank_values*, *strict_parsing* and *separator* parameters are
passed to :func:`urllib.parse.parse_qs` unchanged.

.. deprecated-removed:: 3.11 3.13
This function, like the rest of the :mod:`cgi` module, is deprecated.
It can be replaced by calling :func:`urllib.parse.parse_qs` directly
on the desired query string (except for ``multipart/form-data`` input,
which can be handled as described for :func:`parse_multipart`).


.. function:: parse_multipart(fp, pdict, encoding="utf-8", errors="replace", separator="&")

Expand All @@ -316,12 +328,31 @@ algorithms implemented in this module in other circumstances.
.. versionchanged:: 3.10
Added the *separator* parameter.

.. deprecated-removed:: 3.11 3.13
This function, like the rest of the :mod:`cgi` module, is deprecated.
It can be replaced with the functionality in the :mod:`email` package
(e.g. :class:`email.message.EmailMessage`/:class:`email.message.Message`)
which implements the same MIME RFCs, or with the
`multipart <https://pypi.org/project/multipart/>`__ PyPI project.


.. function:: parse_header(string)

Parse a MIME header (such as :mailheader:`Content-Type`) into a main value and a
dictionary of parameters.

.. deprecated-removed:: 3.11 3.13
This function, like the rest of the :mod:`cgi` module, is deprecated.
It can be replaced with the functionality in the :mod:`email` package,
which implements the same MIME RFCs.

For example, with :class:`email.message.EmailMessage`::

from email.message import EmailMessage
msg = EmailMessage()
msg['content-type'] = 'application/json; charset="utf8"'
main, params = msg.get_content_type(), msg['content-type'].params


.. function:: test()

Expand Down

0 comments on commit 41964de

Please sign in to comment.