diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a02d08..047ec1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.0.4 + +* Added support for multi hash length + ## 1.0.3 * Moved all class variables to object variables diff --git a/deduplicationdict/__init__.py b/deduplicationdict/__init__.py index 6e5e394..7f87bd6 100644 --- a/deduplicationdict/__init__.py +++ b/deduplicationdict/__init__.py @@ -108,7 +108,12 @@ def __setitem__(self, key: KT, value: VT) -> None: del self[key] if isinstance(value, dict): - self.key_dict[key] = DeDuplicationDict(value, _value_dict=self.value_dict) + new_dd_dict = DeDuplicationDict(_value_dict=self.value_dict) + new_dd_dict.hash_length = self.hash_length + new_dd_dict.auto_clean_up = self.auto_clean_up + new_dd_dict.skip_update_on_setitem = self.skip_update_on_setitem + new_dd_dict.update(value) + self.key_dict[key] = new_dd_dict elif isinstance(value, DeDuplicationDict): self.key_dict[key] = value self.value_dict.update(value.value_dict) diff --git a/pyproject.toml b/pyproject.toml index 96a21ba..5189283 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ where = ["deduplicationdict"] [project] # $ pip install deduplicationdict name = "deduplicationdict" -version = "1.0.3" +version = "1.0.4" description = "A dictionary that de-duplicates values." readme = "README.md" requires-python = ">=3.7" diff --git a/tests/test_main.py b/tests/test_main.py index fecbe3a..66c3301 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -378,6 +378,25 @@ def test_deepcopy(self): self.assertNotEqual(id(dd_dict1), id(dd_dict2)) self.assertEqual(len(diff), 0) + def test_multi_hash_length(self): + """Test the multi_hash_length method of the DeDuplicationDict class.""" + + data = get_json_test_data() + dd_dict = DeDuplicationDict({'a': 1, 'b': 2, 'c': 3}) + + for i in dd_dict.value_dict.keys(): + self.assertEqual(len(i), 8) + + dd_dict.hash_length = 32 + dd_dict['data'] = data + self.assertEqual(dd_dict.hash_length, 32) + self.assertEqual(dd_dict['data'].hash_length, 32) + del dd_dict['a'] + del dd_dict['b'] + del dd_dict['c'] + for i in dd_dict.value_dict.keys(): + self.assertEqual(len(i), 32) + if __name__ == '__main__': unittest.main()