Skip to content

Commit f30986d

Browse files
committed
fix search_of_the_diff.py
1 parent e53471d commit f30986d

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

gendiff/search_of_the_diff.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ def inner(value1=None, value2=None): # noqa: C901
1414
):
1515
diff_dict[f" {k}"] = value1[k]
1616
elif value1[k] == value2[k] and (
17-
isinstance(value1[k], dict) or isinstance(value2, dict)
17+
isinstance(value1[k], dict)
18+
or isinstance(value2, dict)
1819
):
1920
if f" {k}" not in diff_dict:
2021
diff_dict[f" {k}"] = {}
@@ -26,21 +27,35 @@ def inner(value1=None, value2=None): # noqa: C901
2627
diff_dict[f"- {k}"] = value1[k]
2728
diff_dict[f"+ {k}"] = value2[k]
2829
elif value1[k] != value2[k] and (
29-
isinstance(value1[k], dict) or isinstance(value2, dict)
30+
isinstance(value1[k], dict)
31+
and isinstance(value2[k], dict)
3032
):
31-
if f"- {k}" not in diff_dict:
33+
if f" {k}" not in diff_dict:
3234
diff_dict[f" {k}"] = {}
3335
diff_dict[f" {k}"].update(inner(value1[k], value2[k]))
36+
elif value1[k] != value2[k] and (
37+
isinstance(value1[k], dict)
38+
and not isinstance(value2[k], dict)):
39+
if f"- {k}" not in diff_dict:
40+
diff_dict[f"- {k}"] = {}
41+
diff_dict[f"- {k}"].update(inner(value1[k], None))
42+
diff_dict[f'+ {k}'] = value2[k]
43+
elif value1[k] != value2[k] and (
44+
not isinstance(value1[k], dict)
45+
and isinstance(value2[k], dict)):
46+
diff_dict[f"- {k}"] = value1[k]
47+
if f"+ {k}" not in diff_dict:
48+
diff_dict[f"+ {k}"] = {}
49+
diff_dict[f"+ {k}"].update(inner(None, value1[k]))
3450
elif k in value1 and k not in value2:
3551
if isinstance(value1[k], dict):
3652
diff_dict[f" {k}"] = inner(value1[k], None)
3753
else:
3854
diff_dict[f"- {k}"] = value1[k]
3955
elif k not in value1 and k in value2:
4056
if isinstance(value2[k], dict):
41-
diff_dict[f"+ {k}"] = inner(None, value2[k])
57+
diff_dict[f" {k}"] = inner(None, value2[k])
4258
else:
4359
diff_dict[f"+ {k}"] = value2[k]
4460
return diff_dict
45-
4661
return inner(value1, value2)

0 commit comments

Comments
 (0)