Skip to content

Add repo-level tap metadata config for ddp tooling #21

@eric-tramel

Description

@eric-tramel

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestplugin tapPlugin catalog and tap ecosystem work

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions