diff --git a/Lib/functools.py b/Lib/functools.py index 098f6b6fac2..b2bcc21f48e 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 try: diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index c50336e3e0d..97d7524f597 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 @@ -510,6 +511,7 @@ class TestCmpToKey(unittest.TestCase): key = functools.cmp_to_key(mycmp) k = key(10) self.assertRaises(TypeError, hash, k) + self.assertNotIsInstance(k, collections.Hashable) class TestTotalOrdering(unittest.TestCase): @@ -718,12 +720,12 @@ class TestLRU(unittest.TestCase): def test_main(verbose=None): test_classes = ( - TestCmpToKey, TestPartial, TestPartialSubclass, TestPythonPartial, TestUpdateWrapper, TestTotalOrdering, + TestCmpToKey, TestWraps, TestReduce, TestLRU, diff --git a/Misc/NEWS b/Misc/NEWS index f8f90d02dc0..13b42e2b1a1 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -141,6 +141,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.