Make isinstance(OldstyleClass, NewstyleClass) return False instead of raising

an exception. Issue reported by Joseph Armbruster.
This commit is contained in:
Jeffrey Yasskin 2008-03-17 16:31:21 +00:00
parent 1b4e45bab9
commit b9e15f7555
2 changed files with 16 additions and 5 deletions

View file

@ -70,6 +70,17 @@ class TestABC(unittest.TestCase):
self.assertFalse(issubclass(OldstyleClass, A))
self.assertFalse(issubclass(A, OldstyleClass))
def test_isinstance_class(self):
class A:
__metaclass__ = abc.ABCMeta
class OldstyleClass:
pass
self.assertFalse(isinstance(OldstyleClass, A))
self.assertTrue(isinstance(OldstyleClass, type(OldstyleClass)))
self.assertFalse(isinstance(A, OldstyleClass))
# This raises a recursion depth error, but is low-priority:
# self.assertTrue(isinstance(A, abc.ABCMeta))
def test_registration_basics(self):
class A:
__metaclass__ = abc.ABCMeta