Skip to content

Latest commit

 

History

History
64 lines (48 loc) · 1.31 KB

File metadata and controls

64 lines (48 loc) · 1.31 KB

DataDiff

DataDiff compares Python data structures, and returns a structurally consistent diffed data structure.

This is mostly for my own use at the moment, if you have problems or questions let me know. I'll be cleaning things up to make it nicer for other people to use with better documentation when I get time.

Example Data

PY_TEST_1 = {
  'a':10,
  'b':10,
  'd':[1,2,3],
  'e':[1,2,3],
  'f':{'aa':0, 'bb':5, 'cc':10},
  'g':{'aa':0, 'bb':5, 'cc':20, 'dd':99},
  'h':{'aa':0, 'bb':5, 'cc':10, 'f':{'aaa':300, 'bbb':1200}},
  'i':{'aa':0, 'bb':5, 'cc':10, 'f':{'aaa':300, 'bbb':1200, 'ccc':[], 'ddd':{3: 15}}},
}

PY_TEST_2 = {
  'a':12,
  'b':10,
  'c':15,
  'd':[1,2,3],
  'e':[1,2,3, 4, 5],
  'f':{'aa':0, 'bb':5, 'cc':10},
  'g':{'aa':0, 'bb':5, 'cc':10},
  'h':{'aa':0, 'bb':5, 'cc':10, 'f':{'aaa':300, 'bbb':900, 'ccc':{'a':9}}},
}

Example Invocation

  (source_diff, target_diff) = DataDiff(PY_TEST_1, PY_TEST_2, compare_list_as_value=True)

Result

Source Diff:


{'a': 10,
 'e': [1, 2, 3],
 'g': {'cc': 20, 'dd': 99},
 'h': {'f': {'bbb': 1200}},
 'i': {'aa': 0,
       'bb': 5,
       'cc': 10,
       'f': {'aaa': 300, 'bbb': 1200, 'ccc': [], 'ddd': {3: 15}}}}


Target Diff:


{'a': 12,
 'c': 15,
 'e': [1, 2, 3, 4, 5],
 'g': {'cc': 10},
 'h': {'f': {'bbb': 900, 'ccc': {'a': 9}}}}