diff options
| author | Jason Madden <jamadden@gmail.com> | 2020-01-27 09:31:30 -0600 |
|---|---|---|
| committer | Jason Madden <jamadden@gmail.com> | 2020-01-27 09:31:30 -0600 |
| commit | f41ebfdb0b432fd99e1c44c0a1d7fd54a637bdf8 (patch) | |
| tree | b15c734c418a50d33d0957964dd962c61fe33db9 /src | |
| parent | fec4a51b1ce8526de23c2558bfd26e253c4b6250 (diff) | |
| download | zope-interface-issue157.tar.gz | |
Remove support for hashing uninitialized interfaces.issue157
Fixes #157
Diffstat (limited to 'src')
| -rw-r--r-- | src/zope/interface/interface.py | 9 | ||||
| -rw-r--r-- | src/zope/interface/tests/test_interface.py | 12 |
2 files changed, 4 insertions, 17 deletions
diff --git a/src/zope/interface/interface.py b/src/zope/interface/interface.py index 106a60d..7fa56aa 100644 --- a/src/zope/interface/interface.py +++ b/src/zope/interface/interface.py @@ -17,7 +17,6 @@ import sys from types import MethodType from types import FunctionType -import warnings import weakref from zope.interface._compat import _use_c_impl @@ -579,7 +578,7 @@ class InterfaceClass(Element, InterfaceBase, Specification): if other is None: return -1 - n1 = (getattr(self, '__name__', ''), getattr(self, '__module__', '')) + n1 = (self.__name__, self.__module__) n2 = (getattr(other, '__name__', ''), getattr(other, '__module__', '')) # This spelling works under Python3, which doesn't have cmp(). @@ -589,11 +588,7 @@ class InterfaceClass(Element, InterfaceBase, Specification): try: return self._v_cached_hash except AttributeError: - try: - self._v_cached_hash = hash((self.__name__, self.__module__)) - except AttributeError: # pragma: no cover - warnings.warn('Hashing uninitialized InterfaceClass instance') - return 1 + self._v_cached_hash = hash((self.__name__, self.__module__)) return self._v_cached_hash def __eq__(self, other): diff --git a/src/zope/interface/tests/test_interface.py b/src/zope/interface/tests/test_interface.py index f5a57b4..3bf26dc 100644 --- a/src/zope/interface/tests/test_interface.py +++ b/src/zope/interface/tests/test_interface.py @@ -834,20 +834,12 @@ class InterfaceClassTests(unittest.TestCase): 'zope.interface.tests.test_interface')))) def test___hash___missing_required_attrs(self): - import warnings - from warnings import catch_warnings - class Derived(self._getTargetClass()): def __init__(self): pass # Don't call base class. derived = Derived() - with catch_warnings(record=True) as warned: - warnings.simplefilter('always') # see LP #825249 - self.assertEqual(hash(derived), 1) - self.assertEqual(len(warned), 1) - self.assertTrue(warned[0].category is UserWarning) - self.assertEqual(str(warned[0].message), - 'Hashing uninitialized InterfaceClass instance') + with self.assertRaises(AttributeError): + hash(derived) def test_comparison_with_None(self): iface = self._makeOne() |
