Skip to content

Commit a80fef6

Browse files
Exclude credentials and non-flag-aware models from LD flag keys
- Add _flag_exclude ClassVar to FlagAwareMixin; Dremio excludes uri, raw_pat, raw_project_id (connection credentials, not feature flags) - Change Tools from FlagAwareModel to plain BaseModel - get() skips LD lookup for excluded fields - collect_flag_keys() skips excluded fields - Golden keys reduced to 12 meaningful feature flags Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 0029fee commit a80fef6

3 files changed

Lines changed: 10 additions & 9 deletions

File tree

src/dremioai/config/settings.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
Any,
3838
Callable,
3939
Literal,
40+
ClassVar,
4041
Tuple,
4142
get_args,
4243
get_type_hints,
@@ -81,8 +82,11 @@ def get(self, field_name: str):
8182
# unaffected by remote flag state.
8283
class FlagAwareMixin(GetterMixin):
8384
_flag_prefix: str = ""
85+
_flag_exclude: ClassVar[frozenset[str]] = frozenset()
8486

8587
def get(self, field_name: str):
88+
if field_name in self._flag_exclude:
89+
return super().get(field_name)
8690
key = f"{self._flag_prefix}.{field_name}" if self._flag_prefix else field_name
8791
return FeatureFlagManager.instance().get_flag(
8892
key, super().get(field_name)
@@ -109,7 +113,7 @@ def _resolve_tools_settings(server_mode: Union[ToolType, int, str]) -> ToolType:
109113
return server_mode
110114

111115

112-
class Tools(FlagAwareModel):
116+
class Tools(BaseModel):
113117
server_mode: Annotated[
114118
Optional[Union[ToolType, int, str]], AfterValidator(_resolve_tools_settings)
115119
] = Field(default=ToolType.FOR_SELF)
@@ -219,6 +223,8 @@ def enabled(self) -> bool:
219223

220224

221225
class Dremio(FlagAwareModel):
226+
_flag_exclude: ClassVar[frozenset[str]] = frozenset({"uri", "raw_pat", "raw_project_id"})
227+
222228
uri: Annotated[
223229
Union[str, HttpUrl, DremioCloudUri], AfterValidator(_resolve_dremio_uri)
224230
]
@@ -413,8 +419,11 @@ def _propagate_flag_prefixes(obj: BaseModel, prefix: str):
413419
def collect_flag_keys(model_cls: type, prefix: str = "") -> list[str]:
414420
"""Recursively collect all LD flag keys from a FlagAwareMixin model class."""
415421
keys = []
422+
excluded = getattr(model_cls, "_flag_exclude", frozenset())
416423
hints = get_type_hints(model_cls, include_extras=True)
417424
for name in model_cls.model_fields:
425+
if name in excluded:
426+
continue
418427
key = f"{prefix}.{name}" if prefix else name
419428
annotation = hints[name]
420429
# Unwrap Optional[X] (Union[X, None]) to get the inner type X.

tests/config/golden_flag_keys.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,5 @@ flag_keys:
99
- dremio.enable_search
1010
- dremio.metrics.enabled
1111
- dremio.metrics.port
12-
- dremio.raw_pat
13-
- dremio.raw_project_id
14-
- dremio.uri
1512
- dremio.wlm.engine_name
1613
- log_level
17-
- tools.server_mode

tests/config/test_launchdarkly_integration.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,6 @@ def test_flag_prefix_propagation(accessor, expected, overrides):
172172
assert accessor(cfg)._flag_prefix == expected
173173

174174

175-
def test_flag_prefix_tools():
176-
cfg = settings.Settings.model_validate({})
177-
assert cfg.tools._flag_prefix == "tools"
178-
179175

180176
# -- FlagAwareMixin.get() with LD overrides -----------------------------------
181177

0 commit comments

Comments
 (0)