Can I hide internal method calls from an exception stack trace?

Paul McGuire ptmcg at austin.rr.com
Fri Nov 7 10:25:41 EST 2008


Is there any way to hide portions of an exception stack trace?  When
users get exceptions when using pyparsing, there are usually many
layers of pyparsing-internal stack messages that are not at all
helpful in diagnosing the problem - the intervening messages just
divert the user's attention from the most significant parts of the
stack, usually the user's call into my module, and the root exception
message.  For instance, here is a stack trace:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 1065, in
parseString
    loc, tokens = self._parse( instring, 0 )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 998, in
_parseCache
    value = self._parseNoCache( instring, loc, doActions,
callPreParse )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 941, in
_parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 2577, in
parseImpl
    return self.expr._parse( instring, loc, doActions,
callPreParse=False )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 998, in
_parseCache
    value = self._parseNoCache( instring, loc, doActions,
callPreParse )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 941, in
_parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 2325, in
parseImpl
    loc, exprtokens = e._parse( instring, loc, doActions )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 998, in
_parseCache
    value = self._parseNoCache( instring, loc, doActions,
callPreParse )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 941, in
_parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 2577, in
parseImpl
    return self.expr._parse( instring, loc, doActions,
callPreParse=False )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 998, in
_parseCache
    value = self._parseNoCache( instring, loc, doActions,
callPreParse )
  File "/usr/lib/python2.5/site-packages/pyparsing.py", line 943, in
_parseNoCache
    raise ParseException( instring, len(instring), self.errmsg, self )
pyparsing.ParseException: Expected ")" (at char 82), (line:1, col:83)

The only helpful content here is just this much:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pyparsing.ParseException: Expected ")" (at char 82), (line:1, col:83)

That is, the point in the program where the user's code called
parseString, and the exception raised deep down in the recursive
parser that determined there was a missing closing paren in the input
string being parsed.

Is there any way for me to suppress these non-value-added API-internal
traceback levels?

-- Paul



More information about the Python-list mailing list