@@ -2394,3 +2394,100 @@ def test_delta_flat_rows(self):
23942394 # the path to the leaf node.
23952395 delta2 = Delta (flat_rows_list = flat_rows , bidirectional = True , force = True )
23962396 assert t1 + delta2 == t2
2397+
2398+ def test_flat_dict_and_deeply_nested_dict (self ):
2399+ beforeImage = [
2400+ {
2401+ "usage" : "Mailing" ,
2402+ "standardization" : "YES" ,
2403+ "primaryIndicator" : True ,
2404+ "addressIdentifier" : "Z8PDWBG42YC" ,
2405+ "addressLines" : ["871 PHILLIPS FERRY RD" ],
2406+ },
2407+ {
2408+ "usage" : "Residence" ,
2409+ "standardization" : "YES" ,
2410+ "primaryIndicator" : False ,
2411+ "addressIdentifier" : "Z8PDWBG42YC" ,
2412+ "addressLines" : ["871 PHILLIPS FERRY RD" ],
2413+ },
2414+ {
2415+ "usage" : "Mailing" ,
2416+ "standardization" : None ,
2417+ "primaryIndicator" : False ,
2418+ "addressIdentifier" : "MHPP3BY0BYC" ,
2419+ "addressLines" : ["871 PHILLIPS FERRY RD" , "APT RV92" ],
2420+ },
2421+ ]
2422+ allAfterImage = [
2423+ {
2424+ "usage" : "Residence" ,
2425+ "standardization" : "NO" ,
2426+ "primaryIndicator" : False ,
2427+ "addressIdentifier" : "Z8PDWBG42YC" ,
2428+ "addressLines" : ["871 PHILLIPS FERRY RD" ],
2429+ },
2430+ {
2431+ "usage" : "Mailing" ,
2432+ "standardization" : None ,
2433+ "primaryIndicator" : False ,
2434+ "addressIdentifier" : "MHPP3BY0BYC" ,
2435+ "addressLines" : ["871 PHILLIPS FERRY RD" , "APT RV92" ],
2436+ },
2437+ {
2438+ "usage" : "Mailing" ,
2439+ "standardization" : "NO" ,
2440+ "primaryIndicator" : True ,
2441+ "addressIdentifier" : "Z8PDWBG42YC" ,
2442+ "addressLines" : ["871 PHILLIPS FERRY RD" ],
2443+ },
2444+ ]
2445+
2446+ diff = DeepDiff (
2447+ beforeImage ,
2448+ allAfterImage ,
2449+ ignore_order = True ,
2450+ report_repetition = True ,
2451+ )
2452+ reverse_diff = DeepDiff (
2453+ allAfterImage ,
2454+ beforeImage ,
2455+ ignore_order = True ,
2456+ report_repetition = True ,
2457+ )
2458+ delta = Delta (
2459+ diff , always_include_values = True , bidirectional = True
2460+ )
2461+ reverse_delta = Delta (
2462+ reverse_diff , always_include_values = True , bidirectional = True
2463+ )
2464+ allAfterImageAgain = beforeImage + delta
2465+ diff2 = DeepDiff (allAfterImage , allAfterImageAgain , ignore_order = True )
2466+ assert not diff2
2467+
2468+ from pprint import pprint
2469+ print ("\n delta.diff" )
2470+ pprint (delta .diff )
2471+ print ("\n delta._get_reverse_diff()" )
2472+ pprint (delta ._get_reverse_diff ())
2473+ print ("\n reverse_delta.diff" )
2474+ pprint (reverse_delta .diff )
2475+ # import pytest; pytest.set_trace()
2476+ beforeImageAgain = allAfterImage - delta
2477+ diff3 = DeepDiff (beforeImage , beforeImageAgain , ignore_order = True )
2478+ assert not diff3
2479+
2480+ # ------ now let's recreate the delta from flat dicts -------
2481+
2482+ flat_dict_list = delta .to_flat_dicts ()
2483+
2484+ delta2 = Delta (
2485+ flat_dict_list = flat_dict_list ,
2486+ always_include_values = True ,
2487+ bidirectional = True ,
2488+ raise_errors = False ,
2489+ force = True ,
2490+ )
2491+
2492+ assert allAfterImage == beforeImage + delta2
2493+ assert beforeImage == allAfterImage - delta2
0 commit comments