Announcing an update to IPython, an enhanced interactive Python shell.
As always, a big Thank You goes to Enthought and the SciPy crowd for hosting ipython and all its attending support services (bug tracker, mailing lists, website and downloads, etc).
* WHAT is IPython? IPython tries to:
1. Provide an interactive shell superior to Python's default. IPython has many features for object introspection, system shell access, and its own special command system for adding functionality when working interactively.
2. Serve as an embeddable, ready to use interpreter for your own programs. IPython can be started with a single call from inside another program, providing access to the current namespace.
3. Offer a flexible framework which can be used as the base environment for other systems with Python as the underlying language. In particular, it provides a profile (pysh) which allows its usage as a quasi system shell, with python syntax.
* WHERE to find it: http://ipython.scipy.org
* Some highlights of this release (details in the changelog):
1. Matplotlib support
The major new feature this time is integrated support for matplotlib (http://matplotlib.sourceforge.net). Thanks to the help of John Hunter (matplotlib's author) and others, IPython now has a new option -pylab. With this flag, it loads and configures matplotlib for interactive use, automatically adapting thread handling to whatever backend is configured in your .matplotlibrc file. This means that you can use Tk, GTK, or WX and IPython automatically handles threading for you so that the matplotlib figure windows do NOT block the shell.
The matplotlib features have been tested and work fairly well under Linux, though it's quite possible that bugs remain (threading code is particularly tricky to debug). However, under Mac OSX and Windows we have run into difficulties which we don't know how to solve yet. It appears that for these platforms, at this point only the Tk/TkAgg backends work well. Anyone who works on these systems and knows about threads is welcome to help; the place to look is towards the end of Ipython/Shell.py, where all the thread-handling classes reside.
I'd like to thank John for all the time he spent helping me with this. I think for those interested in scientific computing, the combination of matplotlib and ipython makes for a very interesting environment.
Please note that this requires matplotlib version 0.62.4 or newer, as John and I coordinated the development of these features, and it required changes to both ipython and matplotlib.
2. GTK & WXPython threading
There is also experimental, but disabled by default, support for generic (i.e. not specific to matplotlib) GTK and WX threading. Ideally, IPython should allow you to run arbitrary GTK or WX programs without blocking, and new -gthread/-wthread options were introduced for this purpose. However, this code is not working correctly and my threading knowledge is very limited.
If anyone is interested in this kind of functionality, and can help with debugging, simply modify the start() function at the end of IPython/Shell.py to re-enable those options (they are commented out). At that point the threading code will become active again. Any fixes for this will be most welcome.
3. As usual, a number of fixes for recently reported bugs are also included.
Enjoy, and please report any problems.