48 lines
1.4 KiB
Diff
48 lines
1.4 KiB
Diff
From 5463719b1a0c27e9c7f6017531a1d90ac762b31b Mon Sep 17 00:00:00 2001
|
|
From: Vratislav Podzimek <vpodzime@redhat.com>
|
|
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
|
|
|