$npx skillfedfor your agent

pluggy

plugin and hook calling mechanisms for python

Worth itPyPI LibrariesReleased May 20251.3B downloads / moMITPure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — pluggy-1.6.0-py3-none-any.whl
v1.6.0 · released 2025-05-15 · Python >=3.9

Yes. Pluggy is production-ready, permissively licensed, has zero dependencies, and is the proven plugin infrastructure behind pytest and other major projects. Install it if you're building an extensible application or framework. The aging maintenance status reflects stability rather than abandonment—it's a mature, complete tool that doesn't need frequent updates.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Low friction to install.
  • Maintenance status is aging—last release was 456 days ago—but the package is mature and widely used as the core plugin system for pytest, tox, and devpi, suggesting stability over active development.

License · maintenance · safety

MIT (permissive) — MIT license (permissive) means you can use, modify, and distribute pluggy with minimal restrictions, making it safe for both open-source and commercial projects.

last release 2025-05-15 (456 days)

0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,280,274,438 downloads/mo, #13 on PyPI

Verify before relying

import pluggy

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

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

class Plugin_1:
    @hookimpl
    def myhook(self, arg1, arg2):
        return arg1 + arg2

pm = pluggy.PluginManager("myproject")
pm.add_hookspecs(MySpec)
pm.register(Plugin_1())
results = pm.hook.myhook(arg1=1, arg2=2)
  • Whether the aging maintenance status (456 days since last release) affects long-term compatibility with future Python versions beyond 3.13
Same gist for agents: .md · .json

What it is and what it does

Pluggy is a minimalist plugin system that decouples hook specifications from their implementations. You define a hook specification as a class with decorated methods, then register plugin classes that implement those hooks. When you call a hook through the plugin manager, all registered implementations run in sequence and return their results. It's the core framework powering pytest, tox, and devpi—production-tested infrastructure for building extensible applications where behavior can be customized without modifying core code.

The package has no runtime dependencies, installs easily, and supports Python 3.9 and later on CPython and PyPy. It's classified as mature and is ranked in the top 100 most-downloaded PyPI packages, reflecting its role as foundational infrastructure rather than a user-facing tool.

Use it for

  • Build a test framework or tool that lets users extend behavior through plugins without modifying the core codebase
  • Create a command-line application where different commands or features can be registered as plugins at runtime
  • Implement a data processing pipeline where stages are pluggable and can be added or replaced dynamically
  • Design a linting or code-analysis tool where rules or checkers are registered as independent plugins
  • Build an application server where middleware or request handlers are registered as hooks

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

Worth it

Yes.

Pluggy is production-ready, permissively licensed, has zero dependencies, and is the proven plugin infrastructure behind pytest and other major projects. Install it if you're building an extensible application or framework. The aging maintenance status reflects stability rather than abandonment—it's a mature, complete tool that doesn't need frequent updates.

Install

pluggy on PyPI

Before you install

Low friction to install. Maintenance status is aging—last release was 456 days ago—but the package is mature and widely used as the core plugin system for pytest, tox, and devpi, suggesting stability over active development.

License in practice

MIT license (permissive) means you can use, modify, and distribute pluggy with minimal restrictions, making it safe for both open-source and commercial projects.

Quickstart

import pluggy

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

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

class Plugin_1:
    @hookimpl
    def myhook(self, arg1, arg2):
        return arg1 + arg2

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

Verify before relying

  • Whether the aging maintenance status (456 days since last release) affects long-term compatibility with future Python versions beyond 3.13

Package facts

LicenseMIT permissive
Python supportSupports the current Python release >=3.9
Install frictionLow. Pure-Python wheel
Runtime dependenciesNone
MaintenanceAging 456 days since the last release
First released
Downloads1,280,274,438 / month, #13 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
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

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

Tags

Capabilities
plugin system for pythonhook specification and implementationextensible application frameworkplugin managerdynamic hook callingplugin registrationhook-based architecture
Topics
plugin-systemextensibilityhook-pattern

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “hook specification and implementation”

  • pluggyPluggy provides a plugin system that lets you define hook…
  • conventional-pre-commitA pre-commit hook that validates git commit messages against…
  • somacoreProvides the Python reference implementation of the SOMA…

Give your agent the search over MCP, or paste the wish link into any chat.

More Libraries packages

urllib3 Worth it
PyPI · Libraries · released May 2026

urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.

MITpure Python · 3.10+
1.8Bdownloads / mo
requests Worth it
PyPI · Libraries · released May 2026

Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.

Apache-2.0pure Python · 3.10+
1.8Bdownloads / mo
python-dateutil Worth it
PyPI · Libraries · released Mar 2024

Provides parsing, arithmetic, and recurrence rule computation for dates and times, with timezone support and iCalendar RFC compliance.

Install it if you need to parse flexible date strings, compute relative dates, handle timezones, or work with recurrence rules—it's the de facto choice for these tasks.

Apache-2.0pure Python
1.2Bdownloads / mo
six With conditions
PyPI · Libraries · released Dec 2024

Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.

MITpure Python
1.2Bdownloads / mo
pytest Worth it
PyPI · Libraries · released Jun 2026

pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.

MITpure Python · 3.10+
1.1Bdownloads / mo
iniconfig Worth it
PyPI · Libraries · released Oct 2025

iniconfig parses INI configuration files while preserving section and entry order, supporting multi-line values, comments, and raising errors with line numbers.

MITpure Python · 3.10+
1.0Bdownloads / mo

See also napari-plugin-engine · spaceforge · pluginbase · pytest-logging · pytest-django · pytest-lazy-fixture · pytest-lazy-fixtures · interface-meta · robotcode-plugin