feat: Add static plugin catalog sync#11
Conversation
eric-tramel
left a comment
There was a problem hiding this comment.
Requesting changes for the registry-contract issues called out inline. One more blocker that GitHub would not let me attach to .github/workflows/ci.yml: PR #11 adds catalog/CLI tests under devtools/ddp/tests, but CI only calls make test, and that target only iterates plugin packages under plugins/*. Please add a devtools pytest target to make test or call uv run pytest devtools/ddp/tests in CI so these tests are enforced.
|
Addressing the CI blocker from the changes-requested review body: e723425 adds a |
There was a problem hiding this comment.
Thanks, this addresses my review points. I re-checked the latest head: devtools tests are now wired into make test/CI, catalog generation now validates entry-point metadata and version/Python compatibility, stale installed entry points are guarded, docs include make sync, local checks passed, and GitHub CI is green.
What
Adds a static plugin catalog tap at
catalog/plugins.jsonand addp sync catalogcommand to regenerate it from the plugins currently in the repository.The catalog includes package metadata, runtime plugin metadata, entry point information, and DataDesigner compatibility metadata derived from each plugin package\s direct versioned
data-designerdependency.Why
Other CLIs, libraries, and applications need a machine-consumable source of plugin metadata that is not tied to the documentation site. This gives those consumers a stable JSON file they can fetch directly and use to answer questions such as whether a plugin is compatible with a particular DataDesigner version.
Usage
For maintainers:
For external consumers, fetch
catalog/plugins.jsonand inspect fields such as:{ "name": "text-transform", "entry_point": { "group": "data_designer.plugins", "name": "text-transform", "value": "data_designer_template.plugin:plugin" }, "compatibility": { "data_designer": { "requirement": "data-designer>=0.5.7", "specifier": ">=0.5.7" } } }Consumers can evaluate
compatibility.data_designer.specifierwith standard Python packaging tools such aspackaging.specifiers.SpecifierSet.How
ddp.catalogto discover local plugin packages, load installeddata_designer.pluginsentry points, and render deterministic JSON.data-designerdependencies with PyPApackagingand rejects missing, malformed, duplicate, or unversioned compatibility metadata.ddp sync catalogandddp sync catalog --check.make checkwhile preserving the existing plugin docs workflow.Validation
Observed results:
make checkverified plugin docs, catalog freshness, CODEOWNERS, and SPDX license headers.make allpassed, including isolated plugin tests, plugin validation, generated checks, and strict Zensical docs build.