Hi all,
I'm glad to announce the release of IPython 0.6.13.
IPython's homepage is at:
http://ipython.scipy.org
and downloads are at:
http://ipython.scipy.org/dist
I've provided RPMs (for Python 2.3 and 2.4, built under Fedora Core 3), plus source downloads (.tar.gz). Fedora users should note that IPython is now officially part of the Extras repository, so they can get the update from there as well (though it may lag by a few days).
There is also a native win32 installer which should work correctly for both Python 2.3 and 2.4.
Debian, Fink and BSD packages for this version should be coming soon, as the respective maintainers (many thanks to Jack Moffit, Andrea Riciputi and Dryice Liu) have the time to follow their packaging procedures.
Many thanks to Enthought for their continued hosting support for IPython, and to all the users who contributed ideas, fixes and reports. In particular, thanks to Frederic Mantegazza for extensive discussions on embedding features which make ipython suitable for use in the kind of complex environments I had always wanted it to be used.
Release notes -------------
*** WARNING to pysh users *** A backwards-incompatible change has been made.
1. You must update your pysh profile (~/.ipython/ipythonrc-pysh):
a) Add to it the line:
import_all IPython.Extensions.InterpreterExec
b) Delete the line
execfile pysh.py
2. You must also delete from ~/.ipython/ the file pysh.py.
*** END pysh warning.
As always, the NEWS file can be found at http://ipython.scipy.org/NEWS, and the full ChangeLog at http://ipython.scipy.org/ChangeLog. The highlights of this release follow.
* Improved variable capture from system commands. The %sc and %sx magics (and hence the !!syntax in Pysh) now capture to special objects which, while looking like strings/lists, provide automatic conversion between the various modes:
In [12]: sc a=ls s*py
In [13]: a # the returned object looks like a plain string Out[13]: 'sanner.py\nscopes.py\nsplot.py\nstrings.py'
In [14]: a.s # but you can see it as a string with pure whitespace Out[14]: 'sanner.py scopes.py splot.py strings.py'
In [15]: a.l # as a list Out[15]: ['sanner.py', 'scopes.py', 'splot.py', 'strings.py']
In [16]: a.n # or as a string with newlines Out[16]: 'sanner.py\nscopes.py\nsplot.py\nstrings.py'
If you capture the result split as a list, the returned object exhibits the exact same interface with .s, .l and .n attributes:
In [18]: sc -l b=ls s*py
In [19]: b Out[19]: ['sanner.py', 'scopes.py', 'splot.py', 'strings.py']
In [20]: b.s Out[20]: 'sanner.py scopes.py splot.py strings.py'
In [21]: b.l Out[21]: ['sanner.py', 'scopes.py', 'splot.py', 'strings.py']
In [22]: b.n Out[22]: 'sanner.py\nscopes.py\nsplot.py\nstrings.py'
Try the above and use a? and b? to see the full docstrings of these special objects, which can be extremely convenient when manipulating system commands output.
* By default, IPython now binds the up/down arrow keys to search only in the history which matches your input so far. If you are an old user your ipythonrc file is NOT automatically updated, but you can get this effect by putting the following in it:
readline_parse_and_bind "\e[A": history-search-backward readline_parse_and_bind "\e[B": history-search-forward
* Many changes and improvements to make it easier to embed ipython into complex interactive environments. These changes were motivated by the needs of Frederic Mantegazza, and more details can be found on the -dev list archives and at this wiki page specially created for this discussion:
http://www.scipy.org/wikis/featurerequests/IPython
In particular, ipython now exposes the ability to set custom exception handlers, docstring extraction methods, custom tab-completion routines, and more. That wiki page also serves as documentation (with code examples) for some of these more complex features.
IPython also now exposes its own input execution routine (the runlines() method). You can thus feed this method snippets of input (even multiline) with magic syntax and all other special extensions, which it will process as if they had been typed at the command line.
* Multi-line specials are now active by default. This means that you can use special syntax, like !cmd, in python multi-line input. A silly example:
In [26]: for i in range(3): ....: !ls $i ....: ls: 0: No such file or directory ls: 1: No such file or directory ls: 2: No such file or directory
* Magics can also be called in multi-line input, and python variables can be expanded in magics just like in system calls or aliases:
In [36]: mydir='/usr/include/atlas'
In [37]: cd mydir [Errno 2] No such file or directory: 'mydir' /home/fperez
In [38]: cd $mydir /usr/include/atlas
This brings consistency to the various special subsystems in ipython: they ALL expand python expressions with the same rules (those of Itpl linked to above), and they can all be used in multiline input.
* Dynamic prompt strings. Now, the following ${foo()+x+bar.baz()} is a valid prompt string, where foo, x and bar will be evaluated at runtime from your interactive namespace. Arbitrary Python expressions, according to the Itpl design, can be thus used (see http://www.python.org/peps/pep-0215.html for details on Itpl).
* Fixes for (X)Emacs prompt support (hung file queue when executing files from an emacs buffer).
* Fixes (thanks to John Hunter) for tab-completion in the face of broken objects on which dir() returns anything other than a list of pure strings (such as the ITK library).
* Other small fixes and cleanups.
Enjoy, and as usual please report any problems.
Regards,
Fernando. -- http://mail.python.org/mailman/listinfo/python-announce-list
Support the Python Software Foundation: http://www.python.org/psf/donations.html