Consolidate Data Designer user configuration into a single TOML file
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- python
調査の方向性
packages/data-designer-config/src/data_designer/config/utils/constants.py から始め、issue で特定されている既存の関心事ごとの repository と CLI config コマンドを調査します。統合設定の境界を定義する前に #559 を確認します。完了条件は、設計によって TOML スキーマ、legacy の優先順位、移行が解決され、そのうえで列挙された読み込み、移行、リセット、一覧表示、検証、ドキュメント化の要件がカバーされることです。
索引モデルが issue の本文から書いたものです。
説明
Priority Level
Medium (Nice to have)
Is your feature request related to a problem? Please describe.
Data Designer's user-level configuration under DATA_DESIGNER_HOME (~/.data-designer by default) is currently split across several YAML files:
model_configs.yamlmodel_providers.yamlmcp_providers.yamltool_configs.yamlplugin_catalogs.yamlfor CLI plugin catalogs
Issue #559 would add another persisted runtime configuration file, run_config.yaml, for system-level RunConfig defaults.
That layout was reasonable when the config surface was small, but every new concern now adds another file, repository, list/reset path, migration path, and documentation branch. Users who want to inspect, back up, review, or share their local Data Designer settings have to understand a directory of loosely related files instead of one canonical configuration document.
The fragmentation also makes feature design harder. #559 is a good example: runtime defaults clearly belong in user/system-level configuration, but adding yet another YAML file would deepen the current split.
Describe the solution you'd like
Introduce a single canonical TOML file for Data Designer user/system configuration, for example:
~/.data-designer/config.toml
or:
~/.data-designer/data-designer.toml
The exact filename can be decided during implementation, but the important design goal is one typed, versioned, human-editable file for Data Designer's local configuration.
Suggested shape:
version = 1
[[model.providers]]
name = "openai"
base_url = "https://api.openai.com/v1"
api_key_env = "OPENAI_API_KEY"
[[model.configs]]
alias = "openai-text"
provider = "openai"
model = "gpt-4.1"
[model.configs.inference_parameters]
generation_type = "chat-completion"
temperature = 0.85
top_p = 0.95
[[mcp.providers]]
name = "local-tools"
type = "stdio"
[[tools.configs]]
tool_alias = "default"
providers = ["local-tools"]
[[plugins.catalogs]]
alias = "nvidia"
url = "https://nvidia-nemo.github.io/DataDesignerPlugins/catalog/plugins.json"
[run]
buffer_size = 1000
disable_early_shutdown = false
progress_bar = false
progress_interval = 5.0
[run.throttle]
reduce_factor = 0.75
additive_increase = 1
success_window = 25
cooldown_seconds = 2.0
ceiling_overshoot = 0.10
Desired behavior:
DATA_DESIGNER_HOMEremains the config root override.- The single TOML file becomes the canonical write target for user/system-level config.
- Existing YAML files remain readable for a migration window.
- When both the TOML file and legacy YAML files exist, precedence should be explicit and documented. A reasonable default is: TOML wins, legacy files are fallback only.
- Add a migration command or automatic prompted migration, such as
data-designer config migrate, to merge existing YAML files into the TOML file. data-designer config listshould show the unified file path and all loaded sections.data-designer config resetshould operate on the unified file, with section-level reset support if practical.- Invalid TOML or invalid section schemas should fail loudly with file and section context.
- Dataset/workflow config files should remain separate from this proposal. This issue is about user/system configuration under
~/.data-designer, not replacing normal dataset YAML/JSON configs.
Impact on #559:
- If this lands before #559, persisted
RunConfigdefaults should probably be introduced directly as[run]/[run.throttle]sections in the TOML file instead of creatingrun_config.yaml. - If #559 lands first, this issue should include migration from
run_config.yamlinto the TOML runtime section. - The precedence proposed in #559 should still hold: explicit per-run overrides beat persisted user defaults, and persisted user defaults beat built-in
RunConfig()defaults.
Implementation notes:
- Add a root Pydantic model for the unified config file with explicit schema versioning.
- Replace per-file repository write paths with section-aware repository access over one file, or introduce a shared config store that the existing repositories delegate to during migration.
- Keep config concerns logically separated inside the TOML structure even though they share one file.
- Decide on TOML parser/writer support deliberately: Data Designer supports Python
>=3.10, and the standard library does not cover all read/write needs across supported versions. - Preserve comments and ordering if possible, since this file is meant to be edited by users.
Acceptance criteria:
- A single TOML file can represent model providers, model configs, MCP providers, tool configs, plugin catalogs, and runtime defaults.
- Existing YAML configs can still be loaded during a documented compatibility period.
- A migration path combines existing YAML config files into the TOML file without losing settings.
- CLI config commands read/write the TOML file as the canonical source.
- #559's runtime-default design is either implemented directly in TOML or migrated cleanly from
run_config.yaml. - Tests cover absent TOML, malformed TOML, section validation errors, legacy fallback, TOML-vs-legacy precedence, migration, and reset/list behavior.
- Documentation explains the new file, the section schema, the migration path, and the relationship to dataset config files.
Describe alternatives you've considered
- Keep adding one YAML file per config concern.
- This is simple locally, but the directory gets harder to understand and every new feature repeats the same repository/list/reset/migration work.
- Consolidate into a single YAML file instead of TOML.
- This would reduce file count, but TOML is a better fit for local application configuration: it is familiar from
pyproject.toml, supports clear table sections, and is comfortable for hand editing.
- This would reduce file count, but TOML is a better fit for local application configuration: it is familiar from
- Store runtime defaults in
model_configs.yamlormodel_providers.yaml.- This would reduce the number of files, but it mixes unrelated concerns and makes the schema harder to reason about.
- Use environment variables for everything.
- That works for a few scalar toggles, but it does not scale to nested provider/model/tool/runtime configuration.
Agent Investigation
- Searched existing open and closed issues for TOML configuration, single config files, config consolidation, and
~/.data-designerconsolidation. I did not find a direct duplicate. DATA_DESIGNER_HOMEis defined inpackages/data-designer-config/src/data_designer/config/utils/constants.pyand defaults to~/.data-designer.- Current top-level config file constants include
model_configs.yaml,model_providers.yaml,mcp_providers.yaml, andtool_configs.yaml. - The CLI plugin catalog repository currently persists
plugin_catalogs.yamlseparately. - #559 proposes
run_config.yamlfor persisted system-levelRunConfigdefaults, which would be impacted by this consolidation. - The CLI currently has per-concern repositories for model configs, model providers, MCP providers, tool configs, and plugin catalogs. Those are natural migration points for a section-aware unified config store.
- Existing config file loading supports
.yaml,.yml, and.jsonfor workflow configs; TOML would be a new format for user/system config unless broader support is intentionally added.
Additional context
This proposal is about the user/system configuration stored under DATA_DESIGNER_HOME. It should not collapse generated artifacts, managed asset caches, version-check caches, or normal dataset/workflow config files into the same TOML file.
The main goal is to make local Data Designer configuration easier to inspect, migrate, document, and extend before more user-level settings accumulate.
Checklist
- I've reviewed existing issues and the documentation
- This is a design proposal, not a "please build this" request
- 主要言語
- Python
- スター
- 2.4k
- フォーク
- 241
- 平均マージ
- 1日 19分
- マージ済み PR(30日)
- 84
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
NVIDIA-NeMo/DataDesigner のほかの issue
-
Local seed path containing a single quote breaks the DuckDB query再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
NVIDIA-NeMo/DataDesigner#1102 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
Code validation repeats the first result for subsequent target columns対応中かも @edjson が今日担当しました。 オープンbug triaged
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
NVIDIA-NeMo/DataDesigner#1092 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
enforce \from future import annotations` via ruff FA102 rule`対応中かも @chethanuk が 48 日前に担当しました。 オープンtask
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
NVIDIA-NeMo/DataDesigner#760 ·
メンテナーはふだん 1 日以内に返信
-
Complete Slurm proxy health integration, draining, telemetry, and overload validation対応中かも @nabinchha が 1 日前に担当しました。 オープンtask
NVIDIA-NeMo/DataDesigner#1103 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
task
難易度 5/5 1週間以上 初心者へのやさしさ 38/100
NVIDIA-NeMo/DataDesigner#1094 ·
メンテナーはふだん 1 日以内に返信
NVIDIA-NeMo/DataDesigner の issue をすべて見る
似ている issue
-
Context/namespace resources fail in-cluster: "Invalid kube-config file. No configuration found."オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
bug documentation
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
awslabs/visual-asset-management-system#880 ·
メンテナーはふだん 1 日以内に返信
-
netbox status: needs owner type: documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
netbox-community/netbox#23533 ·
メンテナーはふだん 1 日以内に返信
-
app: scripts status: backlog type: documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
netbox-community/netbox-scripts#68 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 91/100
marin-community/marin#10765 ·
メンテナーはふだん 1 日以内に返信