From: Raymond Hettinger Date: Tue, 3 May 2011 18:16:36 +0000 (-0700) Subject: Fix __hash__ in functools.cmp_to_key() to work with collections.Hashable. X-Git-Tag: v3.3.0a1~2417 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e7a2430ddedd3d236e1741b047d133cf461eb0de;p=python Fix __hash__ in functools.cmp_to_key() to work with collections.Hashable. --- e7a2430ddedd3d236e1741b047d133cf461eb0de diff --cc Lib/functools.py index 098f6b6fac,90642a58b2..b2bcc21f48 --- a/Lib/functools.py +++ b/Lib/functools.py @@@ -111,15 -111,9 +111,14 @@@ 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: + from _functools import cmp_to_key +except ImportError: + pass + _CacheInfo = namedtuple("CacheInfo", "hits misses maxsize currsize") def lru_cache(maxsize=100): diff --cc Lib/test/test_functools.py index c50336e3e0,7d11b53a71..97d7524f59 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@@ -510,6 -448,7 +511,7 @@@ class TestCmpToKey(unittest.TestCase) key = functools.cmp_to_key(mycmp) k = key(10) self.assertRaises(TypeError, hash, k) - self.assertFalse(isinstance(k, collections.Hashable)) ++ self.assertNotIsInstance(k, collections.Hashable) class TestTotalOrdering(unittest.TestCase): diff --cc Misc/NEWS index f8f90d02dc,f77befd332..13b42e2b1a --- a/Misc/NEWS +++ b/Misc/NEWS @@@ -136,11 -79,10 +136,13 @@@ Core and Builtin Library ------- +- Issue #11930: Removed deprecated time.accept2dyear variable. + Removed year >= 1000 restriction from datetime.strftime. + - 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.