[deep_diff]

- use isinstance() instead of type()
- make tests harder
This commit is contained in:
2024-10-19 10:47:32 +02:00
parent 8912099e43
commit 57d9cda41f
+24 -19
View File
@@ -5,7 +5,7 @@ from copy import deepcopy
def deep_diff(data, temp_data): def deep_diff(data, temp_data):
new_data = {} new_data = {}
for k in data.keys(): for k in data.keys():
if type(data[k]) == type({}): if isinstance(data[k], dict):
if k not in temp_data: if k not in temp_data:
temp_data[k] = {} temp_data[k] = {}
temp = deep_diff(data[k], temp_data[k]) temp = deep_diff(data[k], temp_data[k])
@@ -35,24 +35,29 @@ def deep_merge(d, u, only_existing=True):
if __name__ == '__main__': if __name__ == '__main__':
with open("results/WVWZZZE1ZMP010760/2024/10/18/vehicle_WVWZZZE1ZMP010760_2024-10-15T12-05-23-268Z.json", "r") as fp: files = [
src = json.load(fp) "results/WVWZZZE1ZMP010760/2024/10/18/vehicle_WVWZZZE1ZMP010760_2024-10-15T12-05-23-268Z.json",
src_last = {} # "results/WVWZZZE1ZMP010760/2024/10/19/vehicle_WVWZZZE1ZMP010760_2024-10-19T00-00-34-353Z.json",
diffed_list = [] ]
last = {} for file in files:
for s in src: with open(file, "r") as fp:
diffed = deep_diff(s, last) src = json.load(fp)
diffed_list.append(deepcopy(diffed)) src_last = {}
last = deepcopy(s) diffed_list = []
print(f"Diffed: {diffed}") last = {}
for s in src:
diffed = deep_diff(s, last)
diffed_list.append(deepcopy(diffed))
last = deepcopy(s)
print(f"Diffed: {diffed}")
merged_list = [] merged_list = []
last = {} last = {}
for d in diffed_list: for d in diffed_list:
merged = deep_merge(last, d) merged = deep_merge(last, d)
last = deepcopy(merged) last = deepcopy(merged)
merged_list.append(deepcopy(merged)) merged_list.append(deepcopy(merged))
print(f"Merged: {merged}") print(f"Merged: {merged}")
assert src == merged_list assert src == merged_list