[ANN] IPython 0.7.0
fperez.net at gmail.com
Tue Jan 10 03:57:22 EST 2006
After a long hiatus (0.6.15 was out in June of 2005), I'm glad to announce
the release of IPython 0.7.0, with lots of new features.
WHAT is IPython?
1. 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. 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. A flexible framework which can be used as the base environment for other
systems with Python as the underlying language.
4. A shell for interactive usage of threaded graphical toolkits. IPython has
support for interactive, non-blocking control of GTK, Qt and WX applications
via special threading flags. The normal Python shell can only do this for
WHERE to get it?
IPython's homepage is at:
and downloads are at:
- source downloads (.tar.gz)
- RPMs (for Python 2.3 and 2.4, built under Fedora Core 3).
- Python Eggs (http://peak.telecommunity.com/DevCenter/PythonEggs).
- a native win32 installer for both Python 2.3 and 2.4.
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).
Debian, Fink and BSD packages for this version should be coming soon, as the
respective maintainers (many thanks to Jack Moffit, Norbert Tretkowski,
Andrea Riciputi and Dryice Liu) have the time to follow their packaging
A lot of new features have gone into this release, the bulk of which were
driven by user feedback and requests, and more importantly by patches from
IPython users. I greatly appreciate these contributions, and hope they will
continue in the future. In particular, thanks to Vivian de Smedt, Jorgen
Stenarsson and Ville Vainio, who contributed large patches with much of the
new significant functionality. I've tried to provide credit in the notes
below and the project's ChangeLog, please let me know if I've accidentally
Many thanks to Enthought for their continued hosting support for IPython.
*** WARNING: compatibility changes ***
- IPython now requires at least Python 2.3. If you can't upgrade from
2.2, you'll need to continue using IPython 0.6.15.
*** End 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.
- Wildcard patterns in searches, supported by the %psearch magic, as
well as the '?' operator. Type psearch? for the full details. Extremely
useful, thanks to Jörgen Stenarson.
- Major improvements to the pdb mode. It now has tab-completion,
syntax highlighting and better stack handling. Thanks to Vivian De Smedt
for this work (double-points given that pdb has a well-deserved reputation
for being very unpleasant to work with).
- Support for input with empty lines. If you have auto-indent on,
this means that you need to either hit enter _twice_, or add/remove a space
to your last blank line, to indicate you're done entering input. These
changes also allow us to provide copy/paste of code with blank lines.
- Support for pasting multiline input even with autoindent on. The
code will look wrong on screen, but it will be stored and executed
- TAB on an otherwise empty line actually inserts a tab. Convenient
for indenting (for those who don't use autoindent).
- Significant improvements for all multithreaded versions of ipython.
Now, if your threaded code raises exceptions, instead of seeing a crash
report, a normal (colored, verbose, etc.) exception is printed.
Additionally, if you have pdb on, it will activate in your threaded code.
Very nice for interactively debugging GUI programs.
- Many fixes to embedded ipython, including proper handling of globals
and tab completion.
- New -t and -o options to %logstart, to respectively put timestamps
in your logs, and to also log all output (tagged as #[Out]#). The default
log name is now ipython_log.py, to better reflect that logs remain valid
- Lightweight persistence mechanism via %store. IPython had always
had %save, to write out a group of input lines directly to a file. Now,
its %store companion stores persistently (associated with your profile, and
auto-loaded at startup) not just source, but any python variable which can
be pickled. Thanks to Matt Wilkie for the request, and ville for the
- Macros (created with %macro) can now be edited with %edit (just say
'%edit macroname'). This, coupled with the ability to store them
persistently, makes the macro system much more useful.
- New guarantee that, if you disable autocalling, ipython will never
call getattr() on your objects. This solves problems with code that has
side-effects on attribute access. Note that TAB-completion inevitably does
call getattr(), so not all forms of side-effects can be eliminated.
- Unicode support for prompts.
- Improvements to path handling under win32. Thanks to Ville and
Jorgen for the patches.
- Improvements to pager under win32. Contributed by Alexander
- Demo class for interactive demos using ipython.
- %pycat magic for showing syntax-highlighted python sources
- support for download_url in setup.py, so PyPI (and setuptools) work
transparently with ipython.
- New exit/quit magics to exit, conditionally asking (%Exit/%Quit
- Automatically reopen the editor if your file has a syntax error in
it (when using the %edit system).
- New notation N-M for indicating the range of lines N,...,M
both endpoints), in magic commands such as %macro, %save and %edit.
- The IPython instance has a new attribute, .meta, which is an empty
namespace (an instance of 'class Bunch:pass'). This is meant to provide
extension writers with a safe namespace to store metadata of any kind,
without the risk of name clashes with IPython's internals.
- Added tab-completion support for objects with Traits, a
sophisticated type definition system for Python:
- Several patches related to Emacs support. Thanks to Alex Schmolck
and John Barnard.
- New 'smart' autocall mode, which avoids autocalling if a function
with no arguments is the input. The old 'full' mode can be obtained by
setting the autocall parameter in the ipythonrc to 2, or via the %autocall
- A large amount of internal reorganization and cleanup, to allow the
code to be more readily moved over to the chainsaw branch (see below).
- Many other small fixes and enhancements. The changelog has full
Enjoy, and as usual please report any problems on the IPython lists.
More information about the Python-list