[Python-3000-checkins] r62203 - in python/branches/py3k: Doc/library/stdtypes.rst Doc/tutorial/errors.rst Lib/ctypes/test/test_structures.py Lib/test/test_defaultdict.py Lib/test/test_descrtut.py Lib/test/test_doctest3.txt Lib/test/test_generators.py Lib/test/test_genexps.py Lib/test/test_metaclass.py Lib/test/test_wsgiref.py Lib/test/test_xmlrpc.py Misc/NEWS Objects/typeobject.c

martin.v.loewis python-3000-checkins at python.org
Mon Apr 7 07:43:43 CEST 2008


Author: martin.v.loewis
Date: Mon Apr  7 07:43:42 2008
New Revision: 62203

Modified:
   python/branches/py3k/Doc/library/stdtypes.rst
   python/branches/py3k/Doc/tutorial/errors.rst
   python/branches/py3k/Lib/ctypes/test/test_structures.py
   python/branches/py3k/Lib/test/test_defaultdict.py
   python/branches/py3k/Lib/test/test_descrtut.py
   python/branches/py3k/Lib/test/test_doctest3.txt
   python/branches/py3k/Lib/test/test_generators.py
   python/branches/py3k/Lib/test/test_genexps.py
   python/branches/py3k/Lib/test/test_metaclass.py
   python/branches/py3k/Lib/test/test_wsgiref.py
   python/branches/py3k/Lib/test/test_xmlrpc.py
   python/branches/py3k/Misc/NEWS
   python/branches/py3k/Objects/typeobject.c
Log:
Bug #2565: The repr() of type objects now calls them 'class', 
not 'type' - whether they are builtin types or not.


Modified: python/branches/py3k/Doc/library/stdtypes.rst
==============================================================================
--- python/branches/py3k/Doc/library/stdtypes.rst	(original)
+++ python/branches/py3k/Doc/library/stdtypes.rst	Mon Apr  7 07:43:42 2008
@@ -2345,7 +2345,7 @@
 types.  The standard module :mod:`types` defines names for all standard built-in
 types.
 
-Types are written like this: ``<type 'int'>``.
+Types are written like this: ``<class 'int'>``.
 
 
 .. _bltin-null-object:

Modified: python/branches/py3k/Doc/tutorial/errors.rst
==============================================================================
--- python/branches/py3k/Doc/tutorial/errors.rst	(original)
+++ python/branches/py3k/Doc/tutorial/errors.rst	Mon Apr  7 07:43:42 2008
@@ -184,7 +184,7 @@
    ...    print('x =', x)
    ...    print('y =', y)
    ...
-   <type 'Exception'>
+   <class 'Exception'>
    ('spam', 'eggs')
    ('spam', 'eggs')
    x = spam

Modified: python/branches/py3k/Lib/ctypes/test/test_structures.py
==============================================================================
--- python/branches/py3k/Lib/ctypes/test/test_structures.py	(original)
+++ python/branches/py3k/Lib/ctypes/test/test_structures.py	Mon Apr  7 07:43:42 2008
@@ -307,14 +307,14 @@
         cls, msg = self.get_except(Person, "Someone", (1, 2))
         self.failUnlessEqual(cls, RuntimeError)
         self.failUnlessEqual(msg,
-                             "(Phone) <type 'TypeError'>: "
+                             "(Phone) <class 'TypeError'>: "
                              "expected string, int found")
 
         cls, msg = self.get_except(Person, "Someone", ("a", "b", "c"))
         self.failUnlessEqual(cls, RuntimeError)
         if issubclass(Exception, object):
             self.failUnlessEqual(msg,
-                                 "(Phone) <type 'TypeError'>: too many initializers")
+                                 "(Phone) <class 'TypeError'>: too many initializers")
         else:
             self.failUnlessEqual(msg, "(Phone) TypeError: too many initializers")
 

Modified: python/branches/py3k/Lib/test/test_defaultdict.py
==============================================================================
--- python/branches/py3k/Lib/test/test_defaultdict.py	(original)
+++ python/branches/py3k/Lib/test/test_defaultdict.py	Mon Apr  7 07:43:42 2008
@@ -64,7 +64,7 @@
         d2 = defaultdict(int)
         self.assertEqual(d2.default_factory, int)
         d2[12] = 42
-        self.assertEqual(repr(d2), "defaultdict(<type 'int'>, {12: 42})")
+        self.assertEqual(repr(d2), "defaultdict(<class 'int'>, {12: 42})")
         def foo(): return 43
         d3 = defaultdict(foo)
         self.assert_(d3.default_factory is foo)

