summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2011-05-03 18:01:32 (GMT)
committerRaymond Hettinger <python@rcn.com>2011-05-03 18:01:32 (GMT)
commit003be529323a395be4a17c779aff7e4737170bbf (patch)
tree77277ef2fa91c41d4beed7dd1f4b2dc9da1f26ae
parent5098d44354d612445aa2dd97a304ed0c0660f236 (diff)
downloadcpython-003be529323a395be4a17c779aff7e4737170bbf.zip
cpython-003be529323a395be4a17c779aff7e4737170bbf.tar.gz
cpython-003be529323a395be4a17c779aff7e4737170bbf.tar.bz2
Fix __hash__ in functools.cmp_to_key() to work with collections.Hashable.
-rw-r--r--Lib/functools.py3
-rw-r--r--Lib/test/test_functools.py5
-rw-r--r--Misc/NEWS2
3 files changed, 7 insertions, 3 deletions
diff --git a/Lib/functools.py b/Lib/functools.py
index e92a2fc..90642a5 100644
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -111,8 +111,7 @@ def cmp_to_key(mycmp):
return mycmp(self.obj, other.obj) >= 0
def __ne__(self, other):
return mycmp(self.obj, other.obj) != 0
- def __hash__(self):
- raise TypeError('hash not implemented')
+ __hash__ = None
return K
_CacheInfo = namedtuple("CacheInfo", "hits misses maxsize currsize")
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py
index 73a77d6..7d11b53 100644
--- a/Lib/test/test_functools.py
+++ b/Lib/test/test_functools.py
@@ -1,4 +1,5 @@
import functools
+import collections
import sys
import unittest
from test import support
@@ -446,7 +447,8 @@ class TestCmpToKey(unittest.TestCase):
return y - x
key = functools.cmp_to_key(mycmp)
k = key(10)
- self.assertRaises(TypeError, hash(k))
+ self.assertRaises(TypeError, hash, k)
+ self.assertFalse(isinstance(k, collections.Hashable))
class TestTotalOrdering(unittest.TestCase):
@@ -660,6 +662,7 @@ def test_main(verbose=None):
TestPythonPartial,
TestUpdateWrapper,
TestTotalOrdering,
+ TestCmpToKey,
TestWraps,
TestReduce,
TestLRU,
diff --git a/Misc/NEWS b/Misc/NEWS
index 8ca2f02..f77befd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -81,6 +81,8 @@ Library
- logging: don't define QueueListener if Python has no thread support.
+- functools.cmp_to_key() now works with collections.Hashable().
+
- Issue #11277: mmap.mmap() calls fcntl(fd, F_FULLFSYNC) on Mac OS X to get
around a mmap bug with sparse files. Patch written by Steffen Daode Nurpmeso.