Show More
@@ -6,7 +6,7 b' Requires Python 2.3 or newer.' | |||
|
6 | 6 | |
|
7 | 7 | This file contains all the classes and helper functions specific to IPython. |
|
8 | 8 | |
|
9 |
$Id: iplib.py 1 |
|
|
9 | $Id: iplib.py 1202 2006-03-12 06:37:52Z fperez $ | |
|
10 | 10 | """ |
|
11 | 11 | |
|
12 | 12 | #***************************************************************************** |
@@ -1282,6 +1282,12 b' want to merge them back into the new files.""" % locals()' | |||
|
1282 | 1282 | "<string>" when reading from a string). |
|
1283 | 1283 | """ |
|
1284 | 1284 | etype, value, last_traceback = sys.exc_info() |
|
1285 | ||
|
1286 | # See note about these variables in showtraceback() below | |
|
1287 | sys.last_type = etype | |
|
1288 | sys.last_value = value | |
|
1289 | sys.last_traceback = last_traceback | |
|
1290 | ||
|
1285 | 1291 | if filename and etype is SyntaxError: |
|
1286 | 1292 | # Work hard to stuff the correct filename in the exception |
|
1287 | 1293 | try: |
@@ -1306,19 +1312,27 b' want to merge them back into the new files.""" % locals()' | |||
|
1306 | 1312 | return |
|
1307 | 1313 | pdb.pm() |
|
1308 | 1314 | |
|
1309 | def showtraceback(self,exc_tuple = None,filename=None): | |
|
1315 | def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None): | |
|
1310 | 1316 | """Display the exception that just occurred.""" |
|
1311 | 1317 | |
|
1312 | 1318 | # Though this won't be called by syntax errors in the input line, |
|
1313 | 1319 | # there may be SyntaxError cases whith imported code. |
|
1314 | 1320 | if exc_tuple is None: |
|
1315 | type, value, tb = sys.exc_info() | |
|
1321 | etype, value, tb = sys.exc_info() | |
|
1316 | 1322 | else: |
|
1317 | type, value, tb = exc_tuple | |
|
1318 | if type is SyntaxError: | |
|
1323 | etype, value, tb = exc_tuple | |
|
1324 | if etype is SyntaxError: | |
|
1319 | 1325 | self.showsyntaxerror(filename) |
|
1320 | 1326 | else: |
|
1321 | self.InteractiveTB() | |
|
1327 | # WARNING: these variables are somewhat deprecated and not | |
|
1328 | # necessarily safe to use in a threaded environment, but tools | |
|
1329 | # like pdb depend on their existence, so let's set them. If we | |
|
1330 | # find problems in the field, we'll need to revisit their use. | |
|
1331 | sys.last_type = etype | |
|
1332 | sys.last_value = value | |
|
1333 | sys.last_traceback = tb | |
|
1334 | ||
|
1335 | self.InteractiveTB(etype,value,tb,tb_offset=tb_offset) | |
|
1322 | 1336 | if self.InteractiveTB.call_pdb and self.has_readline: |
|
1323 | 1337 | # pdb mucks up readline, fix it back |
|
1324 | 1338 | self.readline.set_completer(self.Completer.complete) |
@@ -1489,7 +1503,7 b' want to merge them back into the new files.""" % locals()' | |||
|
1489 | 1503 | # We are off again... |
|
1490 | 1504 | __builtin__.__dict__['__IPYTHON__active'] -= 1 |
|
1491 | 1505 | |
|
1492 | def excepthook(self, type, value, tb): | |
|
1506 | def excepthook(self, etype, value, tb): | |
|
1493 | 1507 | """One more defense for GUI apps that call sys.excepthook. |
|
1494 | 1508 | |
|
1495 | 1509 | GUI frameworks like wxPython trap exceptions and call |
@@ -1511,10 +1525,7 b' want to merge them back into the new files.""" % locals()' | |||
|
1511 | 1525 | This hook should be used sparingly, only in places which are not likely |
|
1512 | 1526 | to be true IPython errors. |
|
1513 | 1527 | """ |
|
1514 | ||
|
1515 | self.InteractiveTB(type, value, tb, tb_offset=0) | |
|
1516 | if self.InteractiveTB.call_pdb and self.has_readline: | |
|
1517 | self.readline.set_completer(self.Completer.complete) | |
|
1528 | self.showtraceback((etype,value,tb),tb_offset=0) | |
|
1518 | 1529 | |
|
1519 | 1530 | def transform_alias(self, alias,rest=''): |
|
1520 | 1531 | """ Transform alias to system command string |
@@ -2254,15 +2265,14 b' want to merge them back into the new files.""" % locals()' | |||
|
2254 | 2265 | try: |
|
2255 | 2266 | execfile(fname,*where) |
|
2256 | 2267 | except SyntaxError: |
|
2257 | etype,evalue = sys.exc_info()[:2] | |
|
2258 | self.SyntaxTB(etype,evalue,[]) | |
|
2268 | self.showsyntaxerror() | |
|
2259 | 2269 | warn('Failure executing file: <%s>' % fname) |
|
2260 | 2270 | except SystemExit,status: |
|
2261 | 2271 | if not kw['exit_ignore']: |
|
2262 |
self. |
|
|
2272 | self.showtraceback() | |
|
2263 | 2273 | warn('Failure executing file: <%s>' % fname) |
|
2264 | 2274 | except: |
|
2265 |
self. |
|
|
2275 | self.showtraceback() | |
|
2266 | 2276 | warn('Failure executing file: <%s>' % fname) |
|
2267 | 2277 | |
|
2268 | 2278 | #************************* end of file <iplib.py> ***************************** |
@@ -1,3 +1,17 b'' | |||
|
1 | 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu> | |
|
2 | ||
|
3 | * IPython/iplib.py (showtraceback): add back sys.last_traceback | |
|
4 | and friends, after a discussion with Zach Pincus on ipython-user. | |
|
5 | I'm not 100% sure, but after thinking aobut it quite a bit, it may | |
|
6 | be OK. Testing with the multithreaded shells didn't reveal any | |
|
7 | problems, but let's keep an eye out. | |
|
8 | ||
|
9 | In the process, I fixed a few things which were calling | |
|
10 | self.InteractiveTB() directly (like safe_execfile), which is a | |
|
11 | mistake: ALL exception reporting should be done by calling | |
|
12 | self.showtraceback(), which handles state and tab-completion and | |
|
13 | more. | |
|
14 | ||
|
1 | 15 | 2006-03-01 Ville Vainio <vivainio@gmail.com> |
|
2 | 16 | |
|
3 | 17 | * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module. |
General Comments 0
You need to be logged in to leave comments.
Login now