From 5463719b1a0c27e9c7f6017531a1d90ac762b31b Mon Sep 17 00:00:00 2001 From: Vratislav Podzimek Date: Mon, 7 Mar 2016 11:56:14 +0100 Subject: [PATCH] Make Size instances hashable This is useful e.g. for getting rid of duplicate items in lists and/or creation of sets of sizes in general. --- src/python/bytesize.py | 3 +++ tests/lbs_py_override_unittest.py | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/python/bytesize.py b/src/python/bytesize.py index e3c9098..179719c 100644 --- a/src/python/bytesize.py +++ b/src/python/bytesize.py @@ -547,5 +547,8 @@ class Size(object): def __reduce__(self): return (self.__class__, (self.get_bytes(),)) + def __hash__(self): + return self.get_bytes() + def __del__(self): del(self._c_size) diff --git a/tests/lbs_py_override_unittest.py b/tests/lbs_py_override_unittest.py index 17043ac..b502b30 100755 --- a/tests/lbs_py_override_unittest.py +++ b/tests/lbs_py_override_unittest.py @@ -244,6 +244,14 @@ class SizeTestCase(unittest.TestCase): self.assertIsNot(size1, size2) self.assertEqual(size1, size2) + def testHashable(self): + size = Size("1 KiB") + hs = hash(size) + self.assertIsNotNone(hs) + + size_set = set((Size("1 KiB"), Size("1 KiB"), Size("1 KiB"), Size("2 KiB"), Size(0))) + self.assertEqual(len(size_set), 3) + #endclass # script entry point -- 2.5.0