Python的插件和钩子调用机制
项目描述
这是pytest、tox和devpi项目所使用的核心框架。
请阅读文档以获取更多信息!
一个确定的示例
import pluggy
hookspec = pluggy.HookspecMarker("myproject")
hookimpl = pluggy.HookimplMarker("myproject")
class MySpec:
"""A hook specification namespace."""
@hookspec
def myhook(self, arg1, arg2):
"""My special little hook that you can customize."""
class Plugin_1:
"""A hook implementation namespace."""
@hookimpl
def myhook(self, arg1, arg2):
print("inside Plugin_1.myhook()")
return arg1 + arg2
class Plugin_2:
"""A 2nd hook implementation namespace."""
@hookimpl
def myhook(self, arg1, arg2):
print("inside Plugin_2.myhook()")
return arg1 - arg2
# create a manager and add the spec
pm = pluggy.PluginManager("myproject")
pm.add_hookspecs(MySpec)
# register plugins
pm.register(Plugin_1())
pm.register(Plugin_2())
# call our ``myhook`` hook
results = pm.hook.myhook(arg1=1, arg2=2)
print(results)
直接运行此操作会得到以下结果
$ python docs/examples/toy-example.py inside Plugin_2.myhook() inside Plugin_1.myhook() [-1, 3]
支持pluggy
Open Collective是一个为开源和透明社区提供资金的在线平台。它提供了筹集资金和完全透明地分享财务的工具。
它是个人和公司选择将一次性或月度捐款直接捐给项目的平台。
pluggy是pytest-dev项目的一部分,更多详情请参阅pytest集体。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
pluggy-1.5.0.tar.gz (68.0 kB 查看散列)
构建分发
pluggy-1.5.0-py3-none-any.whl (20.6 kB 查看散列)
关闭
pluggy-1.5.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 |
|
MD5 | ac0870be78ba0ee227a5c3955efeba59 |
|
BLAKE2b-256 | 962d02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6 |