Jupyjet
Jupyjet is a IPython notebook extension to facilitate:
- Literate programming
- Separate a big notebook into several smaller notebooks / modules.
Practically speaking, for each notebook a python file is dynamically created:
ie - it generate python modules based of notebook content.
Usage
3 magics commands are exposed: %jet_beg
, %jet
and %jet_end
-
jet_beg: save all the content of the current cell and place it at the top of the file.
It is supposed to contains imports / global variables.
NB: Only one init is allowed and it must be the last line of the cell. -
jet decl1 decl2 ...: save or update the declaration in the file.
Classes, function and decorators are supported.
Comments will be stripped.
The file content is updated everytime the magic runs. -
jet_end: save all the content of the current cell and place it at the bottom of the file.
It is supposed to contain for example a ifmain block.
NB: Only one init is allowed and it must be the last line of the cell.
Example
my_super_notebook.ipynb
Cell 1 - We declare here the header of the file
import numpy as np
pi = 3.14
%jet_beg
And save it as raw content
Cell 2 - We create a few functions
def circle_perim(r):
return 2 * pi * r
def circle_area(r):
return pi * r**2
%jet circle_perm circle_area
And save them
Cell 3 - in the context of the notebook, we can run some experiement
We can then use these functions normally
print circle_perim(2.)
print circle_area(2.2)
The results won't be saved into the file
The coresponding generated file is:
my_super_notebook.py
import numpy as np
pi = 3.14
# --- JET BEG --- #
def circle_perim():
return 2 * pi * r
def circle_area():
return pi * r ** 2
# --- JET END --- #
So this python generated module can be called from other notebooks.
NB: comments are not saved in the genrated files.
Install
Jupyjet is available on pip and compatible with both python2 and python3
pip install jupyjet
pip3 install jupyjet
Enable the extension
Here is a small guide to activate the extension.
1. Create a jupyter profile
$ ipython profile create
It will generate a default profile file at: ~/.ipython/profile_default/ipython_config.py
.
line-profiler).
2. Register Jupyjet as an extension (and other cool ones likeTo do so add the following lines.
c.TerminalIPythonApp.extensions = [
'jupyjet',
'line_profiler',
]
c.InteractiveShellApp.extensions = [
'jupyjet',
'line_profiler',
]