[Python-checkins] bpo-32089: Use default action for ResourceWarning (#4584)

Victor Stinner webhook-mailer at python.org
Mon Nov 27 06:11:58 EST 2017


https://github.com/python/cpython/commit/21c7730761e2a768e33b89b063a095d007dcfd2c
commit: 21c7730761e2a768e33b89b063a095d007dcfd2c
branch: master
author: Victor Stinner <victor.stinner at gmail.com>
committer: GitHub <noreply at github.com>
date: 2017-11-27T12:11:55+01:00
summary:

bpo-32089: Use default action for ResourceWarning (#4584)

In development and debug mode, use the "default" action, rather than
the "always" action, for ResourceWarning in the default warnings
filters.

files:
A Misc/NEWS.d/next/Library/2017-11-27-11-29-34.bpo-32089.6ydDYv.rst
M Lib/test/test_cmd_line.py
M Lib/warnings.py
M Python/_warnings.c

diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
index 75f7d00b24a..7f95fccf79f 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -532,26 +532,26 @@ def test_xdev(self):
         out = self.run_xdev("-c", code)
         self.assertEqual(out,
                          "ignore::BytesWarning "
-                         "always::ResourceWarning "
+                         "default::ResourceWarning "
                          "default::Warning")
 
         out = self.run_xdev("-b", "-c", code)
         self.assertEqual(out,
                          "default::BytesWarning "
-                         "always::ResourceWarning "
+                         "default::ResourceWarning "
                          "default::Warning")
 
         out = self.run_xdev("-bb", "-c", code)
         self.assertEqual(out,
                          "error::BytesWarning "
-                         "always::ResourceWarning "
+                         "default::ResourceWarning "
                          "default::Warning")
 
         out = self.run_xdev("-Werror", "-c", code)
         self.assertEqual(out,
                          "error::Warning "
                          "ignore::BytesWarning "
-                         "always::ResourceWarning "
+                         "default::ResourceWarning "
                          "default::Warning")
 
         try:
@@ -573,19 +573,6 @@ def test_xdev(self):
             out = self.run_xdev("-c", code)
             self.assertEqual(out, "True")
 
-        # Make sure that ResourceWarning emitted twice at the same line number
-        # is logged twice
-        filename = support.TESTFN
-        self.addCleanup(support.unlink, filename)
-        with open(filename, "w", encoding="utf8") as fp:
-            print("def func(): open(__file__)", file=fp)
-            print("func()", file=fp)
-            print("func()", file=fp)
-            fp.flush()
-
-        out = self.run_xdev(filename)
-        self.assertEqual(out.count(':1: ResourceWarning: '), 2, out)
-
 
 class IgnoreEnvironmentTest(unittest.TestCase):
 
diff --git a/Lib/warnings.py b/Lib/warnings.py
index 5b62569c977..c4bb22ec92a 100644
--- a/Lib/warnings.py
+++ b/Lib/warnings.py
@@ -540,7 +540,7 @@ def _filters_mutated():
 
     # resource usage warnings are enabled by default in pydebug mode
     if dev_mode or py_debug:
-        resource_action = "always"
+        resource_action = "default"
     else:
         resource_action = "ignore"
     simplefilter(resource_action, category=ResourceWarning, append=1)
diff --git a/Misc/NEWS.d/next/Library/2017-11-27-11-29-34.bpo-32089.6ydDYv.rst b/Misc/NEWS.d/next/Library/2017-11-27-11-29-34.bpo-32089.6ydDYv.rst
new file mode 100644
index 00000000000..02d87536e6a
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2017-11-27-11-29-34.bpo-32089.6ydDYv.rst
@@ -0,0 +1,3 @@
+warnings: In development (-X dev) and debug mode (pydebug build), use the
+"default" action for ResourceWarning, rather than the "always" action, in
+the default warnings filters.
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 086a70d7e68..27f5b813a7e 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -13,7 +13,6 @@ _Py_IDENTIFIER(argv);
 _Py_IDENTIFIER(stderr);
 _Py_IDENTIFIER(ignore);
 _Py_IDENTIFIER(error);
-_Py_IDENTIFIER(always);
 _Py_static_string(PyId_default, "default");
 
 static int
@@ -1208,9 +1207,9 @@ init_filters(const _PyCoreConfig *config)
     _Py_Identifier *resource_action;
     /* resource usage warnings are enabled by default in pydebug mode */
 #ifdef Py_DEBUG
-    resource_action = &PyId_always;
+    resource_action = &PyId_default;
 #else
-    resource_action = (dev_mode ? &PyId_always : &PyId_ignore);
+    resource_action = (dev_mode ? &PyId_default: &PyId_ignore);
 #endif
     PyList_SET_ITEM(filters, pos++, create_filter(PyExc_ResourceWarning,
                     resource_action));



More information about the Python-checkins mailing list