Mercurial > cpython-lru_cache-weakref
diff Python/pythonrun.c @ 6322:05d943c4597c legacy-trunk
PyErr_Print(): When printing a class exception, try to dig out the
__module__ string and if found, print <module>.<class>, unless
<module> == "exceptions".
| author | Barry Warsaw <barry@python.org> |
|---|---|
| date | Tue, 16 Sep 1997 21:42:03 +0000 |
| parents | 4cf20fa883a9 |
| children | dfeaf965f48a |
line wrap: on
line diff
--- a/Python/pythonrun.c Tue Sep 16 18:57:42 1997 +0000 +++ b/Python/pythonrun.c Tue Sep 16 21:42:03 1997 +0000 @@ -745,13 +745,28 @@ /* Don't do anything else */ } else if (PyClass_Check(exception)) { - PyObject* className = - ((PyClassObject*)exception)->cl_name; - if (className == NULL) + PyClassObject* exc = (PyClassObject*)exception; + PyObject* className = exc->cl_name; + PyObject* moduleName = + PyDict_GetItemString(exc->cl_dict, "__module__"); + + if (moduleName == NULL) err = PyFile_WriteString("<unknown>", f); - else - err = PyFile_WriteObject(className, f, - Py_PRINT_RAW); + else { + char* modstr = PyString_AsString(moduleName); + if (modstr && strcmp(modstr, "exceptions")) + { + err = PyFile_WriteString(modstr, f); + err += PyFile_WriteString(".", f); + } + } + if (err == 0) { + if (className == NULL) + err = PyFile_WriteString("<unknown>", f); + else + err = PyFile_WriteObject(className, f, + Py_PRINT_RAW); + } } else err = PyFile_WriteObject(exception, f, Py_PRINT_RAW);
