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 |