我真的非常喜欢 FastAPI 的 Depends 功能,但我想在不引入一整个框架的情况下实现该开发体验。

你在函数签名中声明依赖项,加上一个装饰器,然后它就能工作了。

from typing import Annotated
from injekta import Needs, inject

def get_db() -> Database:
    return PostgresDB(...)

@inject
def create_user(db: Annotated[Database, Needs(get_db)], name: str):
    return db.create_user(name)

我非常希望能够获得关于这个想法的反馈,并且确定它是否解决了一个真实的问题,还是只是解决了我的自己的需求。

https://github.com/autoscrape-labs/injekta