Modified: python/branches/py3k/Lib/test/test_descrtut.py
==============================================================================
--- python/branches/py3k/Lib/test/test_descrtut.py	(original)
+++ python/branches/py3k/Lib/test/test_descrtut.py	Mon Apr  7 07:43:42 2008
@@ -39,7 +39,7 @@
     >>> print(defaultdict)              # show our type
     <class 'test.test_descrtut.defaultdict'>
     >>> print(type(defaultdict))        # its metatype
-    <type 'type'>
+    <class 'type'>
     >>> a = defaultdict(default=0.0)    # create an instance
     >>> print(a)                        # show the instance
     {}
@@ -149,11 +149,11 @@
 For instance of built-in types, x.__class__ is now the same as type(x):
 
     >>> type([])
-    <type 'list'>
+    <class 'list'>
     >>> [].__class__
-    <type 'list'>
+    <class 'list'>
     >>> list
-    <type 'list'>
+    <class 'list'>
     >>> isinstance([], list)
     True
     >>> isinstance([], dict)
@@ -346,7 +346,7 @@
 
     >>> del property  # unmask the builtin
     >>> property
-    <type 'property'>
+    <class 'property'>
 
     >>> class C(object):
     ...     def __init__(self):

Modified: python/branches/py3k/Lib/test/test_doctest3.txt
==============================================================================
--- python/branches/py3k/Lib/test/test_doctest3.txt	(original)
+++ python/branches/py3k/Lib/test/test_doctest3.txt	Mon Apr  7 07:43:42 2008
@@ -2,4 +2,4 @@
 Here we check that `__file__` is provided:
 
   >>> type(__file__)
-  <type 'str'>
+  <class 'str'>

Modified: python/branches/py3k/Lib/test/test_generators.py
==============================================================================
--- python/branches/py3k/Lib/test/test_generators.py	(original)
+++ python/branches/py3k/Lib/test/test_generators.py	Mon Apr  7 07:43:42 2008
@@ -377,10 +377,10 @@
 ...     yield 1
 ...
 >>> type(g)
-<type 'function'>
+<class 'function'>
 >>> i = g()
 >>> type(i)
-<type 'generator'>
+<class 'generator'>
 >>> [s for s in dir(i) if not s.startswith('_')]
 ['close', 'gi_code', 'gi_frame', 'gi_running', 'send', 'throw']
 >>> print(i.__next__.__doc__)
@@ -396,7 +396,7 @@
 >>> i.gi_running
 0
 >>> type(i.gi_frame)
-<type 'frame'>
+<class 'frame'>
 >>> i.gi_running = 42
 Traceback (most recent call last):
   ...
@@ -794,27 +794,27 @@
 >>> def f():
 ...    yield
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 
 >>> def f():
 ...    if 0:
 ...        yield
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 
 >>> def f():
 ...     if 0:
 ...         yield 1
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 >>> def f():
 ...    if "":
 ...        yield None
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 >>> def f():
 ...     return
@@ -838,7 +838,7 @@
 ...         x = 1
 ...     return
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 >>> def f():
 ...     if 0:
@@ -846,7 +846,7 @@
 ...             yield 1
 ...
 >>> type(f())
-<type 'NoneType'>
+<class 'NoneType'>
 
 >>> def f():
 ...     if 0:
@@ -856,7 +856,7 @@
 ...             def f(self):
 ...                 yield 2
 >>> type(f())
-<type 'NoneType'>
+<class 'NoneType'>
 
 >>> def f():
 ...     if 0:
@@ -864,7 +864,7 @@
 ...     if 0:
 ...         yield 2
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 
 >>> def f():
@@ -1512,7 +1512,7 @@
 
 >>> def f(): list(i for i in [(yield 26)])
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 
 A yield expression with augmented assignment.
@@ -1749,25 +1749,25 @@
 
 >>> def f(): x += yield
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 >>> def f(): x = yield
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 >>> def f(): lambda x=(yield): 1
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 >>> def f(): x=(i for i in (yield) if (yield))
 >>> type(f())
-<type 'generator'>
+<class 'generator'>
 
 >>> def f(d): d[(yield "a")] = d[(yield "b")] = 27
 >>> data = [1,2]
 >>> g = f(data)
 >>> type(g)
-<type 'generator'>
+<class 'generator'>
 >>> g.send(None)
 'a'
 >>> data

Modified: python/branches/py3k/Lib/test/test_genexps.py
==============================================================================
--- python/branches/py3k/Lib/test/test_genexps.py	(original)
+++ python/branches/py3k/Lib/test/test_genexps.py	Mon Apr  7 07:43:42 2008
@@ -27,7 +27,7 @@
 
     >>> g = (i*i for i in range(4))
     >>> type(g)
-    <type 'generator'>
+    <class 'generator'>
     >>> list(g)
     [0, 1, 4, 9]
 

