From 13fa64584b617494c28610a138d47d72dce5a43e Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Wed, 11 May 2022 22:58:18 -0500 Subject: [PATCH] gh-92611: Add details on replacements for cgi utility funcs --- Doc/library/cgi.rst | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Doc/library/cgi.rst b/Doc/library/cgi.rst index 5976c90029c22a..983e412afafd99 100644 --- a/Doc/library/cgi.rst +++ b/Doc/library/cgi.rst @@ -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 `_ for ``POST`` and ``PUT``. + Most :ref:`utility functions ` have replacements. + -------------- Support module for Common Gateway Interface (CGI) scripts. @@ -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="&") @@ -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 `__ 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()