IPython 0.7.0 is out.
Fernando.Perez at Colorado.EDU
Tue Jan 10 09:54:41 CET 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 correctly
- 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
- 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 Python
- 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 patches.
- 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 Belchenko.
- 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 don't)
- 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 (including
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: http://code.enthought.com/traits.
- Several patches related to Emacs support. Thanks to Alex Schmolck and
- 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 magic.
- 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 details.
Enjoy, and as usual please report any problems on the IPython lists.
More information about the Python-announce-list