Skip to content

Add repo-level tap metadata config#27

Merged
eric-tramel merged 1 commit intocodex/epic-15-plugin-tapfrom
codex/issue-21-tap-config
May 7, 2026
Merged

Add repo-level tap metadata config#27
eric-tramel merged 1 commit intocodex/epic-15-plugin-tapfrom
codex/issue-21-tap-config

Conversation

@eric-tramel
Copy link
Copy Markdown
Contributor

What

Adds the root [tool.ddp.tap] metadata table for this repository and a shared ddp.tap_config loader with deterministic validation errors for missing or malformed config.

Wires ddp new scaffolding to that tap config so generated plugins use the configured package prefix, repository URL, docs base URL, author name, and default Data Designer dependency instead of hardcoded NVIDIA-specific values or the stale data-designer>=0.5.3 requirement.

Adds tests proving external-style tap values flow into generated scaffold output and proving missing/malformed config errors are clear.

Why

Issue #21 moves repository tap identity out of hardcoded ddp tooling so DataDesignerPlugins can serve as both NVIDIA's first-party tap and a reference shape for external tap repositories.

Usage

Repository owners configure tap metadata once in the root pyproject.toml:

[tool.ddp.tap]
catalog-url = "https://raw.githubusercontent.com/NVIDIA-NeMo/DataDesignerPlugins/main/catalog/plugins.json"
repository-url = "https://github.com/NVIDIA-NeMo/DataDesignerPlugins"
repository-git-url = "https://github.com/NVIDIA-NeMo/DataDesignerPlugins.git"
docs-base-url = "https://nvidia-nemo.github.io/DataDesignerPlugins/"
package-prefix = "data-designer-"
default-source = "pypi"
release-ref-template = "{package}/v{version}"
default-data-designer-requirement = "data-designer>=0.5.7"
author-name = "NVIDIA Corporation"

Then scaffolding uses those values:

uv run ddp new my-plugin

With an external tap config, the generated package, metadata, README, docs index, and import package reflect that external tap's prefix, URLs, author, and Data Designer dependency.

How

Introduces ddp.tap_config.TapConfig plus load_tap_config() as the single shared loader for [tool.ddp.tap]. The loader validates required string fields, absolute URLs, default-source, release ref templates, and the default data-designer requirement.

The config object also exposes reusable helpers for package naming, docs URLs, release refs, and source metadata so catalog/docs/source work in #17/#18 can consume the same config without adding catalog v2 output in this PR.

ddp.scaffold now loads tap metadata from the repo root before generating package files and exits with a clear error if the table is missing or invalid.

Validation

  • make lint
  • make test-devtools (96 passed)
  • make check

Refs #21

@eric-tramel eric-tramel force-pushed the codex/issue-21-tap-config branch from f5d5da3 to 7fad446 Compare May 7, 2026 19:31
@eric-tramel eric-tramel marked this pull request as ready for review May 7, 2026 19:31
@eric-tramel eric-tramel requested a review from a team as a code owner May 7, 2026 19:31
@eric-tramel eric-tramel merged commit 040459b into codex/epic-15-plugin-tap May 7, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant