1
2
3
4
5 """ Error presentation wrapper.
6 """
7
8 import types
9 import traceback
10 import sys
11
12 global count
13 count = 0
14
15
18
19
21 pickled = 0
22 stack = None
23 frames = None
24
25 - def __init__(self, exc_value=None, exc_type=None, exc_tb=None):
26 global count
27 count = count + 1
28 self.count = count
29 self.type = self.value = tb = None
30
31 if exc_value is None:
32 self.type, self.value, tb = sys.exc_info()
33 if self.type is None:
34 raise NoCurrentExceptionError()
35 stackOffset = 1
36
37 - def printTraceback(self, file=None, elideFrameworkCode=0,
38 detail='default'):
39 """Emulate Python's standard error reporting mechanism. """
40 if file is None:
41 return
42 w = file.write
43
44 if detail == 'verbose':
45 w('*--- Failure #%d%s---\n' % (self.count,
46 (self.pickled and ' (pickled) ') \
47 or ' '))
48 elif detail == 'brief':
49 hasFrames = 'Traceback (failure with no frames)'
50 w("%s: %s: %s\n" % (hasFrames, self.type, self.value))
51 else:
52 w('Traceback (most recent call last):\n')
53
54 if not detail == 'brief':
55 w("Failure: ")
56 w("%s: %s\n" % (qual(self.type), safe_str(self.value)))
57 if isinstance(self.value, Failure):
58 file.write(" (chained Failure)\n")
59 self.value.printTraceback(file, elideFrameworkCode, detail)
60 if detail == 'verbose':
61 w('*--- End of Failure #%d ---\n' % self.count)
62
65
68
69
71 """Return full import path of a class."""
72 return c.__module__ + '.' + c.__name__
73
74
76 try:
77 return str(o)
78 except:
79 strExc = '\n'.join(traceback.format_exception(*sys.exc_info()))
80 clsName = _determineClassName(o)
81 obId = id(o)
82 return '<%s instance at %s with str error %s>' % (
83 clsName, obId, strExc)
84
85
87 try:
88 return x.__class__
89 except:
90 return type(x)
91
92
94 c = _determineClass(x)
95 try:
96 return c.__name__
97 except:
98 try:
99 return str(c)
100 except:
101 return '<BROKEN CLASS AT %s>' % id(c)
102