Skip to main content

plugin and hook calling mechanisms for python

Project description

pypi conda-forge versions github-actions 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:
    """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)

Running this directly gets us:

$ python docs/examples/toy-example.py
inside Plugin_2.myhook()
inside Plugin_1.myhook()
[-1, 3]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pluggy-1.0.0.tar.gz (51.5 kB view details)

Uploaded Source

Built Distribution

pluggy-1.0.0-py2.py3-none-any.whl (13.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pluggy-1.0.0.tar.gz.

File metadata

  • Download URL: pluggy-1.0.0.tar.gz
  • Upload date:
  • Size: 51.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.11

File hashes

Hashes for pluggy-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159
MD5 daa6fddfb6cd364f3c82e52098911e4b
BLAKE2b-256 a116db2d7de3474b6e37cbb9c008965ee63835bba517e22cdb8c35b5116b5ce1

See more details on using hashes here.

File details

Details for the file pluggy-1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: pluggy-1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.11

File hashes

Hashes for pluggy-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3
MD5 40cd7d4a87f8ade524489d750647637b
BLAKE2b-256 9e01f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page