Skip to content

nicoddemus/pluggy

 
 

Repository files navigation

pluggy - A minimalist production ready plugin system

pypi conda-forge versions travis appveyor Join the chat at https://gitter.im/pytest-dev/pluggy black Code coverage Status

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)

About

Plugin management and hook calling for Python

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 100.0%