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 ln_pluggy as 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

ln_pluggy-1.4.0.tar.gz (60.3 kB view details)

Uploaded Source

Built Distribution

ln_pluggy-1.4.0-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file ln_pluggy-1.4.0.tar.gz.

File metadata

  • Download URL: ln_pluggy-1.4.0.tar.gz
  • Upload date:
  • Size: 60.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.13

File hashes

Hashes for ln_pluggy-1.4.0.tar.gz
Algorithm Hash digest
SHA256 770107e7a00213fd1d0694f3a9eee9c862a1821683862c6b695edae07bc56bf6
MD5 5c3ccd0b7104197f11290e885ea9c56e
BLAKE2b-256 aaf1f3b473cc7e91f79a4ba51fb309b029668adcadad2a1e4970524a4d0fc933

See more details on using hashes here.

File details

Details for the file ln_pluggy-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: ln_pluggy-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.13

File hashes

Hashes for ln_pluggy-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ea163f741845c7c2ee5651f678df9b37705bc9c0695e40df18718b8c6cc5834d
MD5 34ad544c1d96b561fa99e59ff377fb37
BLAKE2b-256 8f5083427f3e3ea55f7944f9a1c0f66a069e00bbbb99067760cd2d7ad3ccfbe5

See more details on using hashes here.

Supported by

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