@@ -399,7 +399,7 @@ def preloop(self):
399
399
displaying = self .displaying .get (self .curframe )
400
400
if displaying :
401
401
for expr , oldvalue in displaying .items ():
402
- newvalue = self ._getval_except (expr )
402
+ newvalue , _ = self ._getval_except (expr )
403
403
# check for identity first; this prevents custom __eq__ to
404
404
# be called at every loop, and also prevents instances whose
405
405
# fields are changed to be displayed
@@ -1246,13 +1246,12 @@ def _getval(self, arg):
1246
1246
def _getval_except (self , arg , frame = None ):
1247
1247
try :
1248
1248
if frame is None :
1249
- return eval (arg , self .curframe .f_globals , self .curframe_locals )
1249
+ return eval (arg , self .curframe .f_globals , self .curframe_locals ), None
1250
1250
else :
1251
- return eval (arg , frame .f_globals , frame .f_locals )
1252
- except :
1253
- exc_info = sys .exc_info ()[:2 ]
1254
- err = traceback .format_exception_only (* exc_info )[- 1 ].strip ()
1255
- return _rstr ('** raised %s **' % err )
1251
+ return eval (arg , frame .f_globals , frame .f_locals ), None
1252
+ except BaseException as exc :
1253
+ err = traceback .format_exception_only (exc )[- 1 ].strip ()
1254
+ return _rstr ('** raised %s **' % err ), exc
1256
1255
1257
1256
def _error_exc (self ):
1258
1257
exc_info = sys .exc_info ()[:2 ]
@@ -1437,13 +1436,19 @@ def do_display(self, arg):
1437
1436
Without expression, list all display expressions for the current frame.
1438
1437
"""
1439
1438
if not arg :
1440
- self .message ('Currently displaying:' )
1441
- for item in self .displaying .get (self .curframe , {}).items ():
1442
- self .message ('%s: %r' % item )
1439
+ if self .displaying :
1440
+ self .message ('Currently displaying:' )
1441
+ for item in self .displaying .get (self .curframe , {}).items ():
1442
+ self .message ('%s: %r' % item )
1443
+ else :
1444
+ self .message ('No expression is being displayed' )
1443
1445
else :
1444
- val = self ._getval_except (arg )
1445
- self .displaying .setdefault (self .curframe , {})[arg ] = val
1446
- self .message ('display %s: %r' % (arg , val ))
1446
+ val , exc = self ._getval_except (arg )
1447
+ if isinstance (exc , SyntaxError ):
1448
+ self .message ('Unable to display %s: %r' % (arg , val ))
1449
+ else :
1450
+ self .displaying .setdefault (self .curframe , {})[arg ] = val
1451
+ self .message ('display %s: %r' % (arg , val ))
1447
1452
1448
1453
complete_display = _complete_expression
1449
1454
0 commit comments