@@ -27,6 +27,8 @@ Property %port As %Numeric [ InitialExpression = 0 ];
2727
2828Property %PythonInterpreterPath As %String (MAXLEN = 255 );
2929
30+ Property %traceback As %Boolean ;
31+
3032/// Get Class
3133Method GetClass () As %SYS .Python
3234{
@@ -45,15 +47,45 @@ Method GetModule() As %String
4547 Return ..%module
4648}
4749
50+ Method DisplayTraceback (ex ) As %Status
51+ {
52+ set tSC = ex .AsStatus ()
53+ // Check if traceback is enabled
54+ if ..%traceback {
55+ // Import Modules
56+ set sys = ##class (%SYS.Python ).Import (" sys" )
57+ set tracebackModule = ##class (%SYS.Python ).Import (" traceback" )
58+ set builtins = ##class (%SYS.Python ).Import (" builtins" )
59+ // Get the last traceback
60+ set traceback = sys ." last_traceback"
61+ set exType = sys ." last_type" ." __name__"
62+ set exValue = sys ." last_value" ." __str__" ()
63+ // Check if traceback is an object
64+ if $isObject (traceback ) {
65+ // Format the traceback
66+ set tb = tracebackModule ." format_exception" (sys ." last_type" , sys ." last_value" , traceback )
67+ set tbString = " "
68+ for i =0 :1 :(tb ." __len__" ()-1 ) {
69+ set tbString = tbString _ $c (10 )_$c (13 ) _ tb ." __getitem__" (i )
70+ }
71+ $$$LOGERROR(tbString )
72+ set tSC = $$$ERROR($$$EnsErrGeneral," Exception in Python class: " _..%classname _" - " _exType _" - " _exValue )
73+ }
74+ }
75+ return tSC
76+ }
77+
4878Method OnInit () As %Status
4979{
5080 set tSC = $$$OK
5181 try {
82+ do $system .Python .Debugging (..%traceback )
5283 $$$ThrowOnError(..Connect ())
5384 do ..%class ." _debugpy" ($this )
5485 do ..%class ." _dispatch_on_init" ($this )
5586 } catch ex {
56- set tSC = ex .AsStatus ()
87+
88+ set tSC = ..DisplayTraceback (ex )
5789 }
5890 quit tSC
5991}
@@ -154,13 +186,14 @@ Method SetPropertyValues()
154186 // First list all the properties of the current class
155187 set class = $CLASSNAME ()
156188 set tSQL = " SELECT * FROM %Dictionary.PropertyDefinition WHERE parent = ?"
157- set tSQL = tSQL _ " AND name <> 'timeout'"
158- set tSQL = tSQL _ " and name <> 'enable'"
189+ set tSQL = tSQL _ " AND name <> '% timeout'"
190+ set tSQL = tSQL _ " and name <> '% enable'"
159191 set tSQL = tSQL _ " and name <> '%classpaths'"
160192 set tSQL = tSQL _ " and name <> '%classname'"
161193 set tSQL = tSQL _ " and name <> '%module'"
162- set tSQL = tSQL _ " and name <> 'port'"
163- set tSQL = tSQL _ " and name <> 'PythonInterpreterPath'"
194+ set tSQL = tSQL _ " and name <> '%port'"
195+ set tSQL = tSQL _ " and name <> '%PythonInterpreterPath'"
196+ set tSQL = tSQL _ " and name <> '%traceback'"
164197
165198 set tStmt = ##class (%SQL.Statement ).%New ()
166199
0 commit comments