Fix object_repr() to include the module (using the same rules as
type_repr() for when to show or not to show it).
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index f7f2c97..c38340e 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -912,9 +912,30 @@
static PyObject *
object_repr(PyObject *self)
{
- char buf[120];
+ PyTypeObject *type;
+ PyObject *mod, *name;
+ char buf[200];
- sprintf(buf, "<%.80s object at %p>", self->ob_type->tp_name, self);
+ type = self->ob_type;
+ mod = type_module(type, NULL);
+ if (mod == NULL)
+ PyErr_Clear();
+ else if (!PyString_Check(mod)) {
+ Py_DECREF(mod);
+ mod = NULL;
+ }
+ name = type_name(type, NULL);
+ if (name == NULL)
+ return NULL;
+ if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__"))
+ sprintf(buf, "<%.80s.%.80s instance at %p>",
+ PyString_AS_STRING(mod),
+ PyString_AS_STRING(name),
+ self);
+ else
+ sprintf(buf, "<%.80s instance at %p>", type->tp_name, self);
+ Py_XDECREF(mod);
+ Py_DECREF(name);
return PyString_FromString(buf);
}