Команда urllib3 столкнулась с неприятным открытием: механизм DeprecationWarning в Python фактически не работает. Библиотека три года предупреждала об устаревших API — через документацию, changelog и встроенные предупреждения. В версии 2.6.0 эти методы удалили. И всё сломалось.
Что произошло: после релиза посыпались баг-репорты от Kubernetes-клиента, Fastly, Airflow и других крупных проектов. Разработчики были в шоке — никто не видел предупреждений и не знал, что API исчезнет. Команде urllib3 пришлось срочно откатывать изменения и возвращать удалённые методы.
Почему так вышло: DeprecationWarning в Python по умолчанию отключён. Интерпретатор просто игнорирует эти предупреждения, если разработчик явно не включил их показ. В итоге API годами кричал о своей устарелости, но его никто не слышал.
Какие есть варианты:
🔘Использовать UserWarning вместо DeprecationWarning — он не игнорируется по умолчанию
🔘Делать более частые мажорные релизы по SemVer, как в криптографических библиотеках
🔘Менять культуру работы с предупреждениями в экосистеме — но это долгий путь
Вывод для авторов библиотек: если полагаетесь только на стандартные предупреждения — велика вероятность, что их никто не увидит до момента, пока код не сломается.
@zen_of_python
Post #4682
3.86K
- ❤ 4
- 🗿 4
- 👍 1
- 😱 1