Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 4 additions & 17 deletions Lib/test/test_cmd_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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):

Expand Down
2 changes: 1 addition & 1 deletion Lib/warnings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
5 changes: 2 additions & 3 deletions Python/_warnings.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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));
Expand Down