Change repr() of a new-style class to say <class 'ClassName'> rather
than <type 'ClassName'>.  Exception: if it's a built-in type or an
extension type, continue to call it <type 'ClassName>.  Call me a
wimp, but I don't want to break more user code than necessary.
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 877a3bd..964164f 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -114,6 +114,7 @@
 type_repr(PyTypeObject *type)
 {
 	PyObject *mod, *name, *rtn;
+	char *kind;
 
 	mod = type_module(type, NULL);
 	if (mod == NULL)
@@ -126,13 +127,19 @@
 	if (name == NULL)
 		return NULL;
 
+	if (type->tp_flags & Py_TPFLAGS_HEAPTYPE)
+		kind = "class";
+	else
+		kind = "type";
+
 	if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__")) {
-		rtn = PyString_FromFormat("<type '%s.%s'>",
+		rtn = PyString_FromFormat("<%s '%s.%s'>",
+					  kind,
 					  PyString_AS_STRING(mod),
 					  PyString_AS_STRING(name));
 	}
 	else
-		rtn = PyString_FromFormat("<type '%s'>", type->tp_name);
+		rtn = PyString_FromFormat("<%s '%s'>", kind, type->tp_name);
 
 	Py_XDECREF(mod);
 	Py_DECREF(name);
@@ -3365,12 +3372,12 @@
 
 	if (su->obj)
 		return PyString_FromFormat(
-			"<super: <type '%s'>, <%s object>>",
+			"<super: <class '%s'>, <%s object>>",
 			su->type ? su->type->tp_name : "NULL",
 			su->obj->ob_type->tp_name);
 	else
 		return PyString_FromFormat(
-			"<super: <type '%s'>, NULL>",
+			"<super: <class '%s'>, NULL>",
 			su->type ? su->type->tp_name : "NULL");
 }