@@ -55,8 +55,8 @@ def diff_rows(rows):
5555
5656 unified_diff = []
5757 for field in row_a :
58- field_a = json .dumps (row_a [field ], indent = 2 , separators = (',' , ': ' )).replace ('\\ n' , "\n " ) if isinstance (row_a [ field ] , (dict , list )) else str (row_a [ field ] )
59- field_b = json .dumps (row_b [field ], indent = 2 , separators = (',' , ': ' )).replace ('\\ n' , "\n " ) if isinstance (row_b [ field ] , (dict , list )) else str (row_b [ field ] )
58+ field_a = json .dumps (row_a [field ], indent = 2 , separators = (',' , ': ' )).replace ('\\ n' , "\n " ) if isinstance (row_a . get ( field , '[NOT PRESENT]' ) , (dict , list )) else str (row_a . get ( field , '[NOT PRESENT]' ) )
59+ field_b = json .dumps (row_b [field ], indent = 2 , separators = (',' , ': ' )).replace ('\\ n' , "\n " ) if isinstance (row_b . get ( field , '[NOT PRESENT]' ) , (dict , list )) else str (row_b . get ( field , '[NOT PRESENT]' ) )
6060
6161 # although not strictly needed we use DeepDiff as this is WAY faster than difflib suprisingly
6262 diff = DeepDiff (field_a , field_b ,
@@ -89,6 +89,16 @@ def diff_rows(rows):
8989 unified_diff .append (f"diff --git a/{ field } b/{ field } \n ---\n +++\n @@ -1 +1 @@" )
9090 for v in value :
9191 unified_diff .append (f"- { key } : { v } " )
92+ elif key == "type_changes" :
93+ for k , v in value .items ():
94+
95+ if v .get ('diff' , False ):
96+ unified_diff .append (f"diff --git a/{ field } b/{ field } " )
97+ unified_diff .append (str (v ['diff' ]))
98+ else :
99+ unified_diff .append (f"diff --git a/{ field } b/{ field } \n ---\n +++\n @@ -1 +1 @@" )
100+ unified_diff .append (f"- { v ['old_value' ]} (Type: { v ['old_type' ]} )" )
101+ unified_diff .append (f"+ { v ['new_value' ]} (Type: { v ['new_type' ]} )" )
92102 elif key == "values_changed" :
93103 for k , v in value .items ():
94104
@@ -107,5 +117,5 @@ def diff_rows(rows):
107117
108118if __name__ == '__main__' :
109119 from lib .user import User
110- diffable_rows = get_diffable_rows (User (1 ), ['6f34b31e-f35c-4601-ae0d-6fd04a951aaf ' , '70ed5b3f-fa90-43fe-abcc-d4bf8048786a ' ])
120+ diffable_rows = get_diffable_rows (User (1 ), ['14f95398-a62e-464b-8f25-b82645895cef ' , '382f61ae-c5fb-4c8f-b973-d2b1eede6bd4 ' ])
111121 print (diff_rows (diffable_rows ))
0 commit comments