IPython 0.6.13 is out.

Fernando Perez Fernando.Perez at colorado.edu
Fri Apr 15 00:39:22 CEST 2005

Hi all,

I'm glad to announce the release of IPython 0.6.13.

IPython's homepage is at:


and downloads are at:


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

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

* 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:


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'

In [38]: cd $mydir

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.



More information about the Python-announce-list mailing list