]> granicus.if.org Git - python/commitdiff
bpo-32089: Use default action for ResourceWarning (#4584)
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 27 Nov 2017 11:11:55 +0000 (12:11 +0100)
committerGitHub <noreply@github.com>
Mon, 27 Nov 2017 11:11:55 +0000 (12:11 +0100)
In development and debug mode, use the "default" action, rather than
the "always" action, for ResourceWarning in the default warnings
filters.

Lib/test/test_cmd_line.py
Lib/warnings.py
Misc/NEWS.d/next/Library/2017-11-27-11-29-34.bpo-32089.6ydDYv.rst [new file with mode: 0644]
Python/_warnings.c

index 75f7d00b24a6b7163bdc3732eb6dc750bb1534c2..7f95fccf79ff42f1c9d9ed3234afeb834ab71eda 100644 (file)
@@ -532,26 +532,26 @@ class CmdLineTest(unittest.TestCase):
         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 @@ class CmdLineTest(unittest.TestCase):
             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):
 
index 5b62569c977350db5f9d1dc8b2eb41300dc8098f..c4bb22ec92a6e53aa1b13f7b783c1f01bdeae8e4 100644 (file)
@@ -540,7 +540,7 @@ if not _warnings_defaults:
 
     # 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 (file)
index 0000000..02d8753
--- /dev/null
@@ -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.
index 086a70d7e68f0a508134c6dbe0b684cda506d1c3..27f5b813a7ef99aa52dc5fe6188f2ed2fe88111a 100644 (file)
@@ -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));