A curated list of awesome things related to dependency inversion / dependency injection in Python.
- Python Dependency Injection (PDF) (Alex Martelli, 2008).
- Fang: Pythonic dependency injection (video) (Nathan Craike, 2015).
- Loose Coupling & Dependency Injection the EASY Way! (Hynek Schlawack, 2024)
- Dependency Inversion: Write BETTER PYTHON CODE Part 2 (ArjanCodes, 2021)
- Dependency INVERSION vs Dependency INJECTION in Python (ArjanCodes, 2021)
- Enforcing Single Responsibility Principle in Python (Nikita Sobolev / Никита Соболев, 2019)
- Pythonic Dependency Injection: A Practical Guide (Sune Andreas Dybro Debel, 2018)
- Elegant Flask API Development Part 1 (mostly covers Flask-Injector).
- "(pytest) Fixtures: a prime example of dependency injection"
- Tests and comparison of Python dependency injection libraries ★3 - Tests and comparison of Python dependency injection libraries. [🐍, Unknown license].
- Typed Functional Dependency Injection in Python
- DI patterns (Abilian, 2024)
- DI anti-patterns (Abilian, 2024)
- Pythonic Application Architecture Patterns for Managing Complexity ★3204 - A Book about Pythonic Application Architecture Patterns for Managing Complexity. Cosmos is the Opposite of Chaos you see. O'R. wouldn't actually let us call it "Cosmic Python" tho. [🐍, Other license].
- python-dependency-injector ★3517 - Dependency injection framework for Python. [🐍, BSD 3-Clause "New" or "Revised" License].
- returns ★3184 - Make your functions return something meaningful, typed, and safe!. [🐍, BSD 2-Clause "Simplified" License].
- Injector ★1150 - Python dependency injection framework, inspired by Guice. [🐍, BSD 3-Clause "New" or "Revised" License].
- Inject ★622 - Python dependency injection. [🐍, Apache License 2.0].
- Dependencies ★355 - Constructor injection designed with OOP in mind. [🐍, BSD 2-Clause "Simplified" License].
- Kink ★302 - Dependency injection container made for Python. [🐍, MIT License].
- Punq ★260 - An IoC container for Python 3.6+. [🐍, MIT License].
- di ★260 - Pythonic dependency injection. [🐍, MIT License].
- svcs ★212 - A Flexible Service Locator for Python. [🐍, MIT License].
- Rodi ★136 - Implementation of dependency injection for Python 3. [🐍, MIT License].
- injectable ★104 - Python Dependency Injection for Humans™. [🐍, MIT License].
- Antidote ★89 - Dependency injection for Python. [🐍, MIT License].
- Opyoid ★58 - Dependency injection library for Python. [🐍, MIT License].
- Wireup ★51 - Concise, Powerful, and Type-Safe Python Dependency Injection Library. [🐍, MIT License].
- Lagom ★30: Type based auto-wiring dependency injection with support for async and threading.
- Fresh Bakery ★18 - Bake dependency injections asynchronously and stupidly simple. [🐍, MIT License].
- andi ★17 - Library for annotation-based dependency injection. [🐍, BSD 3-Clause "New" or "Revised" License].
Several modern Python web frameworks include DI components, including:
- FastAPI -> Dependencies - First Steps.
- Litestar -> Dependency Injection.
- Sanic -> Dependency Injection.
- Xpresso -> di (see above)
- Blacksheep -> Rodi (see above)
- Aiodine (dead, see below) was the DI framework for the Bocadillo project (also dead)
- Serum ★84 - Dependency injection framework for Python 3.6. [🐍, MIT License].
- Aiodine ★53 - 🧪 Async-first Python dependency injection library. [🐍, MIT License].
- Wiring ★27 - Architectural foundation for Python applications. [🐍, Apache License 2.0].
- Flask-Injector ★264 - Adds Injector support to Flask. [🐍, BSD 3-Clause "New" or "Revised" License].
- svcs ★212 - A Flexible Service Locator for Python. [🐍, MIT License].
- Wireup ★51 - Concise, Powerful, and Type-Safe Python Dependency Injection Library. [🐍, MIT License].
See also above.