##// END OF EJS Templates
Backport PR #2717: One liner to fix debugger printing stack traces when lines of context are larger than source....
Backport PR #2717: One liner to fix debugger printing stack traces when lines of context are larger than source. Correctly print stack traces when context is larger than lines of source. To test: ``` In [6]: def bar(): ...: return 20 ...: ``` Before: ``` In [7]: ipdb.runcall(bar) <ipython-input-6-d0ed3bd5e16c>(2)bar() 0 return 20 ``` And here's after: ``` In [6]: ipdb.runcall(bar) <ipython-input-5-d0ed3bd5e16c>(2)bar() 1 def bar(): ----> 2 return 20 ``` Replaces gh-2697. (Adds a test.)

File last commit:

r2267:928c921b
r9850:72c7e714
Show More
numeric_formats.py
43 lines | 1.2 KiB | text/x-python | PythonLexer
# -*- coding: utf-8 -*-
"""
Extension for printing Numeric Arrays in flexible ways.
"""
from Numeric import ArrayType
def num_display(self,arg):
"""Display method for printing which treats Numeric arrays specially.
"""
# Non-numpy variables are printed using the system default
if type(arg) != ArrayType:
self._display(arg)
return
# Otherwise, we do work.
format = __IPYTHON__.runtime_rc.numarray_print_format
print 'NumPy array, format:',format
# Here is where all the printing logic needs to be implemented
print arg # nothing yet :)
def magic_format(self,parameter_s=''):
"""Specifies format of numerical output.
This command is similar to Ocave's format command.
"""
valid_formats = ['long','short']
if parameter_s in valid_formats:
self.runtime_rc.numarray_print_format = parameter_s
print 'Numeric output format is now:',parameter_s
else:
print 'Invalid format:',parameter_s
print 'Valid formats:',valid_formats
# setup default format
__IPYTHON__.runtime_rc.numarray_print_format = 'long'
# Bind our new functions to the interpreter
__IPYTHON__.__class__.magic_format = magic_format
__IPYTHON__.hooks.display = num_display