User Stories

The implemented ones should perhaps be matched with test cases. Dramatis Personae:

  • HM = Hans Meine
  • RK = Robert Kern
  • TM = Torsten Marek

I am planning to analyse a multidimensional data structure. I am writing a loop, collecting data but then realize that I need to initialize a variable before the loop. In ipython, I can only cancel the current edit, type the initialization and fetch all lines from the history (or retype them) one-by-one. What I'd like to be able to do is to just press cursor up, insert a line, and continue further down, then execute the whole loop.

HM

I successfully analyzed some data derived from images. Now I want to change some preprocessing parameters and re-run the analysis. Again, I want to insert / change some code at the beginning and re-execute several blocks of commands that use the now changed variables.

HM

It would be useful if some sort of dependency graph could be generated. E.g. when I change a "cell" (piece of code) which (re-)assigns variables, all code fragments (cells) that depend on these results (use that variable) should be marked as "dirty". Automatic execution of these cells should not be the goal, since that could be unwanted by the user, need a long time, and/or destroy/overwrite precious results.

HM

For image processing purposes, I want to be able to have image objects that result from python expressions shown as embedded images in the notebook.

HM

Similarly, I'd like to have graphs (e.g. from Gnuplot.py) be embedded in the notebook.

HM

A friend of mine wants to be able to write longer Mathematic-like notebooks, and needs proper namespacing for chapters/sections, so that variable names can be re-used.

HM

I want a complete and accurate log of everything I typed in and everything that was output during a session.

RK

I want to "compact" the log to only include the input/output cells that are specifically included in the formatted notebook.

RK

I want to output rendered fragments of LaTeX, HTML and reST that I can include in larger documents.

RK

I want to output reasonable, whole rendered documents in LaTeX, HTML and reST.

RK

When I issue the ipython magical commands %run, %edit and other similar operations, I want the text of the cell to be replaced by the code that is actually executed by those commands.

RK

I want to render matplotlib and Chaco plots in a separate window and explicitly embed the current figure into the notebook.

RK

I want to embed a PIL image from my session.

RK

I want to optionally be able to run the interactive interpreter in a separate process or even over a network.

RK

I want to be able to configure the styling of the rich text and the syntax-highlighted Python code for all appropriate backends.

RK

I want to embed MathML formulae.

R "I can dream, can't I?" K

I want to embed the notebook component in other applications, notably Envisage.

RK

I want proper Unicode handling.

RK

I want to embed tables and edit them (probably in a separate dialog) in a grid widget.

RK

I want to open a multi-line text editor in-place to type in chunks of code (like functions) and them execute them on the interactive console. It should also be possible to use a syntax like the existing "macro" command in IPython to fill the text editor. (This is more or less what HM also suggested, only with the text editor added).

TM

It would be nice to be able to integrate self-written widgets into notebooks for demo purposes, as if they were pictures.

TM

Therefore, I want to have a plugin-based interface to be able to write embeddable "widgets" easily.

TM

I want to "pipe/redirect" output of a function into an in-place pretty-printer widget that handles lists, dicts etc.

TM