Erik Bray <erik.m.b...@gmail.com> added the comment:

I just encountered this as well.  The way catch_warnings is implemented is a 
bit "dumb" in how it treats _filter_version (it calls _filters_mutated even if 
the active filters are not actually changed when entering catch_warnings).

More significantly, _filter_version is not fine-grained enough.  If some 
warning was already displayed, calling catch_warnings() should not later cause 
that same warning to be displayed again unless the filters were modified in 
such a way, during catch_warnings(), that that warning should be displayed 
(e.g. changed to 'always').

I'm not really sure what to do about that though.  Maybe the "filter version" 
should be per-warning?  Currently the value assigned to each warning in 
__warningregistry__ is not used (it is just set to True), so maybe that could 
actually be used for this.

----------
nosy: +erik.bray

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue29672>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to