I prefer to not talk about sys.warnoptions since, as you wrote, the order is reversed.
IMHO the priority should be (high priority > low priority):
-W options > PYTHONWARNINGS > BytesWarning > -X dev > default filters
With:
* BytesWarning: "ignore" by default, "default" for -b, "error" for -bb.
* default filters: 4 filters added in release mode
[('ignore', None, <class 'DeprecationWarning'>, None, 0),
('ignore', None, <class 'PendingDeprecationWarning'>, None, 0),
('ignore', None, <class 'ImportWarning'>, None, 0),
('ignore', None, <class 'ResourceWarning'>, None, 0)]
or 1 filter for pydebug build:
[('default', None, <class 'ResourceWarning'>, None, 0)]
Currently, only "-W options > PYTHONWARNINGS" goes into sys.warnoptions, whereas "BytesWarning > -X dev > default filters" is added by the warnings module ("init_filters()"). |