Coverage for venv / lib / python3.12 / site-packages / dictdiffer / __init__.py: 85%
13 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 00:09 +0100
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 00:09 +0100
1#coding=utf-8
2"""
3A dictionary difference calculator
4Originally posted as:
5http://stackoverflow.com/questions/1165352/fast-comparison-between-two-python-dictionary/1165552#1165552
6"""
9class DictDiffer(object):
10 """
11 Calculate the difference between two dictionaries as:
12 (1) items added
13 (2) items removed
14 (3) keys same in both but changed values
15 (4) keys same in both and unchanged values
16 """
17 def __init__(self, current_dict, past_dict):
18 self.current_dict, self.past_dict = current_dict, past_dict
19 self.current_keys, self.past_keys = [
20 set(d.keys()) for d in (current_dict, past_dict)
21 ]
22 self.intersect = self.current_keys.intersection(self.past_keys)
24 def added(self):
25 return self.current_keys - self.intersect
27 def removed(self):
28 return self.past_keys - self.intersect
30 def changed(self):
31 return set(o for o in self.intersect
32 if self.past_dict[o] != self.current_dict[o])
34 def unchanged(self):
35 return set(o for o in self.intersect
36 if self.past_dict[o] == self.current_dict[o])