def pretty_description(self, show_positions=True, filename=None):
if filename:
pfx = filename.rstrip().rstrip(':') + ':'
else:
pfx = ''
# Print file position as numeric abbreviation
err = pfx
if self.position == 0:
err += '0:0:'
elif self.position:
err += '%d:%d:' % (self.position.line, self.position.column)
else:
err += ' '
# Print severity and main error message
err += " %s: %s" % (self.severity.capitalize(), self.message)
if len(self.args) > 1:
err += ': '
for anum, a in enumerate(self.args[1:]):
if anum > 1:
err += ', '
astr = repr(a)
if len(astr) > 30:
astr = astr[:30] + '...'
err += astr
# Print out exception chain
e2 = self
while e2:
if hasattr(e2,'__cause__') and isinstance(e2.__cause__,Exception):
e2 = e2.__cause__
e2desc = str(e2).strip()
if not e2desc:
e2desc = repr(e2).strip()
err += "\n | Cause: %s" % e2desc.strip().replace('\n','\n | ')
else:
e2 = None
# Show file position
if show_positions and self.position is not None:
if self.position == 0:
err += "\n | At start of input"
else:
err += "\n | At %s" % (self.position.describe(show_text=False),)
if self.position.text_after:
err += "\n | near text: %r" % (self.position.text_after,)
# Show context
if show_positions and self.outer_position:
if self.context_description:
cdesc = self.context_description.capitalize()
else:
cdesc = "Context"
err += "\n | %s started at %s" % (cdesc, self.outer_position.describe(show_text=False),)
if self.outer_position.text_after:
err += "\n | with text: %r" % (self.outer_position.text_after,)
return err
评论列表
文章目录