skillfed

pluggy

plugin and hook calling mechanisms for python

pluggy Permissive license MIT AGING v1.6.0 released

Install

pluggy on PyPI

pip

pip install pluggy

uv

uv add pluggy

poetry

poetry add pluggy

Package facts

License MIT (permissive)
Python support supports the current Python release (>=3.9)
Install friction low — pure-Python wheel
Runtime dependencies none
Maintenance aging — 455 days since the last release
First released
Popularity one of the 100 most-downloaded packages on PyPI (30-day window, as of 2026-08-13)
Known vulnerabilities none known (OSV.dev, checked 2026-08-13)

Evidence: pluggy-1.6.0-py3-none-any.whl

Development Status :: 6 - MatureIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: MacOS :: MacOS XOperating System :: Microsoft :: WindowsOperating System :: POSIXProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: Software Development :: LibrariesTopic :: Software Development :: TestingTopic :: Utilities

About pluggy

from the package's own PyPI description — quoted content, verbatim

==================================================== pluggy - A minimalist production ready plugin system ====================================================

|pypi| |conda-forge| |versions| |github-actions| |gitter| |black| |codecov|

This is the core framework used by the pytest, tox, and devpi_ projects.

Please read the docs_ to learn more!

A definitive example

.. code-block:: python

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 =...

Read as markdown · JSON record

AI interpretation — verify before relying

AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page

pluggy provides a minimalist plugin system framework that lets you define hook specifications and register plugin implementations to call them, used as the core framework for pytest, tox, and devpi.

Low install friction with no runtime dependencies; marked as aging (455 days since last release) but classified as Mature and widely used in production by pytest-dev projects.

MIT license (permissive) places no restrictions on use, modification, or distribution in proprietary or open-source contexts.

Usage

import pluggy

hookspec = pluggy.HookspecMarker("myproject")
hookimpl = pluggy.HookimplMarker("myproject")

class MySpec:
    @hookspec
    def myhook(self, arg1, arg2):
        pass

pm = pluggy.PluginManager("myproject")
pm.add_hookspecs(MySpec)
pm.register(MySpec())
results = pm.hook.myhook(arg1=1, arg2=2)

Verdict: pluggy is a stable, zero-dependency plugin framework in the top 100 PyPI packages with no known vulnerabilities and permissive MIT licensing. Aging maintenance status (455 days since release) is typical for a mature, feature-complete library; its widespread adoption in pytest-dev projects provides confidence in production readiness.

Needs verification

  • Whether the 455-day release gap reflects intentional stability maintenance or reduced active development
  • Current test coverage and CI/CD status beyond the codecov badge mentioned in the description
plugin system frameworkhook calling mechanismplugin managerextensible application architecturepytest plugin systemhook specification and implementationplugin registration and discovery

Similar packages