/awesome-dependency-injection-in-python

A curated list of awesome things related to dependency inversion / dependency injection in Python. (Contributions welcomed).

Awesome Dependency Injection in Python

A curated list of awesome things related to dependency inversion / dependency injection in Python.

Awesome

Talks / slides

  • Python Dependency Injection (PDF) (Alex Martelli, 2008).
  • Fang: Pythonic dependency injection (video) (Nathan Craike, 2015).

Videos

Articles / blog posts

Books

Software

DI Frameworks / Containers

  • 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].

DI components of Web frameworks

Several modern Python web frameworks include DI components, including:

Archived or unmaintained DI frameworks

  • 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].

Integration with web frameworks

  • 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.