bpo-47061: deprecate cgi and cgitb (GH-32410)

Part of PEP 594.
This commit is contained in:
Brett Cannon 2022-04-08 17:15:35 -07:00 committed by GitHub
parent 1c8b3b5d66
commit cd29bd13ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 28 additions and 7 deletions

View file

@ -834,6 +834,8 @@ Deprecated
* :mod:`aifc`
* :mod:`audioop`
* :mod:`cgi`
* :mod:`cgitb`
(Contributed by Brett Cannon in :issue:`47061`.)

View file

@ -53,6 +53,9 @@
"print_form", "print_directory", "print_arguments",
"print_environ_usage"]
warnings._deprecated(__name__, remove=(3,13))
# Logging support
# ===============

View file

@ -31,8 +31,12 @@
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

View file

@ -5,6 +5,7 @@
"""
import os
from configparser import RawConfigParser
import warnings
from distutils.cmd import Command
@ -111,7 +112,9 @@ def _read_pypirc(self):
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)

View file

@ -1,4 +1,3 @@
import cgi
import os
import sys
import tempfile
@ -8,6 +7,9 @@
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

View file

@ -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):

View file

@ -570,14 +570,19 @@ def test_html_escape_filename(self):
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 = """\

View file

@ -0,0 +1 @@
Deprecate cgi and cgitb.