diff options
author | Brett Cannon <brett@python.org> | 2022-04-08 17:15:35 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-08 17:15:35 -0700 |
commit | cd29bd13ef1fe18970c5d43b66c545dd03117cb9 (patch) | |
tree | cc111c2bf79956a6a8680f53500662cb2511081b | |
parent | 1c8b3b5d66a629258f1db16939b996264a8b9c37 (diff) | |
download | cpython-git-cd29bd13ef1fe18970c5d43b66c545dd03117cb9.tar.gz |
bpo-47061: deprecate cgi and cgitb (GH-32410)
Part of PEP 594.
-rw-r--r-- | Doc/whatsnew/3.11.rst | 2 | ||||
-rwxr-xr-x | Lib/cgi.py | 3 | ||||
-rw-r--r-- | Lib/cgitb.py | 4 | ||||
-rw-r--r-- | Lib/distutils/config.py | 5 | ||||
-rw-r--r-- | Lib/test/test_cgi.py | 4 | ||||
-rw-r--r-- | Lib/test/test_cgitb.py | 3 | ||||
-rw-r--r-- | Lib/test/test_httpservers.py | 13 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-04-07-20-32-47.bpo-47061.TOufgh.rst | 1 |
8 files changed, 28 insertions, 7 deletions
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 2da01d8105..2758a268e9 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -834,6 +834,8 @@ Deprecated * :mod:`aifc` * :mod:`audioop` + * :mod:`cgi` + * :mod:`cgitb` (Contributed by Brett Cannon in :issue:`47061`.) diff --git a/Lib/cgi.py b/Lib/cgi.py index 22897a14a9..8787567be7 100755 --- a/Lib/cgi.py +++ b/Lib/cgi.py @@ -53,6 +53,9 @@ __all__ = ["MiniFieldStorage", "FieldStorage", "parse", "parse_multipart", "print_form", "print_directory", "print_arguments", "print_environ_usage"] + +warnings._deprecated(__name__, remove=(3,13)) + # Logging support # =============== diff --git a/Lib/cgitb.py b/Lib/cgitb.py index ec15684309..8ce0e833a9 100644 --- a/Lib/cgitb.py +++ b/Lib/cgitb.py @@ -31,8 +31,12 @@ import tempfile import time import tokenize import traceback +import warnings from html import escape as html_escape +warnings._deprecated(__name__, remove=(3, 13)) + + def reset(): """Return a string that resets the CGI and browser to a known state.""" return '''<!--: spam diff --git a/Lib/distutils/config.py b/Lib/distutils/config.py index 2171abd696..a201c86a17 100644 --- a/Lib/distutils/config.py +++ b/Lib/distutils/config.py @@ -5,6 +5,7 @@ that uses .pypirc in the distutils.command package. """ import os from configparser import RawConfigParser +import warnings from distutils.cmd import Command @@ -111,7 +112,9 @@ class PyPIRCCommand(Command): def _read_pypi_response(self, response): """Read and decode a PyPI HTTP response.""" - import cgi + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + import cgi content_type = response.getheader('content-type', 'text/plain') encoding = cgi.parse_header(content_type)[1].get('charset', 'ascii') return response.read().decode(encoding) diff --git a/Lib/test/test_cgi.py b/Lib/test/test_cgi.py index 06762f8872..24486e4d95 100644 --- a/Lib/test/test_cgi.py +++ b/Lib/test/test_cgi.py @@ -1,4 +1,3 @@ -import cgi import os import sys import tempfile @@ -8,6 +7,9 @@ from io import StringIO, BytesIO from test import support from test.support import warnings_helper +cgi = warnings_helper.import_deprecated("cgi") + + class HackedSysModule: # The regression test will have real values in sys.argv, which # will completely confuse the test of the cgi module diff --git a/Lib/test/test_cgitb.py b/Lib/test/test_cgitb.py index 590ffdea11..501c7fcce2 100644 --- a/Lib/test/test_cgitb.py +++ b/Lib/test/test_cgitb.py @@ -1,8 +1,9 @@ from test.support.os_helper import temp_dir from test.support.script_helper import assert_python_failure +from test.support.warnings_helper import import_deprecated import unittest import sys -import cgitb +cgitb = import_deprecated("cgitb") class TestCgitb(unittest.TestCase): diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py index d20b45e8e0..1f041aa121 100644 --- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -570,14 +570,19 @@ print("Hello World") cgi_file2 = """\ #!%s -import cgi +import os +import sys +import urllib.parse print("Content-type: text/html") print() -form = cgi.FieldStorage() -print("%%s, %%s, %%s" %% (form.getfirst("spam"), form.getfirst("eggs"), - form.getfirst("bacon"))) +content_length = int(os.environ["CONTENT_LENGTH"]) +query_string = sys.stdin.buffer.read(content_length) +params = {key.decode("utf-8"): val.decode("utf-8") + for key, val in urllib.parse.parse_qsl(query_string)} + +print("%%s, %%s, %%s" %% (params["spam"], params["eggs"], params["bacon"])) """ cgi_file4 = """\ diff --git a/Misc/NEWS.d/next/Library/2022-04-07-20-32-47.bpo-47061.TOufgh.rst b/Misc/NEWS.d/next/Library/2022-04-07-20-32-47.bpo-47061.TOufgh.rst new file mode 100644 index 0000000000..bd5424979c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-04-07-20-32-47.bpo-47061.TOufgh.rst @@ -0,0 +1 @@ +Deprecate cgi and cgitb. |