Вопрос аудитории в значительной степени связан с идеей, что некоторые Python написаны как библиотеки, предназначенные для использования другими людьми, которые пишут скрипты на python, тогда как некоторые Python написаны как приложения, предназначенные для использования людьми. кто может не знать никакого программирования.
Конкретное описание, на которое вы ссылаетесь, было изменением в Python 3.7. Полное описание изменения можно прочитать по адресу https://www.python.org/dev/peps/pep-0565/,, но вот особенно важный раздел с примерами использования:
Это даст следующие три различные категории предупреждения обратной совместимости с тремя разными целевыми аудиториями:
- PendingDeprecationWarning: по умолчанию скрыто для всего кода. Предполагаемая аудитория - разработчики Python, которые активно заинтересованы в обеспечении будущей совместимости своего программного обеспечения (например, профессиональные разработчики приложений Python с конкретными обязательствами по поддержке).
- DeprecationWarning: по умолчанию сообщается для кода, который запускается непосредственно в модуле
__main__
(поскольку такой код считается относительно маловероятным с выделенным набором тестов), но по умолчанию скрыт для кода в других модулях. Предполагаемая аудитория - разработчики Python, которые рискуют обновить свои зависимости (включая обновления до самого Python), нарушив свое программное обеспечение (например, разработчики, использующие Python для создания сценариев в средах, где кто-то еще контролирует время обновления зависимостей).
- FutureWarning: сообщается по умолчанию для всего кода. Предполагаемая аудитория - пользователи приложений, написанных на Python, а не другие разработчики Python (например, предупреждение об использовании устаревшей настройки в формате файла конфигурации).
Я не думаю, что ваша таблица достаточно точна - FutureWarning
, насколько я понимаю, должно быть для вещей, которые устарели сейчас . Как я понимаю, DeprecationWarning
означает «измените ваш код сейчас, или он скоро сломается», PendingDeprecationWarning
означает «вам придется что-то изменить в конце концов», а FutureWarning
означает «что-то таким, каким вы» Это неправильно, и может привести к сбою позже. "
FutureWarning
также используется, чтобы предупредить вас, что в будущем обновлении не будет происходить то же самое, даже если они будут действительным кодом. Это может быть актуально как для разработчиков, так и для пользователей. Например, многие из FutureWarning
, которые я видел на практике, - это вещи, в которых значение какой-то вспомогательной функции может измениться (например, ==
для двух массивов возвращает массив True / False для каждого элемента или делает это вернуть единственное значение True / False, True только в том случае, если все элементы равны? Когда numpy хочет изменить это, они создают FutureWarning
)
При разработке вашей библиотеки обязательно используйте эти или их подклассы. Люди, пишущие код с использованием вашей библиотеки, ожидают, что их интеграционные тесты выдадут DeprecationWarning
s, если есть потенциальная проблема (точнее, инструменты тестирования могут специально их искать).