Skip to content

Commit 9d337c2

Browse files
authored
default to composite resolver (#47)
1 parent 2ca5067 commit 9d337c2

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

src/data_designer/engine/secret_resolver.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,15 @@ def __init__(self, resolvers: Sequence[SecretResolver]):
5757
raise SecretResolutionError("Must provide at least one SecretResolver to CompositeResolver")
5858
self._resolvers = resolvers
5959

60+
@property
61+
def resolvers(self) -> Sequence[SecretResolver]:
62+
"""Get the sequence of resolvers in this composite resolver.
63+
64+
Returns:
65+
Sequence of SecretResolver instances used to resolve secrets.
66+
"""
67+
return self._resolvers
68+
6069
def resolve(self, secret: str) -> str:
6170
errors = []
6271
for resolver in self._resolvers:

src/data_designer/interface/data_designer.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,12 @@
4444
HfHubSeedDatasetDataStore,
4545
LocalSeedDatasetDataStore,
4646
)
47-
from data_designer.engine.secret_resolver import EnvironmentResolver, SecretResolver
47+
from data_designer.engine.secret_resolver import (
48+
CompositeResolver,
49+
EnvironmentResolver,
50+
PlaintextResolver,
51+
SecretResolver,
52+
)
4853
from data_designer.interface.errors import (
4954
DataDesignerGenerationError,
5055
DataDesignerProfilingError,
@@ -87,10 +92,10 @@ def __init__(
8792
artifact_path: Path | str | None = None,
8893
*,
8994
model_providers: list[ModelProvider] | None = None,
90-
secret_resolver: SecretResolver = EnvironmentResolver(),
95+
secret_resolver: SecretResolver | None = None,
9196
blob_storage_path: Path | str | None = None,
9297
):
93-
self._secret_resolver = secret_resolver
98+
self._secret_resolver = secret_resolver or CompositeResolver([EnvironmentResolver(), PlaintextResolver()])
9499
self._artifact_path = Path(artifact_path) if artifact_path is not None else Path.cwd() / "artifacts"
95100
self._buffer_size = DEFAULT_BUFFER_SIZE
96101
self._blob_storage = (
@@ -276,6 +281,15 @@ def get_default_model_providers(self) -> list[ModelProvider]:
276281
logger.info(f"♻️ Using default model providers from {str(MODEL_PROVIDERS_FILE_PATH)!r}")
277282
return get_default_providers()
278283

284+
@property
285+
def secret_resolver(self) -> SecretResolver:
286+
"""Get the secret resolver used by this DataDesigner instance.
287+
288+
Returns:
289+
The SecretResolver instance handling credentials and secrets.
290+
"""
291+
return self._secret_resolver
292+
279293
def set_buffer_size(self, buffer_size: int) -> None:
280294
"""Set the buffer size for dataset generation.
281295

tests/interface/test_data_designer.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from data_designer.config.processors import DropColumnsProcessorConfig
1616
from data_designer.config.seed import LocalSeedDatasetReference
1717
from data_designer.engine.model_provider import ModelProvider
18-
from data_designer.engine.secret_resolver import PlaintextResolver
18+
from data_designer.engine.secret_resolver import CompositeResolver, EnvironmentResolver, PlaintextResolver
1919
from data_designer.interface.data_designer import DataDesigner
2020
from data_designer.interface.errors import (
2121
DataDesignerGenerationError,
@@ -51,6 +51,18 @@ def test_init_with_custom_secret_resolver(stub_artifact_path, stub_model_provide
5151
assert designer is not None
5252

5353

54+
def test_init_with_default_composite_secret_resolver(stub_artifact_path, stub_model_providers):
55+
"""Test DataDesigner initialization with default composite secret resolver."""
56+
designer = DataDesigner(artifact_path=stub_artifact_path, model_providers=stub_model_providers)
57+
assert designer is not None
58+
assert isinstance(designer.secret_resolver, CompositeResolver)
59+
# Verify the composite resolver is properly configured with the expected resolvers
60+
resolvers = designer.secret_resolver.resolvers
61+
assert len(resolvers) == 2
62+
assert isinstance(resolvers[0], EnvironmentResolver)
63+
assert isinstance(resolvers[1], PlaintextResolver)
64+
65+
5466
def test_init_with_string_path(stub_artifact_path, stub_model_providers):
5567
"""Test DataDesigner accepts string paths."""
5668
designer = DataDesigner(artifact_path=str(stub_artifact_path), model_providers=stub_model_providers)

0 commit comments

Comments
 (0)