Parent epic: #15
Depends on: #16
Why
DDPlugins should be both NVIDIA's curated first-party tap and the reference implementation for external tap repositories. Tooling should not hardcode NVIDIA-specific values in scaffold output or catalog generation. Those values should live in one repo-level tap config.
Proposed config
Add this table to 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"
Field semantics:
catalog-url: default tap URL advertised for this repo.
repository-url: human-facing repository URL used in package metadata and docs.
repository-git-url: clone/install URL used for schema v2 git source objects.
docs-base-url: base URL used to derive docs.url; plugin docs URLs are {docs-base-url.rstrip('/')}/plugins/{docs_slug}/.
package-prefix: expected plugin package prefix for scaffolding and validation.
default-source: one of pypi, git, or path; NVIDIA default is pypi.
release-ref-template: Python .format(package=..., version=...) template for per-plugin tags.
default-data-designer-requirement: dependency string used by new scaffolds.
author-name: default author used by new scaffolds.
Implementation
- Add a small
ddp config loader, for example ddp.tap_config, that reads [tool.ddp.tap] from the repo root.
- Treat this table as required for this repo. If missing, fail with a clear error that names the missing table.
- Use the config in catalog generation, source metadata generation, scaffold generation, and docs examples.
- Replace the scaffold's stale hardcoded
data-designer>=0.5.3 default with default-data-designer-requirement.
- Preserve root
zensical.toml as the docs build config, but do not use it as the only source of tap metadata.
- Add tests with a temporary repo config proving that non-NVIDIA URLs/authors are substituted into generated output.
Acceptance criteria
- Root
pyproject.toml contains the [tool.ddp.tap] table above.
ddp tooling reads tap metadata through one shared loader.
- New scaffolded plugins use the configured repository URL, docs URL base, author, and
data-designer dependency.
- Catalog source/docs metadata uses the configured URLs and source policy.
- A temp external-style tap config produces generated files without NVIDIA URLs unless those URLs are configured.
- Missing or malformed config has deterministic tests and clear error messages.
Dependencies
Parent epic: #15
Depends on: #16
Why
DDPlugins should be both NVIDIA's curated first-party tap and the reference implementation for external tap repositories. Tooling should not hardcode NVIDIA-specific values in scaffold output or catalog generation. Those values should live in one repo-level tap config.
Proposed config
Add this table to the root
pyproject.toml:Field semantics:
catalog-url: default tap URL advertised for this repo.repository-url: human-facing repository URL used in package metadata and docs.repository-git-url: clone/install URL used for schema v2gitsource objects.docs-base-url: base URL used to derivedocs.url; plugin docs URLs are{docs-base-url.rstrip('/')}/plugins/{docs_slug}/.package-prefix: expected plugin package prefix for scaffolding and validation.default-source: one ofpypi,git, orpath; NVIDIA default ispypi.release-ref-template: Python.format(package=..., version=...)template for per-plugin tags.default-data-designer-requirement: dependency string used by new scaffolds.author-name: default author used by new scaffolds.Implementation
ddpconfig loader, for exampleddp.tap_config, that reads[tool.ddp.tap]from the repo root.data-designer>=0.5.3default withdefault-data-designer-requirement.zensical.tomlas the docs build config, but do not use it as the only source of tap metadata.Acceptance criteria
pyproject.tomlcontains the[tool.ddp.tap]table above.ddptooling reads tap metadata through one shared loader.data-designerdependency.Dependencies