summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-01-27 02:24:25 (GMT)
committerBenjamin Peterson <benjamin@python.org>2010-01-27 02:24:25 (GMT)
commit3059caadc6329ba7d207b0c909bc33a361a432a8 (patch)
treec7e3df0f11b3090ceceaeb0ad30151c6fab3e3ed /Lib
parent01bd3ece5ca1ab29f756b7b07c2445d9ef570016 (diff)
downloadcpython-3059caadc6329ba7d207b0c909bc33a361a432a8.zip
cpython-3059caadc6329ba7d207b0c909bc33a361a432a8.tar.gz
cpython-3059caadc6329ba7d207b0c909bc33a361a432a8.tar.bz2
Merged revisions 77788-77789 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r77788 | benjamin.peterson | 2010-01-26 20:15:28 -0600 (Tue, 26 Jan 2010) | 1 line for UserDict to be compatible with abcs, it must subclass object ........ 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 ........
Diffstat (limited to 'Lib')
-rw-r--r--Lib/UserDict.py2
-rw-r--r--Lib/abc.py2
-rw-r--r--Lib/test/test_abc.py5
3 files changed, 7 insertions, 2 deletions
diff --git a/Lib/UserDict.py b/Lib/UserDict.py
index 0d9591a..df5f7fb 100644
--- a/Lib/UserDict.py
+++ b/Lib/UserDict.py
@@ -1,6 +1,6 @@
"""A more or less complete user-defined wrapper around dictionary objects."""
-class UserDict:
+class UserDict(object):
def __init__(self, dict=None, **kwargs):
self.data = {}
if dict is not None:
diff --git a/Lib/abc.py b/Lib/abc.py
index 95126d8..8aeb2af 100644
--- a/Lib/abc.py
+++ b/Lib/abc.py
@@ -96,7 +96,7 @@ class ABCMeta(type):
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
diff --git a/Lib/test/test_abc.py b/Lib/test/test_abc.py
index 3e0955f..fa20173 100644
--- a/Lib/test/test_abc.py
+++ b/Lib/test/test_abc.py
@@ -149,6 +149,11 @@ class TestABC(unittest.TestCase):
self.assertRaises(RuntimeError, C.register, A) # cycles not allowed
C.register(B) # ok
+ def test_register_non_class(self):
+ class A(object):
+ __metaclass__ = abc.ABCMeta
+ self.assertRaises(TypeError, A.register, 4)
+
def test_registration_transitiveness(self):
class A:
__metaclass__ = abc.ABCMeta