Поймать происхождение (импорт) FutureWarning - PullRequest
0 голосов
/ 18 января 2019

Недавно я заметил, что одна из моих программ выдает FutureWarning, которая после некоторого осмотра пришла из SciPy, которую я импортировал (signal_arraytools), и она была легко решена путем обновления SciPy.

Однако, это заставило меня задуматься, есть ли способ поймать FutureWarnings по их происхождению. В частности, я хотел бы передать аналогичные предупреждения, вызванные импортом, в файл журнала A, в то время как другие предупреждения перешли в файл журнала B. Я могу представить себе следующий псевдокод, который делает это, но это не будет хорошо масштабироваться или быть легко обслуживаемым.

import A # External (e.g. SciPy)
import B # Custom

foo = X
try:
    Y = A(X)
except FutureWarning:
    logger_A("Update external package")
try:
    Z = B(Y)
except FutureWarning:
    logger_B("Fix your own stuff")

Я надеюсь, что возможно что-то вроде следующего:

import A # External (e.g. SciPy)
import B # Custom

foo = X
try:
    Y = A(X)
    Z = B(Y)
except FutureWarning:
    # Magically determine which package threw the warning and put message
    # in correct log file

Я полагаю, что в трассировке Warning можно использовать имя пакета, чтобы определить, какой импорт (если есть) вызвал предупреждение, но я не уверен, возможно ли это. Поэтому вопрос заключается в том, возможно ли это или существует стандартный пакет или метод для сбора таких предупреждений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...