From c95360d714e8d8f50cca940a1ea0e6fd40c82ada Mon Sep 17 00:00:00 2001 From: Steve Han Date: Tue, 11 Aug 2026 17:23:52 -0400 Subject: [PATCH] fix(retrieval-sdg): support clean provider initialization --- Makefile | 2 +- .../data_designer_retrieval_sdg/pipeline.py | 10 ++++++-- .../tests/test_pipeline.py | 24 +++++++++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 817d11c..f436b7f 100644 --- a/Makefile +++ b/Makefile @@ -128,7 +128,7 @@ validate-release: @if [ -z "$(PLUGIN)" ]; then echo "ERROR: Set PLUGIN="; exit 1; fi @if [ ! -d "$(PLUGIN_DIR)" ]; then echo "ERROR: $(PLUGIN_DIR) not found"; exit 1; fi @PLUGIN_VERSION=$$(uv run python -c "import tomllib; print(tomllib.load(open('$(PLUGIN_DIR)/pyproject.toml','rb'))['project']['version'])"); \ - uv run ddp check-release "$(PLUGIN)" "$$PLUGIN_VERSION" + uv run --package ddp ddp check-release "$(PLUGIN)" "$$PLUGIN_VERSION" test-plugin: @if [ -z "$(PLUGIN)" ]; then echo "ERROR: Set PLUGIN="; exit 1; fi diff --git a/plugins/data-designer-retrieval-sdg/src/data_designer_retrieval_sdg/pipeline.py b/plugins/data-designer-retrieval-sdg/src/data_designer_retrieval_sdg/pipeline.py index 206151e..ef604d0 100644 --- a/plugins/data-designer-retrieval-sdg/src/data_designer_retrieval_sdg/pipeline.py +++ b/plugins/data-designer-retrieval-sdg/src/data_designer_retrieval_sdg/pipeline.py @@ -17,7 +17,7 @@ from pathlib import Path import data_designer.config as dd -from data_designer.config.default_model_settings import get_default_providers +from data_designer.config.default_model_settings import get_builtin_model_providers, get_default_providers from data_designer_retrieval_sdg.config import EmbeddingDedupColumnConfig from data_designer_retrieval_sdg.models import ( @@ -218,7 +218,13 @@ def add_provider(provider: dd.ModelProvider, source: str, *, replace: bool = Fal return None, [] custom_names = {p.name for p in custom} - defaults = [p for p in get_default_providers() if p.name not in custom_names] + try: + default_providers = get_default_providers() + except FileNotFoundError: + # Data Designer seeds the user-level provider file when its interface is + # constructed; provider resolution runs earlier in this pipeline. + default_providers = get_builtin_model_providers() + defaults = [p for p in default_providers if p.name not in custom_names] return defaults + custom, custom diff --git a/plugins/data-designer-retrieval-sdg/tests/test_pipeline.py b/plugins/data-designer-retrieval-sdg/tests/test_pipeline.py index 896e3d4..8f5c758 100644 --- a/plugins/data-designer-retrieval-sdg/tests/test_pipeline.py +++ b/plugins/data-designer-retrieval-sdg/tests/test_pipeline.py @@ -10,6 +10,7 @@ import data_designer.config as dd import pytest +import data_designer_retrieval_sdg.pipeline as pipeline_module from data_designer_retrieval_sdg.pipeline import ( DEFAULT_CHAT_MODEL, DEFAULT_EMBED_MODEL, @@ -77,6 +78,29 @@ def test_provider_builder_combines_distinct_aliases(tmp_path: Path) -> None: ) +def test_provider_builder_uses_builtins_before_default_file_is_initialized(monkeypatch: pytest.MonkeyPatch) -> None: + builtin = dd.ModelProvider( + name="builtin", + endpoint="https://builtin.example.invalid/v1", + provider_type="openai", + ) + + def missing_default_file() -> list[dd.ModelProvider]: + raise FileNotFoundError + + monkeypatch.setattr(pipeline_module, "get_default_providers", missing_default_file) + monkeypatch.setattr(pipeline_module, "get_builtin_model_providers", lambda: [builtin]) + + all_providers, custom = build_model_providers( + custom_provider_endpoint="https://custom.example.invalid/v1", + custom_provider_name="custom", + ) + + assert all_providers is not None + assert [provider.name for provider in all_providers] == ["builtin", "custom"] + assert [provider.name for provider in custom] == ["custom"] + + def test_inline_provider_overrides_matching_provider_file_alias(tmp_path: Path) -> None: providers_file = tmp_path / "providers.json" providers_file.write_text(