summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorAndrew Svetlov <andrew.svetlov@gmail.com>2012-12-13 19:09:33 +0200
committerAndrew Svetlov <andrew.svetlov@gmail.com>2012-12-13 19:09:33 +0200
commite8fde7f4513bd1ddb270330aae6b5a6b2645c310 (patch)
treeab5adf2072efac346f1adbc88e388e0b7d9a16c7 /Lib
parent447289bc54991d2f94052a1c180cf3567c81edbc (diff)
downloadcpython-e8fde7f4513bd1ddb270330aae6b5a6b2645c310.tar.gz
Issue #16049: add abc.ABC helper class.
Patch by Bruno Dupuis.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/abc.py6
-rw-r--r--Lib/test/test_abc.py13
2 files changed, 19 insertions, 0 deletions
diff --git a/Lib/abc.py b/Lib/abc.py
index 09778e8609..e807895da3 100644
--- a/Lib/abc.py
+++ b/Lib/abc.py
@@ -226,3 +226,9 @@ class ABCMeta(type):
# No dice; update negative cache
cls._abc_negative_cache.add(subclass)
return False
+
+class ABC(metaclass=ABCMeta):
+ """Helper class that provides a standard way to create an ABC using
+ inheritance.
+ """
+ pass
diff --git a/Lib/test/test_abc.py b/Lib/test/test_abc.py
index 653c957b81..3498524501 100644
--- a/Lib/test/test_abc.py
+++ b/Lib/test/test_abc.py
@@ -96,6 +96,19 @@ class TestLegacyAPI(unittest.TestCase):
class TestABC(unittest.TestCase):
+ def test_ABC_helper(self):
+ # create an ABC using the helper class and perform basic checks
+ class C(abc.ABC):
+ @classmethod
+ @abc.abstractmethod
+ def foo(cls): return cls.__name__
+ self.assertEqual(type(C), abc.ABCMeta)
+ self.assertRaises(TypeError, C)
+ class D(C):
+ @classmethod
+ def foo(cls): return super().foo()
+ self.assertEqual(D.foo(), 'D')
+
def test_abstractmethod_basics(self):
@abc.abstractmethod
def foo(self): pass