Welcome to hell! Dependency hell!



В статье автор разбирает трудности, с которыми могут столкнуться python–разработчики, использующие зависимости (которых более 1,4 млн. в PyPI) и способы их решения.



Как правило, проблемы составляют не direct-зависимости (те, что вы явно указываете), а зависимости зависимостей (transitive, чтобы понять рекурсию надо сперва понять рекурсию).



На примере это может выглядеть так:



🍭 Ваше приложение использует прямую (direct) зависимость A

🍭 А, в свою очередь, использует B и C (transitive)

🍭 Для корректной работы B и C необходима зависимость D



Вроде все хорошо, в чем же проблема? Проблема может быть в том, что версии D, одновременно удовлетворяющей потребностям B и C может попросту не существовать! В итоге приложение не собирается и не работает.



Для решения этих проблем автор статьи предлагает использовать Watchman – утилиту, которая позволяет строить полный граф зависимостей и поддерживать его в актуальном состоянии для идентификации потенциальных dependency conflict.



На наш взгляд это так же крайне важно и для специалистов по ИБ, которые иногда просят разработчиков обновить зависимость на более «новую», чтобы устранить уязвимость и даже не представляют о последствиях, которые могут произойти (казалось бы, что сложного использовать n+1 версию?).



Это подводит нас к тому, о чем не говорил только ленивый – важности взаимодействия между Dev и Sec командами для поиска оптимального решения задачи ☺️



P.S. Астрологи объявили неделю неработающих preview, поэтому дублируем ссылку: https://blog.acolyer.org/2020/09/21/watchman/