python-injection, и главная фишка — минимум конфигурации и максимум простоты.Работает всё на декораторах и type hints: вешаете
@injectable или @singleton на класс, а потом @inject на функцию — и зависимости резолвятся автоматически по аннотациям типов. Поддерживаются четыре типа времени жизни: transient (новый инстанс каждый раз), singleton, constant (для конфигов) и scoped (привязка к контексту). Есть поддержка async, профили для переключения зависимостей между окружениями и scoped-зависимости через context manager.Комьюнити сравнивает проект с
dependency-injector и другими решениями. Автор отмечает, что его подход менее инвазивный: если захотите избавиться от библиотеки, достаточно убрать декораторы — код останется рабочим. Из минусов — нужно не забывать импортировать модули, где объявлены декораторы, иначе зависимости не зарегистрируются. Работает только на Python 3.12+.Установка стандартная:
pip install python-injection. Дальше импортируете нужные декораторы из injection и размечаете классы и функции.Код в репо.
@zen_of_python