plugin and hook calling mechanisms for python
Project description
This is the core framework used by the pytest, tox, and devpi projects.
Please read the docs to learn more!
A definitive example
import pluggy
hookspec = pluggy.HookspecMarker("myproject")
hookimpl = pluggy.HookimplMarker("myproject")
class MySpec(object):
"""A hook specification namespace.
"""
@hookspec
def myhook(self, arg1, arg2):
"""My special little hook that you can customize.
"""
class Plugin_1(object):
"""A hook implementation namespace.
"""
@hookimpl
def myhook(self, arg1, arg2):
print("inside Plugin_1.myhook()")
return arg1 + arg2
class Plugin_2(object):
"""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)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pluggy-0.7.1.tar.gz
(47.8 kB
view hashes)
Built Distribution
pluggy-0.7.1-py2.py3-none-any.whl
(14.1 kB
view hashes)
Close
Hashes for pluggy-0.7.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e3836e39f4d36ae72840833db137f7b7d35105079aee6ec4a62d9f80d594dd1 |
|
MD5 | c5da30ac45fea1c455d2a7424fd53ae9 |
|
BLAKE2b-256 | f5f15a93c118663896d83f7bcbfb7f657ce1d0c0d617e6b4a443a53abcc658ca |