{"adoption": {"forks": 155, "observed_at": "2026-08-28T04:05:21.851072+00:00", "stars": 1683}, "canonical_url": "https://ross.abutalabs.com/products/pluggy", "card": {"archived": false, "artifact_type": "library", "description": "A minimalist production ready plugin system", "domain": ["developer-tools", "testing"], "enriched": true, "function": ["plugin-system", "developer-tools"], "health_score": 80, "homepage": "https://pluggy.readthedocs.io/en/latest/", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["pytest-dev/pluggy"], "name": "pytest-dev/pluggy", "platform": ["python", "cross-platform"], "pushed_at": "2026-08-25T09:57:20+00:00", "repo": "pytest-dev/pluggy", "stars": 1683, "tags": ["hooks", "hookspec", "hookimpl", "extensibility", "pytest-ecosystem", "automation"], "topics": ["hooks", "python"], "urls": [], "use_cases": ["add a plugin architecture to my python application", "let users extend my tool with custom hooks", "define hook specifications and implementations in python", "build an extensible framework like pytest", "call multiple plugin implementations of the same hook", "manage plugin registration and hook calls"], "what_it_is": "pluggy is a minimalist, production-ready plugin system for Python, providing hook specification and implementation mechanisms. It is the core framework powering pytest, tox, and devpi.", "when_to_avoid": ["you need plugin discovery across process or language boundaries", "you want a full event bus or async-first plugin framework", "your project is not in Python"], "when_to_choose": ["you need a battle-tested plugin/hook system for a Python project", "you want lightweight hookspec/hookimpl semantics without heavy dependencies", "you're building tooling in the pytest/tox ecosystem"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pluggy", "repo": "pytest-dev/pluggy", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.851072+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:41:20.124102+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b50b243f8ea93ecd059de8d40098eeed0deec78209a0db967c5d8f4886edbdbf", "fetched_at": "2026-08-28T04:05:21.851072+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pytest-dev/pluggy"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4145, "days_push": 8, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}