Change apply_update / _update_settings return type from set[str] to dict[str, Any]. The dict maps each changed field name to its pre-update value, enabling services to do granular diffing of complex settings objects. Existing call-site patterns ("field" in changed, if changed, iteration) work unchanged; set-difference sites use changed.keys() - {...}.
This commit is contained in:
@@ -100,7 +100,8 @@ class TestApplyUpdate:
|
||||
current = TTSSettings(voice="alice", language="en")
|
||||
delta = TTSSettings(voice="bob")
|
||||
changed = current.apply_update(delta)
|
||||
assert changed == {"voice"}
|
||||
assert changed.keys() == {"voice"}
|
||||
assert changed["voice"] == "alice" # old value
|
||||
assert current.voice == "bob"
|
||||
assert current.language == "en"
|
||||
|
||||
@@ -108,14 +109,14 @@ class TestApplyUpdate:
|
||||
current = TTSSettings(voice="alice", language="en")
|
||||
delta = TTSSettings(voice="alice")
|
||||
changed = current.apply_update(delta)
|
||||
assert changed == set()
|
||||
assert changed == {}
|
||||
assert current.voice == "alice"
|
||||
|
||||
def test_apply_update_not_given_skipped(self):
|
||||
current = TTSSettings(voice="alice", language="en")
|
||||
delta = TTSSettings() # all NOT_GIVEN
|
||||
changed = current.apply_update(delta)
|
||||
assert changed == set()
|
||||
assert changed == {}
|
||||
assert current.voice == "alice"
|
||||
assert current.language == "en"
|
||||
|
||||
@@ -123,7 +124,9 @@ class TestApplyUpdate:
|
||||
current = LLMSettings(temperature=0.7, max_tokens=100)
|
||||
delta = LLMSettings(temperature=0.9, max_tokens=200, top_p=0.95)
|
||||
changed = current.apply_update(delta)
|
||||
assert changed == {"temperature", "max_tokens", "top_p"}
|
||||
assert changed.keys() == {"temperature", "max_tokens", "top_p"}
|
||||
assert changed["temperature"] == 0.7
|
||||
assert changed["max_tokens"] == 100
|
||||
assert current.temperature == 0.9
|
||||
assert current.max_tokens == 200
|
||||
assert current.top_p == 0.95
|
||||
@@ -135,6 +138,7 @@ class TestApplyUpdate:
|
||||
delta.extra = {"speed": 1.2}
|
||||
changed = current.apply_update(delta)
|
||||
assert "speed" in changed
|
||||
assert changed["speed"] == 1.0 # old value
|
||||
assert current.extra == {"speed": 1.2, "stability": 0.5}
|
||||
|
||||
def test_apply_update_extra_no_change(self):
|
||||
@@ -143,13 +147,14 @@ class TestApplyUpdate:
|
||||
delta = TTSSettings()
|
||||
delta.extra = {"speed": 1.0}
|
||||
changed = current.apply_update(delta)
|
||||
assert changed == set()
|
||||
assert changed == {}
|
||||
|
||||
def test_apply_update_model_field(self):
|
||||
current = ServiceSettings(model="old-model")
|
||||
delta = ServiceSettings(model="new-model")
|
||||
changed = current.apply_update(delta)
|
||||
assert changed == {"model"}
|
||||
assert changed.keys() == {"model"}
|
||||
assert changed["model"] == "old-model"
|
||||
assert current.model == "new-model"
|
||||
|
||||
def test_apply_update_none_is_a_valid_value(self):
|
||||
@@ -165,6 +170,7 @@ class TestApplyUpdate:
|
||||
delta = TTSSettings(language="en")
|
||||
changed = current.apply_update(delta)
|
||||
assert "language" in changed
|
||||
assert changed["language"] is None # old value was None
|
||||
assert current.language == "en"
|
||||
|
||||
|
||||
@@ -293,7 +299,9 @@ class TestRoundtrip:
|
||||
delta = TTSSettings.from_mapping(raw)
|
||||
|
||||
changed = current.apply_update(delta)
|
||||
assert changed == {"voice", "speed"}
|
||||
assert changed.keys() == {"voice", "speed"}
|
||||
assert changed["voice"] == "alice"
|
||||
assert changed["speed"] == 1.0
|
||||
assert current.voice == "bob"
|
||||
assert current.language == "en"
|
||||
assert current.extra["speed"] == 1.2
|
||||
@@ -303,6 +311,7 @@ class TestRoundtrip:
|
||||
current = LLMSettings(model="gpt-4o", temperature=0.7)
|
||||
delta = LLMSettings.from_mapping({"model": "gpt-4o-mini", "temperature": 0.9})
|
||||
changed = current.apply_update(delta)
|
||||
assert changed == {"model", "temperature"}
|
||||
assert changed.keys() == {"model", "temperature"}
|
||||
assert changed["model"] == "gpt-4o"
|
||||
assert current.model == "gpt-4o-mini"
|
||||
assert current.temperature == 0.9
|
||||
|
||||
Reference in New Issue
Block a user