Skip to content

Commit ff5cb2d

Browse files
Merge pull request #19 from StructuralPython/fixes/envelope_error
fix: merge_trees altering original trees; fix: envelope error
2 parents e6e9426 + 6f82fc6 commit ff5cb2d

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

src/jsonchain/envelope.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,14 @@ def envelope_tree(
2323
tree = {idx: value for idx, value in enumerate(tree)}
2424
elif isinstance(tree, dict):
2525
orig_tree = tree
26-
tree = {idx: branch[leaf] for idx, branch in enumerate(tree.values())}
26+
tree = {}
27+
28+
for idx, branch in enumerate(orig_tree.values()):
29+
if isinstance(branch, dict):
30+
tree.update({idx: branch[leaf]})
31+
else:
32+
tree.update({idx: branch})
33+
# tree = {idx: branch[leaf] for idx, branch in enumerate(tree.values())}
2734
trace_tree = {idx: key for idx, key in enumerate(orig_tree.keys())}
2835

2936
# leaf_acc = {}

src/jsonchain/tree.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from copy import copy
1+
from copy import deepcopy
22
from typing import Hashable, Union, Optional, Any
33
import operator
44
import deepmerge
@@ -249,6 +249,7 @@ def merge_trees(trees: list[dict[str, dict]]) -> dict[str, dict]:
249249
within each branch, no matter how deep the branches go.
250250
"""
251251
acc = {}
252-
for result_tree in trees:
252+
trees_copy = deepcopy(trees)
253+
for result_tree in trees_copy:
253254
acc = deepmerge.always_merger.merge(acc, result_tree)
254255
return acc

0 commit comments

Comments
 (0)