diff options
-rw-r--r-- | Lib/inspect.py | 2 | ||||
-rw-r--r-- | Lib/test/test_inspect.py | 23 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
3 files changed, 26 insertions, 1 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py index ac3434d..e5098d7 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -242,7 +242,7 @@ def isroutine(object): def isabstract(object): """Return true if the object is an abstract base class (ABC).""" - return isinstance(object, type) and object.__flags__ & TPFLAGS_IS_ABSTRACT + return bool(isinstance(object, type) and object.__flags__ & TPFLAGS_IS_ABSTRACT) def getmembers(object, predicate=None): """Return all members of an object as (name, value) pairs sorted by name. diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index e4c4ee8..f20b26c 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -115,6 +115,29 @@ class TestPredicates(IsTestBase): self.assertTrue('a' in members) self.assertTrue('b' not in members) + def test_isabstract(self): + from abc import ABCMeta, abstractmethod + + class AbstractClassExample(object): + __metaclass__ = ABCMeta + + @abstractmethod + def foo(self): + pass + + class ClassExample(AbstractClassExample): + def foo(self): + pass + + a = ClassExample() + + # Test general behaviour. + self.assertTrue(inspect.isabstract(AbstractClassExample)) + self.assertFalse(inspect.isabstract(ClassExample)) + self.assertFalse(inspect.isabstract(a)) + self.assertFalse(inspect.isabstract(int)) + self.assertFalse(inspect.isabstract(5)) + class TestInterpreterStack(IsTestBase): def __init__(self, *args, **kwargs): @@ -405,6 +405,8 @@ Core and Builtins Library ------- +- Issue #7069: Make inspect.isabstract() return a boolean. + - Add support to the `ihooks` module for relative imports. - Issue #6894: Fixed the issue urllib2 doesn't respect "no_proxy" environment |