Как перехватывать предупреждения, не генерируемые warnings.warn - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно вызывать исключения в моем коде, если выдается предупреждение.Например, при сравнении строки и объекта байтов, 'b' == b'g', должно быть поднято BytesWarning.Я могу поймать его с помощью флага -bb (т. Е. Запустить python -bb), но хочу иметь возможность сделать это внутри самого кода.

Я пытался использовать warnings.filterwarnings('error', category=BytesWarning), но он только перехватываетпредупреждения, выданные warnings.warn().

Как я могу перехватить предупреждения, выданные самим неправильным кодом?

РЕДАКТИРОВАТЬ Простой пример:

import warnings
warnings.filterwarnings('error', category=BytesWarning)
warnings.warn('message', BytesWarning)

дает мне

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
BytesWarning: message

но если я сделаю 'b' == b'b' вместо вызова warnings.warn(), он просто напечатает false.

С флагом -bb:

~$ python -bb
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 'b' == b'b'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
BytesWarning: Comparison between bytes and string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...