@@ -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