From 671a63e7f7b693b26df6285f3cdaf4a2fb598194 Mon Sep 17 00:00:00 2001 From: Ghanshyam Lele Date: Mon, 6 May 2019 15:15:51 -0400 Subject: [PATCH 1/2] Bug fix #454: Implement __hash__() in newstr --- src/future/types/newstr.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/future/types/newstr.py b/src/future/types/newstr.py index e6272fb9..76374656 100644 --- a/src/future/types/newstr.py +++ b/src/future/types/newstr.py @@ -105,6 +105,7 @@ def __repr__(self): """ Without the u prefix """ + value = super(newstr, self).__repr__() # assert value[0] == u'u' return value[1:] @@ -292,6 +293,13 @@ def __eq__(self, other): else: return False + def __hash__(self): + if (isinstance(self, unicode) or + isinstance(self, bytes) and not isnewbytes(self)): + return super(newstr, self).__hash__() + else: + raise NotImplementedError() + def __ne__(self, other): if (isinstance(other, unicode) or isinstance(other, bytes) and not isnewbytes(other)): From 064a12ae5b1e70e9be1faaee74259a3d6cf4b2f2 Mon Sep 17 00:00:00 2001 From: Ghanshyam Lele Date: Mon, 6 May 2019 15:42:11 -0400 Subject: [PATCH 2/2] add test for newstr.__hash__() --- tests/test_future/test_str.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_future/test_str.py b/tests/test_future/test_str.py index dcc15628..debbd849 100644 --- a/tests/test_future/test_str.py +++ b/tests/test_future/test_str.py @@ -363,6 +363,10 @@ def test_eq(self): self.assertFalse(b'ABCD' == s) self.assertFalse(bytes(b'ABCD') == s) + def test_hash(self): + s = str('ABCD') + self.assertIsInstance(hash(s),int) + def test_ne(self): s = str('ABCD') self.assertNotEqual('A', s)