python 3.6+的现代组件/依赖注入程序。
component-injector的Python项目详细描述
部件喷油器
A modern component / dependency injector for python 3.6+.
这个库提供了一个与框架无关的组件(或依赖项) 向函数调用中注入已注册组件的注入器。 要插入的组件通过查看 函数参数注释。
注册组件时,其所有基类都注册为 除非你明确禁止。你也可以选择只 注册尚未注册到的基类 喷油器。
它提供了本地作用域,您可以在其中注册其他组件 或重写现有组件。在退出作用域之后,注册表 将返回到进入作用域之前的状态。
兼容性
component-injector
与python 3.6+兼容,使用
后端口的contextvars
和dataclasses
包。
作用域是线程安全的,当使用Python3.7时,对于 与异步任务一起使用。
安装
component-injector
可从pypi获得:
pip install component-injector
用法示例
下面是一个关于如何使用喷油器的小演示:
from component_injector import Injector
injector = Injector()
class O:
pass
@injector.inject
def consumer_of_o(o: O) -> None:
print(o)
injector.register(O())
consumer_of_o() # 'o' wil be the registered instance.
consumer_of_o(O()) # 'o' will be this new instance.
有关更多示例和用法,请参阅 demo.py 和 async_demo.py。
开发设置
出于开发目的,您可以克隆存储库并使用 poetry安装和维护 依赖关系。没有测试套件。这个项目有一套 可以格式化(isort,black)并检查代码的预提交挂钩 (mypy,flake8)自动。
git clone git@github.com:iksteen/component-injector.git
cd component-injector
poetry run pre-commit install
发布历史记录
1.1.1
- 修复不注册基时的错误类型注册。
- 修复文档中的错误(感谢@trbs!).
1.1.0
- 添加文档。
- 添加对组件工厂的支持。异步工厂是 在注入异步函数时也受支持。
1.0.2
- 修正已经绑定的参数被覆盖的错误。
1.0.1
- 修复到示例的链接。
1.0.0
- 初次发布。
元
英格玛·斯特恩–@iksteen
根据麻省理工学院的许可证发行。有关详细信息,请参见LICENSE
。
贡献
- 分叉(https://github.com/iksteen/component-injector/fork)
- 创建功能分支(
git checkout -b feature/fooBar
) - 提交更改(
git commit -am 'Add some fooBar'
) - 推到分支(
git push origin feature/fooBar
) - 创建新的拉取请求