bpo-32089: Fix warnings filters in dev mode (#4482)
The developer mode (-X dev) now creates all default warnings filters
to order filters in the correct order to always show ResourceWarning
and make BytesWarning depend on the -b option.
Write a functional test to make sure that ResourceWarning is logged
twice at the same location in the developer mode.
Add a new 'dev_mode' field to _PyCoreConfig.
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 97b4493..35bfddd 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -262,15 +262,11 @@
args.append('-' + opt * v)
# -W options
- warnoptions = sys.warnoptions
- xoptions = getattr(sys, '_xoptions', {})
- if 'dev' in xoptions and warnoptions and warnoptions[-1] == 'default':
- # special case: -X dev adds 'default' to sys.warnoptions
- warnoptions = warnoptions[:-1]
- for opt in warnoptions:
+ for opt in sys.warnoptions:
args.append('-W' + opt)
# -X options
+ xoptions = getattr(sys, '_xoptions', {})
if 'dev' in xoptions:
args.extend(('-X', 'dev'))
for opt in ('faulthandler', 'tracemalloc', 'importtime',