[Python-checkins] bpo-41139: Deprecate `cgi.log()` (GH-25625)

methane webhook-mailer at python.org
Wed Apr 28 22:36:13 EDT 2021


https://github.com/python/cpython/commit/e52ab42cedd2a5ef4c3c1a47d0cf96a8f06d051f
commit: e52ab42cedd2a5ef4c3c1a47d0cf96a8f06d051f
branch: master
author: Inada Naoki <songofacandy at gmail.com>
committer: methane <songofacandy at gmail.com>
date: 2021-04-29T11:36:04+09:00
summary:

bpo-41139: Deprecate `cgi.log()` (GH-25625)

files:
A Misc/NEWS.d/next/Library/2021-04-26-17-47-48.bpo-41139.ROhn1k.rst
M Doc/whatsnew/3.10.rst
M Lib/cgi.py
M Lib/test/test_cgi.py

diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst
index 37c1b8a0cb2eb..fa99ce5792994 100644
--- a/Doc/whatsnew/3.10.rst
+++ b/Doc/whatsnew/3.10.rst
@@ -1427,6 +1427,9 @@ Deprecated
   Python 3.12. Use :meth:`pathlib.Path.hardlink_to` instead.
   (Contributed by Barney Gale in :issue:`39950`.)
 
+* ``cgi.log()`` is deprecated and slated for for removal in Python 3.12.
+  (Contributed by Inada Naoki in :issue:`41139`.)
+
 
 Removed
 =======
diff --git a/Lib/cgi.py b/Lib/cgi.py
index 6c72507c2087d..6cb8cf28bd664 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -41,6 +41,7 @@
 import html
 import locale
 import tempfile
+import warnings
 
 __all__ = ["MiniFieldStorage", "FieldStorage", "parse", "parse_multipart",
            "parse_header", "test", "print_exception", "print_environ",
@@ -77,9 +78,11 @@ def initlog(*allargs):
 
     """
     global log, logfile, logfp
+    warnings.warn("cgi.log() is deprecated as of 3.10. Use logging instead",
+                  DeprecationWarning, stacklevel=2)
     if logfile and not logfp:
         try:
-            logfp = open(logfile, "a")
+            logfp = open(logfile, "a", encoding="locale")
         except OSError:
             pass
     if not logfp:
diff --git a/Lib/test/test_cgi.py b/Lib/test/test_cgi.py
index 239d97589cac2..c1b893d3fe534 100644
--- a/Lib/test/test_cgi.py
+++ b/Lib/test/test_cgi.py
@@ -6,6 +6,7 @@
 from collections import namedtuple
 from io import StringIO, BytesIO
 from test import support
+from test.support import warnings_helper
 
 class HackedSysModule:
     # The regression test will have real values in sys.argv, which
@@ -220,6 +221,7 @@ def test_separator(self):
                     else:
                         self.assertEqual(fs.getvalue(key), expect_val[0])
 
+    @warnings_helper.ignore_warnings(category=DeprecationWarning)
     def test_log(self):
         cgi.log("Testing")
 
diff --git a/Misc/NEWS.d/next/Library/2021-04-26-17-47-48.bpo-41139.ROhn1k.rst b/Misc/NEWS.d/next/Library/2021-04-26-17-47-48.bpo-41139.ROhn1k.rst
new file mode 100644
index 0000000000000..5df8929891923
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-04-26-17-47-48.bpo-41139.ROhn1k.rst
@@ -0,0 +1 @@
+Deprecate undocumented ``cgi.log()`` API.



More information about the Python-checkins mailing list