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

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""" 

7 

8 

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) 

23 

24 def added(self): 

25 return self.current_keys - self.intersect 

26 

27 def removed(self): 

28 return self.past_keys - self.intersect 

29 

30 def changed(self): 

31 return set(o for o in self.intersect 

32 if self.past_dict[o] != self.current_dict[o]) 

33 

34 def unchanged(self): 

35 return set(o for o in self.intersect 

36 if self.past_dict[o] == self.current_dict[o])