1
2 """Standardized Error Messages"""
3
4 import traceback
5 import sys
6
7 from PyFoam.Basics.TerminalFormatter import TerminalFormatter
8 from PyFoam.ThirdParty.six import print_
9
10 defaultFormat=TerminalFormatter()
11 defaultFormat.getConfigFormat("error")
12 defaultFormat.getConfigFormat("warning",shortName="warn")
13
15 try:
16 f = traceback.extract_stack(limit=up+2)
17 if f:
18 return f[0]
19 except:
20 if __debug__:
21 traceback.print_exc()
22 pass
23 return ('', 0, '', None)
24
26 """Workaround for outputstreams that don't implement isatty
27 (specifically vtkPythonStdStreamCaptureHelper)
28 """
29 try:
30 return s.isatty
31 except AttributeError:
32 return False
33
35 """Common function for errors and Warnings"""
36 info=getLine(up=2)
37
38 isTerm=isatty(sys.stderr)
39
40 if format and isTerm:
41 print_(format, end=' ', file=sys.stderr)
42 print_("PyFoam",standard.upper(),"on line",info[1],"of file",info[0],":", end=' ', file=sys.stderr)
43 for t in text:
44 print_(t, end=' ', file=sys.stderr)
45
46 if isTerm:
47 print_(defaultFormat.reset, file=sys.stderr)
48
50 """Prints a warning message with the occuring line number
51 @param text: The error message"""
52 __common(defaultFormat.warn,"Warning",*text)
53
59
65
67 """Prints a debug message with the occuring line number
68 @param text: The error message"""
69 __common(None,"Debug",*text)
70
72 """Prints a 'not implemented' message for abstract interfaces
73 @param obj: the object for which the method is not defined
74 @param name: name of the method"""
75 error("The method",name,"is not implemented in this object of type",obj.__class__)
76
78 """The simplest exception for PyFoam"""
79
81 self.descr=text[0]
82 for t in text[1:]:
83 self.descr+=" "+str(t)
84
86 return "Problem in PyFoam: '"+self.descr+"'"
87
89 """The PyFoam-exception that does not expect to be caught"""
90
96
98 return "FatalError in PyFoam: '"+self.descr+"'"
99
100
101