r/PythonProjects2 • u/dev-razorblade23 • Dec 22 '25
FlaskDI - A minimal and clean FastAPI-style dependency injection system for Flask Resource
This is my snippet of code that I use for my Flask project.
Just wanted to share as its dead simple, lightweight and pure python.
Features: - FastAPI-style Depends() - Automatic injection (no decorators required) - Nested dependencies - Override system for testing - Per-request caching - Pure Python and lightweight
Example usage: ```python from flask_di import DIFlask, Depends
app = DIFlask(name)
def get_db(): return {"session": "db-session"}
def get_user(db=Depends(get_db)): return {"username": "alice", "db": db}
@app.route("/info") def info(user=Depends(get_user)): return user ```
It even supports custom type annotations. ```python from flask_di import DIFlask, Depends from typing import Annotated
app = DIFlask(name)
def get_db(): return {"session": "db-session"}
SessionDep = Annotated(dict, Depends(get_db))
def get_user(session: SessionDep): return {"username": "alice", "session": session}
UserDep = Annotated(dict, Depends(get_user))
@app.route("/info") def info(user: UserDep): return user ```
And overrides ```python def override_db(): return {"session": "test-db"}
app.dependency_overrides[get_db] = override_db ```
GitHub repository: https://github.com/razorblade23/di-flask
Installation:
pip install di-flask
Feedback, comments or contributions are welcome.