summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2017-11-27 11:11:55 (GMT)
committerGitHub <noreply@github.com>2017-11-27 11:11:55 (GMT)
commit21c7730761e2a768e33b89b063a095d007dcfd2c (patch)
tree1d96b9b8c87ed00337e15d2a8c1f287fac4ffcb1
parentc172fc5031a4035986bef0b2fcef906706d7abf3 (diff)
downloadcpython-21c7730761e2a768e33b89b063a095d007dcfd2c.zip
cpython-21c7730761e2a768e33b89b063a095d007dcfd2c.tar.gz
cpython-21c7730761e2a768e33b89b063a095d007dcfd2c.tar.bz2
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.
-rw-r--r--Lib/test/test_cmd_line.py21
-rw-r--r--Lib/warnings.py2
-rw-r--r--Misc/NEWS.d/next/Library/2017-11-27-11-29-34.bpo-32089.6ydDYv.rst3
-rw-r--r--Python/_warnings.c5
4 files changed, 10 insertions, 21 deletions
diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
index 75f7d00..7f95fcc 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -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):
diff --git a/Lib/warnings.py b/Lib/warnings.py
index 5b62569..c4bb22e 100644
--- a/Lib/warnings.py
+++ b/Lib/warnings.py
@@ -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
index 0000000..02d8753
--- /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 086a70d..27f5b81 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));