Modified: python/branches/py3k/Lib/test/test_metaclass.py
==============================================================================
--- python/branches/py3k/Lib/test/test_metaclass.py	(original)
+++ python/branches/py3k/Lib/test/test_metaclass.py	Mon Apr  7 07:43:42 2008
@@ -78,7 +78,7 @@
     >>> class C(object, metaclass=M, other="haha"):
     ...     pass
     ...
-    Prepare called: ('C', (<type 'object'>,)) {'other': 'haha'}
+    Prepare called: ('C', (<class 'object'>,)) {'other': 'haha'}
     New called: {'other': 'haha'}
     >>> C.__class__ is M
     True
@@ -104,7 +104,7 @@
     >>> kwds = {'metaclass': M, 'other': 'haha'}
     >>> class C(*bases, **kwds): pass
     ...
-    Prepare called: ('C', (<type 'object'>,)) {'other': 'haha'}
+    Prepare called: ('C', (<class 'object'>,)) {'other': 'haha'}
     New called: {'other': 'haha'}
     >>> C.__class__ is M
     True
@@ -114,7 +114,7 @@
     >>> kwds = {'other': 'haha'}
     >>> class C(B, metaclass=M, *bases, **kwds): pass
     ...
-    Prepare called: ('C', (<class 'test.test_metaclass.B'>, <type 'object'>)) {'other': 'haha'}
+    Prepare called: ('C', (<class 'test.test_metaclass.B'>, <class 'object'>)) {'other': 'haha'}
     New called: {'other': 'haha'}
     >>> C.__class__ is M
     True

Modified: python/branches/py3k/Lib/test/test_wsgiref.py
==============================================================================
--- python/branches/py3k/Lib/test/test_wsgiref.py	(original)
+++ python/branches/py3k/Lib/test/test_wsgiref.py	Mon Apr  7 07:43:42 2008
@@ -157,7 +157,7 @@
         self.assertEqual(
             err.splitlines()[-2],
             "AssertionError: Headers (('Content-Type', 'text/plain')) must"
-            " be of type list: <type 'tuple'>"
+            " be of type list: <class 'tuple'>"
         )
 
 

Modified: python/branches/py3k/Lib/test/test_xmlrpc.py
==============================================================================
--- python/branches/py3k/Lib/test/test_xmlrpc.py	(original)
+++ python/branches/py3k/Lib/test/test_xmlrpc.py	Mon Apr  7 07:43:42 2008
@@ -416,12 +416,12 @@
             result = multicall()
 
             # result.results contains;
-            # [{'faultCode': 1, 'faultString': '<type \'exceptions.Exception\'>:'
+            # [{'faultCode': 1, 'faultString': '<class \'exceptions.Exception\'>:'
             #   'method "this_is_not_exists" is not supported'>}]
 
             self.assertEqual(result.results[0]['faultCode'], 1)
             self.assertEqual(result.results[0]['faultString'],
-                '<type \'Exception\'>:method "this_is_not_exists" '
+                '<class \'Exception\'>:method "this_is_not_exists" '
                 'is not supported')
         except (xmlrpclib.ProtocolError, socket.error) as e:
             # ignore failures due to non-blocking socket 'unavailable' errors

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Mon Apr  7 07:43:42 2008
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Bug #2565: The repr() of type objects now calls them 'class', 
+  not 'type' - whether they are builtin types or not.
+
 - The command line processing was converted to pass Unicode strings
   through as unmodified as possible; as a consequence, the C API
   related to command line arguments was changed to use wchar_t.

Modified: python/branches/py3k/Objects/typeobject.c
==============================================================================
--- python/branches/py3k/Objects/typeobject.c	(original)
+++ python/branches/py3k/Objects/typeobject.c	Mon Apr  7 07:43:42 2008
@@ -600,7 +600,6 @@
 type_repr(PyTypeObject *type)
 {
 	PyObject *mod, *name, *rtn;
-	char *kind;
 
 	mod = type_module(type, NULL);
 	if (mod == NULL)
@@ -613,15 +612,10 @@
 	if (name == NULL)
 		return NULL;
 
-	if (type->tp_flags & Py_TPFLAGS_HEAPTYPE)
-		kind = "class";
-	else
-		kind = "type";
-
 	if (mod != NULL && PyUnicode_CompareWithASCIIString(mod, "builtins"))
-		rtn = PyUnicode_FromFormat("<%s '%U.%U'>", kind, mod, name);
+		rtn = PyUnicode_FromFormat("<class '%U.%U'>", mod, name);
 	else
-		rtn = PyUnicode_FromFormat("<%s '%s'>", kind, type->tp_name);
+		rtn = PyUnicode_FromFormat("<class '%s'>", type->tp_name);
 
 	Py_XDECREF(mod);
 	Py_DECREF(name);


More information about the Python-3000-checkins mailing list