From e4d3e5394d4ec00120441eaa55d745176a266ff2 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 27 Nov 2017 10:39:59 +0100 Subject: [PATCH 1/2] bpo-32089: Use default action for ResourceWarning 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 | 21 ++++----------------- Lib/warnings.py | 2 +- Python/_warnings.c | 5 ++--- 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py index 75f7d00b24a6b7..7f95fccf79ff42 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 5b62569c977350..c4bb22ec92a6e5 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/Python/_warnings.c b/Python/_warnings.c index 086a70d7e68f0a..27f5b813a7ef99 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)); From 888f9eddecd4edd43055813b5523f2885bed4eff Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 27 Nov 2017 11:29:40 +0100 Subject: [PATCH 2/2] Add NEWS entry --- .../next/Library/2017-11-27-11-29-34.bpo-32089.6ydDYv.rst | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2017-11-27-11-29-34.bpo-32089.6ydDYv.rst 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 00000000000000..02d87536e6a6f9 --- /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.