jay_merge_full: handle non-jaydiff input (full snapshot passthrough)

When _diff contains none of the jaydiff keys (update, update_add, add,
delete) and _old is empty, return _diff directly. This lets callers pass
a raw snapshot into jay_merge_full without needing a separate code path
for the initial-state bootstrap case.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-26 16:16:33 +02:00
co-authored by Claude Sonnet 4.6
parent ca5b284e9a
commit 620d22d2e4
+12 -1
View File
@@ -108,15 +108,23 @@ def jay_merge_delete(_old, _new):
def jay_merge_full(_old, _diff): def jay_merge_full(_old, _diff):
_is_diff = False
res = _old res = _old
if "update" in _diff: if "update" in _diff:
res = jay_merge_update(res, _diff['update']) res = jay_merge_update(res, _diff['update'])
_is_diff = True
if "update_add" in _diff: if "update_add" in _diff:
res = jay_merge_update(res, _diff['update_add']) res = jay_merge_update(res, _diff['update_add'])
_is_diff = True
if "add" in _diff: if "add" in _diff:
res = jay_merge_add(res, _diff['add']) res = jay_merge_add(res, _diff['add'])
_is_diff = True
if "delete" in _diff: if "delete" in _diff:
res = jay_merge_delete(res, _diff['delete']) res = jay_merge_delete(res, _diff['delete'])
_is_diff = True
if not _is_diff and not _old:
res = _diff
return res return res
@@ -392,8 +400,11 @@ def main() -> None:
assert result == {'a':'hamburger', 'b':'fries', 'c': {'f': 'coffee'}} assert result == {'a':'hamburger', 'b':'fries', 'c': {'f': 'coffee'}}
# jay_merge_full # jay_merge_full
# combine_upd_add = False # the no-jaydiff case
result = jay_merge_full({}, {'a': 'hamburger', 'b': 'fries', 'c': {'e': 'coke', 'f': 'coffee'}})
assert result == {'a': 'hamburger', 'b': 'fries', 'c': {'e': 'coke', 'f': 'coffee'}}
# combine_upd_add = False
result = jay_merge_full({'a': 'hamburger', 'b': 'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'add': {'a': 'hamburger', 'b': 'fries', 'c': {'e': 'coke', 'f': 'coffee'}}}) result = jay_merge_full({'a': 'hamburger', 'b': 'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'add': {'a': 'hamburger', 'b': 'fries', 'c': {'e': 'coke', 'f': 'coffee'}}})
assert result == {'a': 'hamburger', 'b': 'fries', 'c': {'e': 'coke', 'f': 'coffee'}} assert result == {'a': 'hamburger', 'b': 'fries', 'c': {'e': 'coke', 'f': 'coffee'}}