When in debug mode, configuration.py does the following on line 201:
if asbool(config['debug']):
warnings.simplefilter("ignore")
config['pylons.strict_c'] = True
warnings.resetwarnings()
config['pylons.stritmpl_contextt_tmpl_context'] = True
This causes all previously configured warning filters to be lost. A better way to temporarily catch all warnings is the following:
if asbool(config['debug']):
filters = warnings.filters[:]
warnings.simplefilter("ignore")
config['pylons.strict_c'] = True
warnings.filters = filters
config['pylons.stritmpl_contextt_tmpl_context'] = True
This approach is used by foreach.py in FormEncode, for example.