[IPython-dev] IPython 0.6.13 is out.

Fernando Perez Fernando.Perez at colorado.edu
Thu Apr 14 17:11:57 CDT 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 IPython-dev mailing list