##// END OF EJS Templates
Merge pull request #13088 from martinRenou/syntax_error_tb...
Blazej Michalik -
r26692:12a4c1fc merge
parent child Browse files
Show More
@@ -169,6 +169,31 b' def _format_traceback_lines(lines, Colors, has_colors, lvals):'
169 return res
169 return res
170
170
171
171
172 def _format_filename(file, ColorFilename, ColorNormal):
173 """
174 Format filename lines with `In [n]` if it's the nth code cell or `File *.py` if it's a module.
175
176 Parameters
177 ----------
178 file : str
179 ColorFilename
180 ColorScheme's filename coloring to be used.
181 ColorNormal
182 ColorScheme's normal coloring to be used.
183 """
184 ipinst = get_ipython()
185
186 if ipinst is not None and file in ipinst.compile._filename_map:
187 file = "[%s]" % ipinst.compile._filename_map[file]
188 tpl_link = "In %s%%s%s" % (ColorFilename, ColorNormal)
189 else:
190 file = util_path.compress_user(
191 py3compat.cast_unicode(file, util_path.fs_encoding)
192 )
193 tpl_link = "File %s%%s%s" % (ColorFilename, ColorNormal)
194
195 return tpl_link % file
196
172 #---------------------------------------------------------------------------
197 #---------------------------------------------------------------------------
173 # Module classes
198 # Module classes
174 class TBTools(colorable.Colorable):
199 class TBTools(colorable.Colorable):
@@ -414,21 +439,31 b' class ListTB(TBTools):'
414 Colors = self.Colors
439 Colors = self.Colors
415 list = []
440 list = []
416 for filename, lineno, name, line in extracted_list[:-1]:
441 for filename, lineno, name, line in extracted_list[:-1]:
417 item = ' File %s"%s"%s, line %s%d%s, in %s%s%s\n' % \
442 item = " %s, line %s%d%s, in %s%s%s\n" % (
418 (Colors.filename, filename, Colors.Normal,
443 _format_filename(filename, Colors.filename, Colors.Normal),
419 Colors.lineno, lineno, Colors.Normal,
444 Colors.lineno,
420 Colors.name, name, Colors.Normal)
445 lineno,
446 Colors.Normal,
447 Colors.name,
448 name,
449 Colors.Normal,
450 )
421 if line:
451 if line:
422 item += ' %s\n' % line.strip()
452 item += ' %s\n' % line.strip()
423 list.append(item)
453 list.append(item)
424 # Emphasize the last entry
454 # Emphasize the last entry
425 filename, lineno, name, line = extracted_list[-1]
455 filename, lineno, name, line = extracted_list[-1]
426 item = '%s File %s"%s"%s, line %s%d%s, in %s%s%s%s\n' % \
456 item = "%s %s, line %s%d%s, in %s%s%s%s\n" % (
427 (Colors.normalEm,
457 Colors.normalEm,
428 Colors.filenameEm, filename, Colors.normalEm,
458 _format_filename(filename, Colors.filenameEm, Colors.normalEm),
429 Colors.linenoEm, lineno, Colors.normalEm,
459 Colors.linenoEm,
430 Colors.nameEm, name, Colors.normalEm,
460 lineno,
431 Colors.Normal)
461 Colors.normalEm,
462 Colors.nameEm,
463 name,
464 Colors.normalEm,
465 Colors.Normal,
466 )
432 if line:
467 if line:
433 item += '%s %s%s\n' % (Colors.line, line.strip(),
468 item += '%s %s%s\n' % (Colors.line, line.strip(),
434 Colors.Normal)
469 Colors.Normal)
@@ -463,13 +498,21 b' class ListTB(TBTools):'
463 lineno = value.lineno
498 lineno = value.lineno
464 textline = linecache.getline(value.filename, value.lineno)
499 textline = linecache.getline(value.filename, value.lineno)
465 else:
500 else:
466 lineno = 'unknown'
501 lineno = "unknown"
467 textline = ''
502 textline = ""
468 list.append('%s File %s"%s"%s, line %s%s%s\n' % \
503 list.append(
469 (Colors.normalEm,
504 "%s %s, line %s%s%s\n"
470 Colors.filenameEm, py3compat.cast_unicode(value.filename), Colors.normalEm,
505 % (
471 Colors.linenoEm, lineno, Colors.Normal ))
506 Colors.normalEm,
472 if textline == '':
507 _format_filename(
508 value.filename, Colors.filenameEm, Colors.normalEm
509 ),
510 Colors.linenoEm,
511 lineno,
512 Colors.Normal,
513 )
514 )
515 if textline == "":
473 textline = py3compat.cast_unicode(value.text, "utf-8")
516 textline = py3compat.cast_unicode(value.text, "utf-8")
474
517
475 if textline is not None:
518 if textline is not None:
@@ -585,18 +628,6 b' class VerboseTB(TBTools):'
585 return ' %s[... skipping similar frames: %s]%s\n' % (
628 return ' %s[... skipping similar frames: %s]%s\n' % (
586 Colors.excName, frame_info.description, ColorsNormal)
629 Colors.excName, frame_info.description, ColorsNormal)
587
630
588 file = frame_info.filename
589
590 ipinst = get_ipython()
591 if ipinst is not None and file in ipinst.compile._filename_map:
592 file = "[%s]" % ipinst.compile._filename_map[file]
593 tpl_link = "In %s%%s%s," % (Colors.filenameEm, ColorsNormal)
594 else:
595 file = util_path.compress_user(
596 py3compat.cast_unicode(file, util_path.fs_encoding)
597 )
598 tpl_link = "File %s%%s%s," % (Colors.filenameEm, ColorsNormal)
599
600 indent = ' ' * INDENT_SIZE
631 indent = ' ' * INDENT_SIZE
601 em_normal = '%s\n%s%s' % (Colors.valEm, indent, ColorsNormal)
632 em_normal = '%s\n%s%s' % (Colors.valEm, indent, ColorsNormal)
602 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
633 tpl_call = 'in %s%%s%s%%s%s' % (Colors.vName, Colors.valEm,
@@ -605,7 +636,7 b' class VerboseTB(TBTools):'
605 (Colors.vName, Colors.valEm, ColorsNormal)
636 (Colors.vName, Colors.valEm, ColorsNormal)
606 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
637 tpl_name_val = '%%s %s= %%s%s' % (Colors.valEm, ColorsNormal)
607
638
608 link = tpl_link % file
639 link = _format_filename(frame_info.filename, Colors.filenameEm, ColorsNormal)
609 args, varargs, varkw, locals_ = inspect.getargvalues(frame_info.frame)
640 args, varargs, varkw, locals_ = inspect.getargvalues(frame_info.frame)
610
641
611 func = frame_info.executing.code_qualname()
642 func = frame_info.executing.code_qualname()
@@ -645,7 +676,7 b' class VerboseTB(TBTools):'
645 if lvals_list:
676 if lvals_list:
646 lvals = '%s%s' % (indent, em_normal.join(lvals_list))
677 lvals = '%s%s' % (indent, em_normal.join(lvals_list))
647
678
648 result = '%s %s\n' % (link, call)
679 result = "%s, %s\n" % (link, call)
649
680
650 result += ''.join(_format_traceback_lines(frame_info.lines, Colors, self.has_colors, lvals))
681 result += ''.join(_format_traceback_lines(frame_info.lines, Colors, self.has_colors, lvals))
651 return result
682 return result
General Comments 0
You need to be logged in to leave comments. Login now