import sys from fastapi import FastAPI, Depends from fastapi import Request # See: https://github.com/ets-labs/python-dependency-injector/issues/398 from fastapi.security import HTTPBasic, HTTPBasicCredentials from dependency_injector import containers, providers from dependency_injector.wiring import inject, Provide class Service: async def process(self) -> str: return 'Ok' class Container(containers.DeclarativeContainer): service = providers.Factory(Service) app = FastAPI() security = HTTPBasic() @app.api_route('/') @inject async def index(service: Service = Depends(Provide[Container.service])): result = await service.process() return {'result': result} @app.get('/auth') @inject def read_current_user( credentials: HTTPBasicCredentials = Depends(security) ): return {'username': credentials.username, 'password': credentials.password} container = Container() container.wire(modules=[sys.modules[__name__]])