GitXplorerGitXplorer
s

awesome-dependency-injection-in-python

public
390 stars
22 forks
3 issues

Commits

List of commits on branch main.
Unverified
79858f109d92f15ec7c78ffd0d84f05f08df42fd

update stars

ssfermigier committed 5 days ago
Unverified
7c80dba37978c63dcce8b02886c59f1f8a3cfb3f

update

ssfermigier committed a month ago
Unverified
7f836dafe6dc5396813595e10a4f4089bf4fe2f4

chore: update stars

ssfermigier committed 2 months ago
Unverified
a96d27af4690858922239afa0eae9811800b20bb

Merge branch 'main' of github.com:sfermigier/awesome-dependency-injection-in-python

ssfermigier committed 2 months ago
Verified
8ec3ffeb521d79218bf51acba0cbe870e71535c9

Merge pull request #29 from raceychan/main

ssfermigier committed 2 months ago
Unverified
7da45beedd21903d21df3cc0c616af35c65eb7b5

update DI Frameworks/Containers, add ididi

rraceychan committed 2 months ago

README

The README file for this repository.

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 ★4088 - Dependency injection framework for Python. [🐍, BSD 3-Clause "New" or "Revised" License].
  • returns ★3736 - Make your functions return something meaningful, typed, and safe!. [🐍, BSD 2-Clause "Simplified" License].
  • Injector ★1352 - Python dependency injection framework, inspired by Guice. [🐍, BSD 3-Clause "New" or "Revised" License].
  • Inject ★709 - Python dependency injection. [🐍, Apache License 2.0].
  • Dishka ★491 - Cute DI framework with agreeable API and everything you need. [🐍, Apache License 2.0].
  • Kink ★414 - Dependency injection container made for Python. [🐍, MIT License].
  • FastDepends ★329 - FastAPI Dependency Injection system extracted from FastAPI and cleared of all HTTP logic. [🐍, MIT License].
  • Punq ★327 - An IoC container for Python 3.6+. [🐍, MIT License].
  • svcs ★320 - A Flexible Service Locator for Python. [🐍, MIT License].
  • di ★309 - Pythonic dependency injection. [🐍, MIT License].
  • Lagom ★246: Type based auto-wiring dependency injection with support for async and threading. [🐍, MIT License].
  • Rodi ★185 - Implementation of dependency injection for Python 3. [🐍, MIT License].
  • That Depends ★167 - simple DI-framework, inspired by python-dependency-injector, but without wiring [🐍, MIT License].
  • injectable ★114 - Python Dependency Injection for Humans™. [🐍, MIT License].
  • Wireup ★110 - Concise, Powerful, and Type-Safe Python Dependency Injection Library. [🐍, MIT License].
  • Opyoid ★68 - Dependency injection library for Python. [🐍, MIT License].
  • Picodi ★25 - A DI library inspired by FastAPI. It integrates well with FastAPI but can also be used independently. [🐍, MIT License].
  • andi ★22 - Library for annotation-based dependency injection. [🐍, BSD 3-Clause "New" or "Revised" License].
  • Fresh Bakery ★22 - Bake dependency injections asynchronously and stupidly simple. [🐍, MIT License].
  • ididi ★17 - Genius simplicity, unmathced power, dependency injection in a single line of code. [🐍, MIT License]
  • Modern DI ★19 - powerful DI-framework with scopes and IoC-container [🐍, MIT License].
  • Clean IoC ★10 - A simple unintrusive dependency injection library for python with strong support for generics [🐍, MIT License].
  • injection ★14 - replacement for python-dependency-injector that works with Python 3.8-3.12 and works with FastAPI, DRF, Flask and Litestar [🐍, MIT License].

DI components of Web frameworks

Several modern Python web frameworks include DI components, including:

Archived or unmaintained DI frameworks

  • Antidote ★89 - Dependency injection for Python. [🐍, MIT License].
  • Serum ★86 - Dependency injection framework for Python 3.6. [🐍, MIT License].
  • Aiodine ★53 - 🧪 Async-first Python dependency injection library. [🐍, MIT License].
  • Wiring ★26 - Architectural foundation for Python applications. [🐍, Apache License 2.0].

Integration with web frameworks

  • Flask-Injector ★280 - Adds Injector support to Flask. [🐍, BSD 3-Clause "New" or "Revised" License].

See also above.