I'd like to set up DI dynamically, based on information available at startup time (ie. not hardcoded) but it doesn't seem to work. Simplified example:
from litestar import Controller, Litestar, get
from litestar.di import Provide
class MyController(Controller):
dependencies = {
"my_dep": Provide(lambda: "default", sync_to_thread=False)
}
@classmethod
def set_dependency(cls, dependency: str) -> None:
cls.dependencies["my_dep"] = Provide(
lambda: dependency, sync_to_thread=False
)
@get("/my_route")
async def my_route(self, my_dep: str) -> str:
return my_dep
def create_app() -> Litestar:
return Litestar(
route_handlers=[MyController],
on_startup=[lambda: MyController.set_dependency("foo")],
)
Calling /my_route returns "default" instead of "foo". Any ideas?