@@ -94,7 +94,7 @@ def runcode(self, code):
94
94
except :
95
95
self .showtraceback ()
96
96
97
- def showsyntaxerror (self , filename = None , ** kwargs ):
97
+ def showsyntaxerror (self , filename = None ):
98
98
"""Display the syntax error that just occurred.
99
99
100
100
This doesn't display a stack trace because there isn't one.
@@ -106,66 +106,63 @@ def showsyntaxerror(self, filename=None, **kwargs):
106
106
The output is written by self.write(), below.
107
107
108
108
"""
109
- colorize = kwargs .pop ('colorize' , False )
110
- type , value , tb = sys .exc_info ()
111
- sys .last_exc = value
112
- sys .last_type = type
113
- sys .last_value = value
114
- sys .last_traceback = tb
115
- if filename and type is SyntaxError :
116
- # Work hard to stuff the correct filename in the exception
117
- try :
118
- msg , (dummy_filename , lineno , offset , line ) = value .args
119
- except ValueError :
120
- # Not the format we expect; leave it alone
121
- pass
122
- else :
123
- # Stuff in the right filename
124
- value = SyntaxError (msg , (filename , lineno , offset , line ))
125
- sys .last_exc = sys .last_value = value
126
- if sys .excepthook is sys .__excepthook__ :
127
- lines = traceback .format_exception_only (type , value , colorize = colorize )
128
- self .write ('' .join (lines ))
129
- else :
130
- # If someone has set sys.excepthook, we let that take precedence
131
- # over self.write
132
- self ._call_excepthook (type , value , tb )
109
+ try :
110
+ typ , value , tb = sys .exc_info ()
111
+ if filename and typ is SyntaxError :
112
+ # Work hard to stuff the correct filename in the exception
113
+ try :
114
+ msg , (dummy_filename , lineno , offset , line ) = value .args
115
+ except ValueError :
116
+ # Not the format we expect; leave it alone
117
+ pass
118
+ else :
119
+ # Stuff in the right filename
120
+ value = SyntaxError (msg , (filename , lineno , offset , line ))
121
+ self ._showtraceback (typ , value , None )
122
+ finally :
123
+ typ = value = tb = None
133
124
134
- def showtraceback (self , ** kwargs ):
125
+ def showtraceback (self ):
135
126
"""Display the exception that just occurred.
136
127
137
128
We remove the first stack item because it is our own code.
138
129
139
130
The output is written by self.write(), below.
140
131
141
132
"""
142
- colorize = kwargs .pop ('colorize' , False )
143
- sys .last_type , sys .last_value , last_tb = ei = sys .exc_info ()
144
- sys .last_traceback = last_tb
145
- sys .last_exc = ei [1 ]
146
133
try :
147
- if sys .excepthook is sys .__excepthook__ :
148
- lines = traceback .format_exception (ei [0 ], ei [1 ], last_tb .tb_next , colorize = colorize )
149
- self .write ('' .join (lines ))
150
- else :
151
- # If someone has set sys.excepthook, we let that take precedence
152
- # over self.write
153
- self ._call_excepthook (ei [0 ], ei [1 ], last_tb )
134
+ typ , value , tb = sys .exc_info ()
135
+ self ._showtraceback (typ , value , tb .tb_next )
154
136
finally :
155
- last_tb = ei = None
137
+ typ = value = tb = None
156
138
157
- def _call_excepthook (self , typ , value , tb ):
158
- try :
159
- sys .excepthook (typ , value , tb )
160
- except SystemExit :
161
- raise
162
- except BaseException as e :
163
- e .__context__ = None
164
- print ('Error in sys.excepthook:' , file = sys .stderr )
165
- sys .__excepthook__ (type (e ), e , e .__traceback__ .tb_next )
166
- print (file = sys .stderr )
167
- print ('Original exception was:' , file = sys .stderr )
168
- sys .__excepthook__ (typ , value , tb )
139
+ def _showtraceback (self , typ , value , tb ):
140
+ sys .last_type = typ
141
+ sys .last_traceback = tb
142
+ sys .last_exc = sys .last_value = value = value .with_traceback (tb )
143
+ if sys .excepthook is sys .__excepthook__ :
144
+ self ._excepthook (typ , value , tb )
145
+ else :
146
+ # If someone has set sys.excepthook, we let that take precedence
147
+ # over self.write
148
+ try :
149
+ sys .excepthook (typ , value , tb )
150
+ except SystemExit :
151
+ raise
152
+ except BaseException as e :
153
+ e .__context__ = None
154
+ e = e .with_traceback (e .__traceback__ .tb_next )
155
+ print ('Error in sys.excepthook:' , file = sys .stderr )
156
+ sys .__excepthook__ (type (e ), e , e .__traceback__ )
157
+ print (file = sys .stderr )
158
+ print ('Original exception was:' , file = sys .stderr )
159
+ sys .__excepthook__ (typ , value , tb )
160
+
161
+ def _excepthook (self , typ , value , tb ):
162
+ # This method is being overwritten in
163
+ # _pyrepl.console.InteractiveColoredConsole
164
+ lines = traceback .format_exception (typ , value , tb )
165
+ self .write ('' .join (lines ))
169
166
170
167
def write (self , data ):
171
168
"""Write a string.
0 commit comments