r77791 - in python/branches/py3k: Lib/abc.py Lib/test/test_abc.py Misc/NEWS
Author: benjamin.peterson Date: Wed Jan 27 03:25:58 2010 New Revision: 77791 Log: Merged revisions 77789 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r77789 | benjamin.peterson | 2010-01-26 20:16:42 -0600 (Tue, 26 Jan 2010) | 1 line raise a clear TypeError when trying to register a non-class ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/abc.py python/branches/py3k/Lib/test/test_abc.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/abc.py ============================================================================== --- python/branches/py3k/Lib/abc.py (original) +++ python/branches/py3k/Lib/abc.py Wed Jan 27 03:25:58 2010 @@ -94,7 +94,7 @@ def register(cls, subclass): """Register a virtual subclass of an ABC.""" - if not isinstance(cls, type): + if not isinstance(subclass, type): raise TypeError("Can only register classes") if issubclass(subclass, cls): return # Already a subclass Modified: python/branches/py3k/Lib/test/test_abc.py ============================================================================== --- python/branches/py3k/Lib/test/test_abc.py (original) +++ python/branches/py3k/Lib/test/test_abc.py Wed Jan 27 03:25:58 2010 @@ -139,6 +139,12 @@ self.assertRaises(RuntimeError, C.register, A) # cycles not allowed C.register(B) # ok + def test_register_non_class(self): + class A(metaclass=abc.ABCMeta): + pass + self.assertRaisesRegexp(TypeError, "Can only register classes", + A.register, 4) + def test_registration_transitiveness(self): class A(metaclass=abc.ABCMeta): pass Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 27 03:25:58 2010 @@ -234,6 +234,8 @@ Library ------- +- Issue #7792: Registering non-classes to ABCs raised an obscure error. + - Issue #7785: Don't accept bytes in FileIO.write(). - Removed the functions 'verify' and 'vereq' from Lib/test/support.py.
participants (1)
-
benjamin.peterson