[IPython-dev] IPython 0.7.0.rc1, and development...

Fernando Perez Fernando.Perez at colorado.edu
Thu Dec 29 22:30:47 EST 2005

Hi everyone,

in addition to wishing all of you a Happy New Year, I'd like to update you 
with some development news, and a request for testing.

As you may have noticed, in recent days I've been trying to catch up with my 
gigantic backlog.  By way of apology, a large home remodeling effort has taken 
far, far more time than I initially estimated, which is why for most of this 
semester I hardly did anything with ipython.  While we're by no means 
finished, at least I now have a normal desk, a computer to work on, and some 
semblance of a (half) normal place.  So I am doing my best to catch up with you.

Status report

I went through all of my accumulated ipython-related mail, as well as the bug 
tracker, and took care of every single bug report, feature request and patch 
submission.  The actual list of improvements is quite significant, to a large 
extent thanks to all those of you who sent in ideas backed with patches. 
Many, many thanks.

Here's a very brief list of highlights of the new things since the last 
official release (0.6.15):

   - Wildcard patterns in searches, supported by the %psearch magic. 
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 
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 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.

   - 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).

   - 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.

All of these changes are significant enough, that the new release will be 
numbered 0.7.0.  I would greatly appreciate testing of the release candidate I 
just uploaded here:


With all these changes, I'm sure I've introduced some problems.  Please let me 
know (on-list) so I can fix them asap.

Next: playing with the chainsaw

Now, as I've mentioned before, the long-term development branch for ipython is 


Brian Granger has been busy at work here, building from the ground up the 
infrastructure for what will be IPython 1.0.  Instead of trying to refactor 
the current mess and stalling him while I work, we've been working on a good 
design, and we will port over all the good pieces from the current codebase. 
Much of my recent cleanup work has gone in that direction, so in a sense 0.7.0 
is the beginning of that branch, though I don't expect it to be fully 
functional for a while yet.  In the meantime, I'll continue to accept patches 
for trunk, as well as fixing bugs.

I have very high expectations for what we'll be able to do with this new code. 
  These two presentations highlight some of what we have in mind:


All the work done this summer by Robert, Tzanko and Toni will be used by this 
new infrastructure, as well as providing a system to do a number of new and 
interesting things.  Anyone willing to work on this (experience with parallel 
computing, twisted, xml or wxpython a bonus) is welcome to join in.

So I think that the future looks bright for ipython: the current system has 
new and important functionality, we're making good progress on the foundations 
for the new one, and I'm coding again :)  Many thanks to all who have helped 
so far, and Happy New Year to everybody!



More information about the IPython-dev mailing list