Skip to content

Commit af303c1

Browse files
committed
adding examples for affected_paths, affected_root_keys
1 parent 4eb599f commit af303c1

File tree

2 files changed

+42
-7
lines changed

2 files changed

+42
-7
lines changed

deepdiff/diff.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,6 +1431,22 @@ def _group_iterable_to_dict(self, item, group_by, item_name):
14311431
def get_stats(self):
14321432
"""
14331433
Get some stats on internals of the DeepDiff run.
1434+
1435+
Example
1436+
>>> t1 = {1: 1, 2: 2, 3: [3], 4: 4}
1437+
>>> t2 = {1: 1, 2: 4, 3: [3, 4], 5: 5, 6: 6}
1438+
>>> ddiff = DeepDiff(t1, t2)
1439+
>>> ddiff
1440+
>>> pprint(ddiff, indent=4)
1441+
{ 'dictionary_item_added': [root[5], root[6]],
1442+
'dictionary_item_removed': [root[4]],
1443+
'iterable_item_added': {'root[3][1]': 4},
1444+
'values_changed': {'root[2]': {'new_value': 4, 'old_value': 2}}}
1445+
>>> ddiff.affected_paths
1446+
OrderedSet(['root[3][1]', 'root[4]', 'root[5]', 'root[6]', 'root[2]'])
1447+
>>> ddiff.affected_root_keys
1448+
OrderedSet([3, 4, 5, 6, 2])
1449+
14341450
"""
14351451
return self._stats
14361452

@@ -1455,6 +1471,21 @@ def affected_root_keys(self):
14551471
"""
14561472
Get the list of root keys that were affected.
14571473
Whether a value was changed or they were added or removed.
1474+
1475+
Example
1476+
>>> t1 = {1: 1, 2: 2, 3: [3], 4: 4}
1477+
>>> t2 = {1: 1, 2: 4, 3: [3, 4], 5: 5, 6: 6}
1478+
>>> ddiff = DeepDiff(t1, t2)
1479+
>>> ddiff
1480+
>>> pprint(ddiff, indent=4)
1481+
{ 'dictionary_item_added': [root[5], root[6]],
1482+
'dictionary_item_removed': [root[4]],
1483+
'iterable_item_added': {'root[3][1]': 4},
1484+
'values_changed': {'root[2]': {'new_value': 4, 'old_value': 2}}}
1485+
>>> ddiff.affected_paths
1486+
OrderedSet(['root[3][1]', 'root[4]', 'root[5]', 'root[6]', 'root[2]'])
1487+
>>> ddiff.affected_root_keys
1488+
OrderedSet([3, 4, 5, 6, 2])
14581489
"""
14591490
result = OrderedSet()
14601491
for key in REPORT_KEYS:

tests/test_diff_text.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,21 +82,25 @@ def test_value_change(self):
8282
assert result == DeepDiff(t1, t2)
8383

8484
def test_item_added_and_removed(self):
85-
t1 = {1: 1, 2: 2, 3: 3, 4: 4}
86-
t2 = {1: 1, 2: 4, 3: 3, 5: 5, 6: 6}
85+
t1 = {1: 1, 2: 2, 3: [3], 4: 4}
86+
t2 = {1: 1, 2: 4, 3: [3, 4], 5: 5, 6: 6}
8787
ddiff = DeepDiff(t1, t2)
8888
result = {
89-
'dictionary_item_added': {'root[5]', 'root[6]'},
90-
'dictionary_item_removed': {'root[4]'},
89+
'dictionary_item_added': ["root[5]", "root[6]"],
90+
'dictionary_item_removed': ["root[4]"],
9191
'values_changed': {
9292
'root[2]': {
93-
"old_value": 2,
94-
"new_value": 4
93+
'new_value': 4,
94+
'old_value': 2
9595
}
96+
},
97+
'iterable_item_added': {
98+
'root[3][1]': 4
9699
}
97100
}
98101
assert result == ddiff
99-
assert {"root[2]", "root[4]", "root[5]", "root[6]"} == ddiff.affected_paths
102+
assert {'root[4]', 'root[5]', 'root[6]', 'root[3][1]', 'root[2]'} == ddiff.affected_paths
103+
assert {4, 5, 6, 3, 2} == ddiff.affected_root_keys
100104

101105
def test_item_added_and_removed_verbose(self):
102106
t1 = {1: 1, 3: 3, 4: 4}

0 commit comments

Comments
 (0)