What's new in IPython 0.7.2
Extension and configuration API
IPython can now be easily extended with new functionality (new magic commands, hooks, input prefilters etc.). The same API is used for configuration, see ~/.ipython/ipy_user_conf.py and wiki:BasicConfiguration. All of the extension API is usable also interactively, explore the "_ip" object in the interactive prompt.
IPipe extension
The IPipe extension provides a handy way to browse and manipulate tabular data, e.g. groups of files or environment variables. For now, it's most usable in Linux (due to a curses-based browser) but can be used effectively on Windows as well. See wiki:UsingIPipe. The extension was contributed by Walter Doerwald, now a part of the IPython team.
Hardened persistence
Persistence of data now uses "pickleshare", a shelve-like module that allows concurrent access to the central ipython database by multiple ipython instances. This makes the persistence functionality (%store, %bookmark etc.) much more robust and predictable. Now also aliases can be %store'd for future sessions ("alias d ls -F; %store d"). The persistence layer can be also be easily used for own extension-specific persistence through dictionary-like syntax.
Simpler output capture
Instead of the previous %sc and %sx magics, system command output can now be captured with files = !ls /usr/share syntax. The same applies for return values of magic commands, alias_list = %alias works.
Magic improvements
New magic functions: %timeit (contributed by Torsten Marek), %upgrade (used after upgrading to a new ipython version to sync config files), %quickref (get a very brief ipython quick reference), %cpaste (paste python code safely without concern for autoindentation), %clip (in win32clip.py extension, contributed by Rod Holland), %clear (flush In and Out cache and all defined arrays).
Changes and fixes for existing magic functions, including a "raw" mode (-r) for %edit, %macro, %history, %save to see "%ls" instead of '_ip.magic("%ls ")' in the input history.
Deployment and command line improvements
First and foremost, IPython is now completely usable with international keyboards on Windows, thanks to the new pyreadline, a fork of the old "Gary's readline" maintained at the ipython repository by Joergen Stenarson. See http://projects.scipy.org/ipython/ipython/wiki/PyReadline/Intro for more information.
IPython is now a well behaving egg/setuptools citizen, meaning that it can be installed through easy_install. Use easy_install ipython==dev to install the latest SVN snapshot even without having Subversion installed.
Unit tests. IPython commands and directives can now be unit tested, see the 'test' directory in source distribution.
Batch files. If the file ends with .ipy, you can launch it by "ipython myfile.ipy" and all the commands are parsed like they were executed directly in the command line (i.e. they can contain %magic's and other special ipython directives, which was not the case previously).
Runner for scripting interactive apps
New pexpect-based irunner module, to run scripts and produce all the prompts as if they had been typed one by one. This lets you reproduce a complete interactive session from a file, which can be very useful when producing documentation, for example. The module provides default runners for ipython, plain python and SAGE (http://sage.scipy.org). Users can subclass the base runner to produce new ones for any interactive system whose prompts are predictable (such as gnuplot, a system shell, etc.).
Other enhancements
- New option to log 'raw' input into IPython's logs. The logs will then be valid .ipy batch scripts just as you typed them, instead of containing the converted python source.
- Fixes and improvements to (X)Emacs support. PDB auto-tracking is back (it had broken in 0.7.1, and auto-indent now works inside emacs ipython buffers. You will need to update your copy of ipython.el, which you can get from the doc/ directory. A copy is here, for convenience.
- The ipapi system offers a new to_user_ns() method in the IPython object, to inject variables from a running script directly into the user's namespace. This lets you have internal variables from a script visible interactively for further manipulation after %running it.
- Thanks to Will Maier, IPython is now officially part of OpenBSD ports.
- A number of threading deadlock fixes. This is of particular interest to matplotlib users.
- Compatibility updates with current Gnuplot.py.
- We now are (finally!) starting to have a unit test system for ipython.
- Various other small fixes and features. See the full ChangeLog for details.
