Reinteract 0.5.0

Reinteract notebooks - cross platform

People who have been reading my blog for a while may remember Reinteract. I haven’t written anything about it here for a while, but I’ve still been working on it; usually in a spurts of a few weeks of evening hacking at a time. I’m going to be talking about Reinteract at Pycon this weekend, which inspired me to go ahead and finish up something worth calling a release. Reinteract 0.5.0: Source, installers for Windows and OS X.

One big change over the last year is the notebook user interface. Any decent size project is going to have multiple worksheets along with the Python libraries and data files that they use. The Reinteract main window now represents a notebook – an entire project – instead of a single worksheet.

Another major effort was porting Reinteract to Windows and OS X. Since Python and GTK+ already worked on these platforms, it was mostly a question of putting together existing pieces. But there was quite a bit of work to get things installed properly, and to create slick installers that combine Reinteract with the libraries and Python modules it depends upon. On OS X, I also wrote some native code to get a proper global menu.

With the new version, the work of computing a Reinteract worksheet occurs in a separate thread; this allows the user interface to stay responsive during long running operations. And allows you to interrupt running operations, which is a very handy thing to have if you accidentally write an infinite loop, or start some calculation that’s going to take a year to finish.

And of course, there are lots of bug fixes and small features as well. I’ve had useful suggestions, bug reports, and patches from a great number of people. I’d like to thank Kai Willadsen and Jon Kuhn in particular for their active contributions. Among other things, Kai recently landed a change that makes the replot module considerably more useful: instead of being restricted to a single plot command, you can use all the methods of the matplotlib Axes object.

11 Comments

  1. Posted March 26, 2009 at 4:24 pm | Permalink

    I think this seems like a really nice program. How tied is it to the python interpreter? I would like to use something similar for GNU Octave (www.octave.org).

  2. Tomasz Melcer
    Posted March 26, 2009 at 4:32 pm | Permalink

    You rock 🙂

    This is what I was waiting for… and, if you’re interested, you could try to get someone working on it too during google’s summer of code. Talk to Arc at #gsoc-python at freenode.

  3. Posted March 26, 2009 at 6:42 pm | Permalink

    Very cool, I was just pimping this project to a friend the other day and was disappointed that it looked like it had stalled out. Downloading now…

  4. Owen
    Posted March 26, 2009 at 11:05 pm | Permalink

    Søren – while certainly some of the code and ideas would apply to other backend languages, there’s a lot of extra simplicity when you stick to one language. And I’m more interested in doing a really good job for Python than trying to cover a huge range of languages like Sage does.

    Tomasz – Hmm. There’s definitely some good soc-scale projects possible.

  5. Posted March 27, 2009 at 11:10 am | Permalink

    Great! As much as I use the interpreter this will be a great help. I love being able to go back and change the definition of something to see how execution changes. For me this is the missing link for the Python interpreter 🙂

    I think it’s a great tool to write code by experimenting, especially for people who may be learning Python.

    My one feature request would be the ability to redirect output to another pane instead of having it displayed inline.

    Thanks!

  6. Nick
    Posted March 27, 2009 at 3:20 pm | Permalink

    I haven’t tried reinteract since your first release/blog post about it. I just tried this new version, and I love it. It’s great to see how well it’s developing on its potential, and I’d even begin to describe it as getting polished :).

    I hope that some day all python editors include such a repeatable interactive interpreter. Imagine if you had a second pane with a .py file, and the rectangles automatically changed to yellow when you edited any part of the .py which would affect the experiments/tests you had in your reinteract pane. I know that would match how I work very well. In the mean time, being able to work and re-work defs and classes inside reinteract and see what effect that has on the following statements will be very nice, and I can always copy/paste when done.

  7. Josef Pktd
    Posted April 22, 2009 at 7:53 pm | Permalink

    I liked it and wanted to write some doctests with it until I didn’t get the results that I expected.

    try this in reinteract versus python

    d=[5, 1]
    e=d
    d,e
    d[0]=6
    d,e

    • Owen
      Posted June 5, 2010 at 11:25 am | Permalink

      Sometimes reinteract is best considered a language that integrates well with Python and is a lot like Python but isn’t exactly Python. Some compromises in terms of 100% compatibility with Python have to be made to enable efficiently modifying the end of a worksheet without always re-executing it from the start.

  8. daspostloch
    Posted July 8, 2009 at 11:36 am | Permalink

    Owen, reinteract is really sweet and helps me a lot. Thanks for this!

  9. icke
    Posted April 10, 2010 at 6:28 pm | Permalink

    hey josef,

    strange finding.
    found another one:
    if you set usetex:True in matplotlibrc you wont get axes in reinteract.
    maybe you can fix that @ owen.

    apart from that, I really like the idea…
    greetings from berlin
    martin


%d bloggers like this: