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]

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.2.0.tar.gz (61.6 kB view details)

Uploaded Source

Built Distribution

pluggy-1.2.0-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pluggy-1.2.0.tar.gz
  • Upload date:
  • Size: 61.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for pluggy-1.2.0.tar.gz
Algorithm Hash digest
SHA256 d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3
MD5 b6ab532a71304092cb0a309f82e8d8c6
BLAKE2b-256 8a428f2833655a29c4e9cb52ee8a2be04ceac61bcff4a680fb338cbd3d1e322d

See more details on using hashes here.

File details

Details for the file pluggy-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: pluggy-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for pluggy-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849
MD5 fb5834ad9b2f076dfa41fe40c8724195
BLAKE2b-256 51324a79112b8b87b21450b066e102d6608907f4c885ed7b04c3fdb085d4d6ae

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