Skip to content

Commit b3e7b45

Browse files
DeltaMichaelDilyan Marinov
andauthored
vdk-core: add is_default() function to config (#3076)
## Why? There are cases where we want to know we're using the default value for a config option. One such case is configuration presets #3055 ## What? Add is_default() to the config object. ## How was this tested? Unit tests ## What kind of change is this? Feature/non-breaking Signed-off-by: Dilyan Marinov <mdilyan@vmware.com> Co-authored-by: Dilyan Marinov <mdilyan@vmware.com>
1 parent 3f6aa77 commit b3e7b45

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

examples/confluence-reader/confluence_document.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Copyright 2021-2024 VMware, Inc.
22
# SPDX-License-Identifier: Apache-2.0
33

4+
45
class ConfluenceDocument:
56
def __init__(self, metadata, data, deleted=False):
67
"""

projects/vdk-core/src/vdk/internal/core/config.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,17 @@ def is_sensitive(self, key: ConfigKey) -> bool | None:
124124
"""
125125
return self.__config_key_to_sensitive.get(key)
126126

127+
def is_default(self, key: ConfigKey) -> bool:
128+
"""
129+
Return True if the configuration value for a given key uses the default value.
130+
If set_value is called for a specific key, this will return False, even if
131+
value == default_value
132+
133+
:param key: the configuration key (e.g db_host, service_uri, etc.)
134+
:return: the value corresponding to the configuration key
135+
"""
136+
return key not in self.__config_key_to_value
137+
127138
def list_config_keys(self) -> list[ConfigKey]:
128139
"""
129140
List all added (defined) config keys

projects/vdk-core/tests/vdk/internal/core/test_config.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ def test_add(key, default_value, show_default_value, description):
2222
assert description is None or description in cfg.get_description(key)
2323
assert default_value == cfg.get_value(key)
2424
assert default_value == cfg[key]
25+
assert cfg.is_default(key)
2526

2627

2728
def test_unknown_key():
@@ -81,6 +82,16 @@ def test_set_value_overrides_default():
8182
builder.add("key", "default_value", False, "key description")
8283
cfg = builder.build()
8384
assert cfg.get_value("key") == "value"
85+
assert not cfg.is_default("key")
86+
87+
88+
def test_set_value_eq_default_is_not_default():
89+
builder = ConfigurationBuilder()
90+
builder.add("key", "value", False, "key description")
91+
builder.set_value("key", "value")
92+
cfg = builder.build()
93+
assert cfg.get_value("key") == "value"
94+
assert not cfg.is_default("key")
8495

8596

8697
def test_set_value_overrides_default_preserve_types():

0 commit comments

Comments
 (0)