Only overwrite warnings filter if set explicitly (resolves #2369)

This way, pre-defined warning filters are respected and users are still able to use the fine-grained warning settings if they like.
This commit is contained in:
ines 2018-05-26 18:44:15 +02:00
parent 330c039106
commit f7103babd9

View File

@ -302,7 +302,7 @@ def _get_warn_excl(arg):
return [w_id.strip() for w_id in arg.split(',')] return [w_id.strip() for w_id in arg.split(',')]
SPACY_WARNING_FILTER = os.environ.get('SPACY_WARNING_FILTER', 'always') SPACY_WARNING_FILTER = os.environ.get('SPACY_WARNING_FILTER')
SPACY_WARNING_TYPES = _get_warn_types(os.environ.get('SPACY_WARNING_TYPES')) SPACY_WARNING_TYPES = _get_warn_types(os.environ.get('SPACY_WARNING_TYPES'))
SPACY_WARNING_IGNORE = _get_warn_excl(os.environ.get('SPACY_WARNING_IGNORE')) SPACY_WARNING_IGNORE = _get_warn_excl(os.environ.get('SPACY_WARNING_IGNORE'))
@ -329,5 +329,6 @@ def _warn(message, warn_type='user'):
category = WARNINGS[warn_type] category = WARNINGS[warn_type]
stack = inspect.stack()[-1] stack = inspect.stack()[-1]
with warnings.catch_warnings(): with warnings.catch_warnings():
if SPACY_WARNING_FILTER:
warnings.simplefilter(SPACY_WARNING_FILTER, category) warnings.simplefilter(SPACY_WARNING_FILTER, category)
warnings.warn_explicit(message, category, stack[1], stack[2]) warnings.warn_explicit(message, category, stack[1], stack[2])