From: Georg Brandl Date: Wed, 12 Apr 2006 21:14:12 +0000 (+0000) Subject: Patch #860326: traceback.format_exception_only() now prepends the X-Git-Tag: v2.4.4c1~267 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5a7968780ecbaa5643bdf3dcb96b44baec9a095;p=thirdparty%2FPython%2Fcpython.git Patch #860326: traceback.format_exception_only() now prepends the exception's module name to non-builtin exceptions, like the interpreter itself does. (backport from rev. 45321) --- diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 17ed022617b2..f3efc3c82c8e 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -5,6 +5,9 @@ from test.test_support import run_unittest, is_jython import traceback +class TbError(Exception): + pass + class TracebackCases(unittest.TestCase): # For now, a very minimal set of tests. I want to be sure that # formatting of SyntaxErrors works based on changes for 2.1. @@ -85,6 +88,24 @@ def test(): os.unlink(os.path.join(testdir, f)) os.rmdir(testdir) + def raise_tberror(self): + raise TbError + + def raise_typeerror(self): + raise TypeError + + def test_modulename(self): + # Bug 860326: format_exception_only should prepend module name + # to exceptions not in "exceptions", like PyErr_Print does. + err = self.get_exception_format(self.raise_tberror, TbError) + self.assertEquals(len(err), 1) + self.assert_(err[0] == '__main__.TbError\n' or + err[0] == 'test.test_traceback.TbError\n') + + err = self.get_exception_format(self.raise_typeerror, TypeError) + self.assertEquals(err[0], 'TypeError\n') + + def test_main(): run_unittest(TracebackCases) diff --git a/Lib/traceback.py b/Lib/traceback.py index 95cde2bd75ca..fbdfb6a49285 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -159,6 +159,10 @@ def format_exception_only(etype, value): list = [] if type(etype) == types.ClassType: stype = etype.__name__ + if not hasattr(etype, '__module__'): + stype = '.' + stype + elif etype.__module__ != 'exceptions': + stype = etype.__module__ + '.' + stype else: stype = etype if value is None: diff --git a/Misc/NEWS b/Misc/NEWS index e1cf2ef52cea..9d705ffb5051 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -23,6 +23,10 @@ Extension Modules Library ------- +- Patch #860326: traceback.format_exception_only() now prepends the + exception's module name to non-builtin exceptions, like the interpreter + itself does. + - The email module's parsedate_tz function now sets the daylight savings flag to -1 (unknown) since it can't tell from the date whether it should be set.