From c90b12fb099be51b44331fc3d5b46935237efdff Mon Sep 17 00:00:00 2001 From: William CW Lau Date: Wed, 20 Jun 2018 00:21:16 +0800 Subject: [PATCH] Adding new method new_or_changed_or_removed --- dictdiffer/__init__.py | 5 +++++ tests/test_dictdiffer.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/dictdiffer/__init__.py b/dictdiffer/__init__.py index 7db49a5..bb4f1b5 100644 --- a/dictdiffer/__init__.py +++ b/dictdiffer/__init__.py @@ -13,6 +13,8 @@ class DictDiffer(object): (2) items removed (3) keys same in both but changed values (4) keys same in both and unchanged values + (5) items added or changed + (6) items added, changed or removed """ def __init__(self, current_dict, past_dict): self.current_dict, self.past_dict = current_dict, past_dict @@ -42,3 +44,6 @@ def new_or_changed(self): # return set(k for k, v in self.current_dict.items() # if k not in self.past_keys or v != self.past_dict[k]) return self.added().union(self.changed()) + + def new_or_changed_or_removed(self): + return self.added().union(self.changed()).union(self.removed()) diff --git a/tests/test_dictdiffer.py b/tests/test_dictdiffer.py index bb92e50..5cd76b4 100644 --- a/tests/test_dictdiffer.py +++ b/tests/test_dictdiffer.py @@ -20,3 +20,9 @@ def test_changed(self): def test_unchanged(self): self.assertEqual(self.d.unchanged(), set(['a'])) + + def test_new_or_changed(self): + self.assertEqual(self.d.new_or_changed(), set(['b', 'd'])) + + def test_new_or_changed_or_removed(self): + self.assertEqual(self.d.new_or_changed_or_removed(), set(['b', 'c', 'd']))