diff --git a/examples/Notebook/Converting Notebooks With nbconvert.ipynb b/examples/Notebook/Converting Notebooks With nbconvert.ipynb new file mode 100644 index 0000000..b10a5ef --- /dev/null +++ b/examples/Notebook/Converting Notebooks With nbconvert.ipynb @@ -0,0 +1,496 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "NbConvert" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Command line usage" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`NbConvert` is the library, and the command line tool that allow to convert from notebook to other formats.\n", + "It is a technological preview in 1.0 but is already usable and highly configurable.\n", + "It ships already with many default available formats : `html`, `latex`, `markdown`, `python`, `rst` and `slides`\n", + "which are fully base on Jinja templating engine, so writing a converter for your custom format or tweeking the existing \n", + "one should be extra simple." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can invoke nbconvert by doing\n", + "\n", + "```bash\n", + "$ ipython nbconvert \n", + "```\n", + "\n", + "Call `ipython nbconvert` with the `--help` flag or no aruments to get basic help on how to use it.\n", + "For more information about configuration use the `--help-all` flag" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Basic export" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will be converting `Custom Display Logic.ipynb`. \n", + "Be sure to have runed some of the cells in it to have output otherwise you will only see input in nbconvert.\n", + "Nbconvert **do not execute the code** in the notebook files, it only converts what is inside." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%bash\n", + "ipython nbconvert '04 - Custom Display Logic.ipynb'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stderr", + "text": [ + "[NbConvertApp] Using existing profile dir: u'/Users/bussonniermatthias/.ipython/profile_default'\n", + "[NbConvertApp] Converting notebook 04 - Custom Display Logic.ipynb to html\n", + "[NbConvertApp] Support files will be in 04 - Custom Display Logic_files/\n", + "[NbConvertApp] Loaded template html_full.tpl\n", + "[NbConvertApp] Writing 221081 bytes to 04 - Custom Display Logic.html\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Html is the default value (that can be configured) , so the verbose form would be " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%bash\n", + "ipython nbconvert --to=html '04 - Custom Display Logic.ipynb'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stderr", + "text": [ + "[NbConvertApp] Using existing profile dir: u'/Users/bussonniermatthias/.ipython/profile_default'\n", + "[NbConvertApp] Converting notebook 04 - Custom Display Logic.ipynb to html\n", + "[NbConvertApp] Support files will be in 04 - Custom Display Logic_files/\n", + "[NbConvertApp] Loaded template html_full.tpl\n", + "[NbConvertApp] Writing 221081 bytes to 04 - Custom Display Logic.html\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also convert to latex, which will take care of extractin the embeded base64 encoded png, or the svg and call inkscape to convert those svg to pdf if necessary :" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%bash\n", + "ipython nbconvert --to=latex '04 - Custom Display Logic.ipynb'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stderr", + "text": [ + "[NbConvertApp] Using existing profile dir: u'/Users/bussonniermatthias/.ipython/profile_default'\n", + "[NbConvertApp] Converting notebook 04 - Custom Display Logic.ipynb to latex\n", + "[NbConvertApp] Support files will be in 04 - Custom Display Logic_files/\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26432): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26472): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26512): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26552): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26592): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "[NbConvertApp] Loaded template latex_article.tplx\n", + "[NbConvertApp] Writing 41196 bytes to 04 - Custom Display Logic.tex\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should just have to compile the generated `.tex` file. If you get the required packages installed, if should compile out of the box.\n", + "\n", + "For convenience we allow to run extra action after the conversion has been done, in particular for `latex` we have a `pdf` post-processor. \n", + "You can define the postprocessor tu run with the `--post` flag." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%bash\n", + "ipython nbconvert --to=latex '04 - Custom Display Logic.ipynb' --post=pdf" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stderr", + "text": [ + "[NbConvertApp] Using existing profile dir: u'/Users/bussonniermatthias/.ipython/profile_default'\n", + "[NbConvertApp] Converting notebook 04 - Custom Display Logic.ipynb to latex\n", + "[NbConvertApp] Support files will be in 04 - Custom Display Logic_files/\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26658): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26698): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26738): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26778): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "Setting Language: .UTF-8\n", + "\n", + "(process:26818): Gtk-WARNING **: Locale not supported by C library.\n", + "\tUsing the fallback 'C' locale.\n", + "[NbConvertApp] Loaded template latex_article.tplx\n", + "[NbConvertApp] Writing 41196 bytes to 04 - Custom Display Logic.tex\n", + "[NbConvertApp] Building PDF: ['pdflatex', '04 - Custom Display Logic.tex']\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Have a look at `04 - Custom Display Logic.pdf`, toward the end, where we compared `display()` vs `display_html()` and returning the object.\n", + "See how the cell where we use `display_html` was not able to display the circle, whereas the two other ones were able to select one of the oher representation they know how to display." + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Customizing template" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "let's look at the first 20 lines of the `python` exporter" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "pyfile = !ipython nbconvert --to python '04 - Custom Display Logic.ipynb' --stdout\n", + "for l in pyfile[20:40]:\n", + " print l" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "# 1. Implementing special display methods such as `_repr_html_`.\n", + "# 2. Registering a display function for a particular type.\n", + "# \n", + "# In this Notebook we show how both approaches work.\n", + "\n", + "# Before we get started, we will import the various display functions for displaying the different formats we will create.\n", + "\n", + "# In[54]:\n", + "\n", + "from IPython.display import display\n", + "from IPython.display import (\n", + " display_html, display_jpeg, display_png,\n", + " display_javascript, display_svg, display_latex\n", + ")\n", + "\n", + "\n", + "### Implementing special display methods\n", + "\n", + "# The main idea of the first approach is that you have to implement special display methods, one for each representation you want to use. Here is a list of the names of the special methods and the values they must return:\n", + "# \n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that the non-code cell are exported to the file. To have a cleaner script, we will export only the code contained in the code cells.\n", + "\n", + "To do so, we will inherit the python template, and overwrite the markdown blocks to be empty." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%writefile simplepython.tpl\n", + "{% extends 'python.tpl'%}\n", + "\n", + "{% block markdowncell -%}\n", + "{% endblock markdowncell %}\n", + "\n", + "## we also want to get rig of header cell\n", + "{% block headingcell -%}\n", + "{% endblock headingcell %}\n", + "\n", + "## and let's change the appearance of input prompt\n", + "{% block in_prompt %}\n", + "# This was input cell with prompt number : {{ cell.prompt_number if cell.prompt_number else ' ' }}\n", + "{%- endblock in_prompt %}" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Overwriting simplepython.tpl\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "pyfile = !ipython nbconvert --to python '04 - Custom Display Logic.ipynb' --stdout --template=simplepython.tpl\n", + "\n", + "for l in pyfile[4:40]:\n", + " print l\n", + "print '...'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "# This was input cell with prompt number : 54\n", + "from IPython.display import display\n", + "from IPython.display import (\n", + " display_html, display_jpeg, display_png,\n", + " display_javascript, display_svg, display_latex\n", + ")\n", + "\n", + "\n", + "# This was input cell with prompt number : 55\n", + "get_ipython().magic(u'load soln/mycircle.py')\n", + "\n", + "\n", + "# This was input cell with prompt number : 56\n", + "class MyCircle(object):\n", + " \n", + " def _repr_html_(self):\n", + " return \"○ (html)\"\n", + "\n", + " def _repr_svg_(self):\n", + " return \"\"\"\n", + " \n", + " \"\"\"\n", + " \n", + " def _repr_latex_(self):\n", + " return r\"$\\bigcirc \\LaTeX$\"\n", + "\n", + " def _repr_javascript_(self):\n", + " return \"alert('I am a circle!');\"\n", + "\n", + "\n", + "# This was input cell with prompt number : 57\n", + "c = MyCircle()\n", + "\n", + "\n", + "# This was input cell with prompt number : 58\n", + "...\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I'll let you read Jinja manual for the exact syntax of the template." + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Template that use cells metadata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notebook fileformat support attaching arbitrary JSON metadata to each cell of a notebook. In this part we will use those metadata." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First you need to choose another notebook you want to convert to html, and tag some of the cell with metadata.\n", + "You can see the file `soln/celldiff.js` for a solution on how to tag, or follow the javascript tutorial to see how to do that. Use what we have written there to tag cells of some notebooks to `Easy`|`Medium`|`Hard`|``, and convert this notebook using your template." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "you might need the following : \n", + "```\n", + "{% extends 'html_full.tpl'%}\n", + "{% block any_cell %}\n", + "{{ super() }}\n", + "
\n", + "
\n", + "```\n", + "\n", + "`metadata` might not exist, be sure to :\n", + "\n", + "`cell['metadata'].get('example',{}).get('difficulty','')`\n", + "\n", + "tip: use `%%writefile` to edit the template in the notebook :-)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%bash\n", + "# ipython nbconvert --to html --template=" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 8 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%loadpy soln/coloreddiff.tpl" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# ipython nbconvert --to html '04 - Custom Display Logic.ipynb' --template=soln/coloreddiff.tpl" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Get rid of all command line flags." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As of all of IPython nbconvert can be configured using profiles and passing the `--profile` flag. \n", + "Moreover if a `config.py` file exist in current working directory nbconvert will use that, or read the config file you give to it with the `--config=` flag. \n", + "\n", + "In the end, if you are often running nbconvert on the sam project, `$ ipython nbconvert` should be enough to get you up and ready." + ] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/examples/Notebook/Index.ipynb b/examples/Notebook/Index.ipynb index c231f17..edbbfdc 100644 --- a/examples/Notebook/Index.ipynb +++ b/examples/Notebook/Index.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:33a14f36e4dad22b2fc23c59ce0e0ed96719007a09f616f240ed5f665e1b871f" + "signature": "sha256:a9f4b605a51f91e09f8e031235a0dd1b49a7056a2fecfec4b7f5bc6467f1e760" }, "nbformat": 3, "nbformat_minor": 0, @@ -58,7 +58,9 @@ "* [Basic Output](Basic Output.ipynb)\n", "* [Working With Markdown Cells](Working With Markdown Cells.ipynb)\n", "* [JavaScript Notebook Extensions](JavaScript Notebook Extensions.ipynb)\n", - "* [Notebook Security](Notebook Security.ipynb)" + "* [Notebook Security](Notebook Security.ipynb)\n", + "* [Converting Notebooks With nbconvert](Converting Notebooks With nbconvert.ipynb)\n", + "* [Using nbconvert as a Library](Using nbconvert as a Library.ipynb)" ] }, { diff --git a/examples/Notebook/Working With Code Cells.ipynb b/examples/Notebook/Running Code.ipynb similarity index 100% rename from examples/Notebook/Working With Code Cells.ipynb rename to examples/Notebook/Running Code.ipynb diff --git a/examples/Notebook/Using nbconvert as a Library.ipynb b/examples/Notebook/Using nbconvert as a Library.ipynb new file mode 100644 index 0000000..6c1bfd3 --- /dev/null +++ b/examples/Notebook/Using nbconvert as a Library.ipynb @@ -0,0 +1,1054 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "NbConvert, Python library" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this Notebook, I will introduce you to the programatic API of nbconvert to show you how to use it in various context. \n", + "\n", + "For this I will use one of [@jakevdp](https://github.com/jakevdp) great [blog post](http://jakevdp.github.io/blog/2013/04/15/code-golf-in-python-sudoku/).\n", + "I've explicitely chosen a post with no javascript tricks as Jake seem to be found of right now, for the reason that the becommings of embeding javascript in nbviewer, which is based on nbconvert is not fully decided yet. \n", + "\n", + "\n", + "This will not focus on using the command line tool to convert file. The attentive reader will point-out that no data are read from, or written to disk during the conversion process. Indeed, nbconvert as been though as much as\n", + "possible to avoid IO operation and work as well in a database, or web-based environement." + ] + }, + { + "cell_type": "heading", + "level": 4, + "metadata": {}, + "source": [ + "Quick overview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
 Warning, Do use 1.0 or 1.x branch and not master naming have changed.
\n", + "\n", + "
 Warning, NbConvert is a Tech-Preview, API will change within the next 6 month.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Credit, Jonathan Freder (@jdfreder on github)\n", + "\n", + "
\n", + " ![nbca](files/nbconvert_arch.png)\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The main principle of nbconvert is to instanciate a `Exporter` that controle\n", + "a pipeline through which each notebook you want to export with go through." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start by importing what we need from the API, and download @jakevdp's notebook." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import requests\n", + "response = requests.get('http://jakevdp.github.com/downloads/notebooks/XKCD_plots.ipynb')\n", + "response.content[0:60]+'...'" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 1, + "text": [ + "'{\\n \"metadata\": {\\n \"name\": \"XKCD_plots\"\\n },\\n \"nbformat\": 3,\\n...'" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you do not have request install downlad by hand, and read the file as usual." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We read the response into a slightly more convenient format which represent IPython notebook. \n", + "There are not real advantages for now, except some convenient methods, but with time this structure should be able to\n", + "guarantee that the notebook structure is valid. Note also that the in-memory format and on disk format can be slightly different. In particual, on disk, multiline strings might be spitted into list of string to be more version control friendly." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.nbformat import current as nbformat\n", + "jake_notebook = nbformat.reads_json(response.content)\n", + "jake_notebook.worksheets[0].cells[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 2, + "text": [ + "{u'cell_type': u'heading',\n", + " u'level': 1,\n", + " u'metadata': {},\n", + " u'source': u'XKCD plots in Matplotlib'}" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So we have here Jake's notebook in a convenient form, which is mainly a Super-Powered dict and list nested.\n", + "You don't need to worry about the exact structure." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The nbconvert API exposes some basic exporter for common format and default options. We will start\n", + "by using one of them. First we import it, instanciate an instance with most of the default parameters and fed it\n", + "the downloaded notebook. " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import IPython.nbconvert" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 3 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.config import Config\n", + "from IPython.nbconvert import HTMLExporter\n", + "\n", + "## I use `basic` here to have less boilerplate and headers in the HTML.\n", + "## we'll see later how to pass config to exporters.\n", + "exportHtml = HTMLExporter(config=Config({'HTMLExporter':{'default_template':'basic'}}))" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 4 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(body, resources) = exportHtml.from_notebook_node(jake_notebook)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 5 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The exporter returns a tuple containing the body of the converted notebook, here raw HTML, as well as a resources dict.\n", + "The resource dict contains (among many things) the extracted PNG, JPG [...etc] from the notebook when applicable.\n", + "The basic HTML exporter does keep them as embeded base64 into the notebook, but one can do ask the figures to be extracted. Cf advance use. So for now the resource dict **should** be mostly empty, except for 1 key containing some css, and 2 others whose content will be obvious.\n", + "\n", + "Exporter are stateless, you won't be able to extract any usefull information (except their configuration) from them.\n", + "You can directly re-use the instance to convert another notebook. Each exporter expose for convenience a `from_file` and `from_filename` methods if you need." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print resources.keys()\n", + "print resources['metadata']\n", + "print resources['output_extension']\n", + "# print resources['inlining'] # too lng to be shown" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "['inlining', 'output_extension', 'metadata']\n", + "defaultdict(None, {'name': 'Notebook'})\n", + "html\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Part of the body, here the first Heading\n", + "start = body.index('

\n", + "

XKCD plots in Matplotlib

\n", + "
\n", + "\n", + "
\n", + "

This notebook originally appeared as a blog post at `_\n", + "by Jake Vanderplas.\n", + "\n", + " *Update: the matplotlib pull request has been merged! See* `*This\n", + "post* `_\n", + "*for a description of the XKCD functionality now built-in to\n", + "matplotlib!*\n", + "\n", + "One of the problems I've had with typical matplotlib figures is that\n", + "everything in them is so precise, so perfect. For an example of what I\n", + "mean, take a look at this figure:\n", + "In[1]:\n", + ".. code:: python\n", + "\n", + " from IPython.display import Image\n", + " Image('http://jakevdp.github.com/figures/xkcd_version.png')\n", + "\n", + "\n", + "\n", + "\n", + "\n", + ".. image:: output_3_0.png\n", + "\n", + "\n", + "\n", + "Sometimes when showing schematic plots, this is the type of figure I\n", + "want to display. But drawing it by hand is a pain: I'd rather just use\n", + "matplotlib. The problem is, matplotlib is a bit...\n", + "[.....]\n", + "owing schematic plots, this is the type of figure I\n", + "want to display. But drawing it by hand is a pain: I'd rather just use\n", + "matplotlib. The problem is, matplotlib is a bit too precise. Attempting\n", + "to duplicate this figure in matplotlib leads to something like this:\n", + "In[2]:\n", + ".. code:: python\n", + "\n", + " Image('http://jakevdp.github.com/figures/mpl_version.png')\n", + "\n", + "\n", + "\n", + "\n", + "\n", + ".. image:: output_5_0.png\n", + "\n", + "\n", + "\n", + "It just doesn'...\n" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we see that base64 images are not embeded, but we get what look like file name. Actually those are (Configurable) keys to get back the binary data from the resources dict we havent inspected earlier.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So when writing a Rst Plugin for any blogengine, Sphinx or anything else, you will be responsible for writing all those data to disk, in the right place. \n", + "Of course to help you in this task all those naming are configurable in the right place." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "let's try to see how to get one of these images" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "resources['outputs'].keys()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 10, + "text": [ + "[u'output_13_1.text',\n", + " u'output_18_0.text',\n", + " u'output_3_0.text',\n", + " u'output_18_1.png',\n", + " u'output_12_0.text',\n", + " u'output_5_0.text',\n", + " u'output_5_0.png',\n", + " u'output_13_1.png',\n", + " u'output_16_0.text',\n", + " u'output_13_0.text',\n", + " u'output_18_1.text',\n", + " u'output_3_0.png',\n", + " u'output_16_0.png']" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We have extracted 5 binary figures, here `png`s, but they could have been svg, and then wouldn't appear in the binary sub dict.\n", + "keep in mind that a object having multiple _repr_ will store all it's repr in the notebook. \n", + "\n", + "Hence if you provide `_repr_javascript_`,`_repr_latex_` and `_repr_png_`to an object, you will be able to determine at conversion time which representaition is the more appropriate. You could even decide to show all the representaition of an object, it's up to you. But this will require beeing a little more involve and write a few line of Jinja template. This will probably be the subject of another tutorial.\n", + "\n", + "Back to our images,\n", + "\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.display import Image\n", + "Image(data=resources['outputs']['output_3_0.png'],format='png')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "png": "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\nRU5ErkJggg==\n", + "prompt_number": 11, + "text": [ + "" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Yep, this is indeed the image we were expecting, and I was able to see it without ever writing or reading it from disk. I don't think I'll have to show to you what to do with those data, as if you are here you are most probably familiar with IO." + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Extracting figures with HTML Exporter ?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use case:\n", + "\n", + "> I write an [awesome blog](http://jakevdp.github.io/) in HTML, and I want all but having base64 embeded images. \n", + "Having one html file with all inside is nice to send to coworker, but I definitively want resources to be cached !\n", + "So I need an HTML exporter, and I want it to extract the figures !" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Some theory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The process of converting a notebook to a another format with the nbconvert Exporters happend in a few steps:\n", + "\n", + " - Get the notebook data and other required files. (you are responsible for that)\n", + " - Feed them to the exporter that will\n", + " - sequentially feed the data to a number of `Transformers`. Transformer only act on the **structure**\n", + " of the notebook, and have access to it all. \n", + " - feed the notebook through the jinja templating engine\n", + " - the use templates are configurable.\n", + " - templates make use of configurable macros called filters.\n", + " - The exporter return the converted notebook as well as other relevant resources as a tuple.\n", + " - Write what you need to disk, or elsewhere. (You are responsible for it)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we'll be interested in the `Transformers`. Each `Transformer` is applied successively and in order on the notebook before going through the conversion process.\n", + "\n", + "We provide some transformer that do some modification on the notebook structure by default.\n", + "One of them, the `ExtractOutputTransformer` is responsible for crawling notebook,\n", + "finding all the figures, and put them into the resources directory, as well as choosing the key\n", + "(`filename_xx_y.extension`) that can replace the figure in the template.\n", + "\n", + "\n", + "The `ExtractOutputTransformer` is special in the fact that it **should** be availlable on all `Exporter`s, but is just inactive by default on some exporter." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# second transformer shoudl be Instance of ExtractFigureTransformer\n", + "exportHtml._transformers # 3rd one shouel be " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 12, + "text": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To enable it we will use IPython configuration/Traitlets system. If you are have already set some IPython configuration options, \n", + "this will look pretty familiar to you. Configuration option are always of the form:\n", + "\n", + " ClassName.attribute_name = value\n", + " \n", + "A few ways exist to create such config, like reading a config file in your profile, but you can also do it programatically usign a dictionary. Let's create such a config object, and see the difference if we pass it to our `HtmlExporter`" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.config import Config\n", + "\n", + "c = Config({\n", + " 'ExtractOutputTransformer':{'enabled':True}\n", + " })\n", + "\n", + "exportHtml = HTMLExporter()\n", + "exportHtml_and_figs = HTMLExporter(config=c)\n", + "\n", + "(_, resources) = exportHtml.from_notebook_node(jake_notebook)\n", + "(_, resources_with_fig) = exportHtml_and_figs.from_notebook_node(jake_notebook)\n", + "\n", + "print 'resources without the \"figures\" key :'\n", + "print resources.keys()\n", + "\n", + "print ''\n", + "print 'Here we have one more field '\n", + "print resources_with_fig.keys()\n", + "resources_with_fig['outputs'].keys() " + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "resources without the \"figures\" key :\n", + "['inlining', 'output_extension', 'metadata']\n", + "\n", + "Here we have one more field \n", + "['outputs', 'inlining', 'output_extension', 'metadata']\n" + ] + }, + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 13, + "text": [ + "[u'output_13_1.text',\n", + " u'output_18_0.text',\n", + " u'output_3_0.text',\n", + " u'output_18_1.png',\n", + " u'output_12_0.text',\n", + " u'output_5_0.text',\n", + " u'output_5_0.png',\n", + " u'output_13_1.png',\n", + " u'output_16_0.text',\n", + " u'output_13_0.text',\n", + " u'output_18_1.text',\n", + " u'output_3_0.png',\n", + " u'output_16_0.png']" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So now you can loop through the dict and write all those figures to disk in the right place... " + ] + }, + { + "cell_type": "heading", + "level": 4, + "metadata": {}, + "source": [ + "Custom transformer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course you can imagine many transformation that you would like to apply to a notebook. This is one of the reason we provide a way to register your own transformers that will be applied to the notebook after the default ones.\n", + "\n", + "To do so you'll have to pass an ordered list of `Transformer`s to the Exporter constructor. \n", + "\n", + "But what is an transformer ? Transformer can be either *decorated function* for dead-simple `Transformer`s that apply\n", + "independently to each cell, for more advance transformation that support configurability You have to inherit from\n", + "`Transformer` and define a `call` method as we'll see below.\n", + "\n", + "All transforers have a magic attribute that allows it to be activated/disactivate from the config dict." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.nbconvert.transformers import Transformer\n", + "import IPython.config\n", + "print \"Four relevant docstring\"\n", + "print '============================='\n", + "print Transformer.__doc__\n", + "print '============================='\n", + "print Transformer.call.__doc__\n", + "print '============================='\n", + "print Transformer.transform_cell.__doc__\n", + "print '============================='" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Four relevant docstring\n", + "=============================\n", + " A configurable transformer\n", + "\n", + " Inherit from this class if you wish to have configurability for your\n", + " transformer.\n", + "\n", + " Any configurable traitlets this class exposed will be configurable in profiles\n", + " using c.SubClassName.atribute=value\n", + "\n", + " you can overwrite transform_cell to apply a transformation independently on each cell\n", + " or __call__ if you prefer your own logic. See corresponding docstring for informations.\n", + "\n", + " Disabled by default and can be enabled via the config by\n", + " 'c.YourTransformerName.enabled = True'\n", + " \n", + "=============================\n", + "\n", + " Transformation to apply on each notebook.\n", + " \n", + " You should return modified nb, resources.\n", + " If you wish to apply your transform on each cell, you might want to \n", + " overwrite transform_cell method instead.\n", + " \n", + " Parameters\n", + " ----------\n", + " nb : NotebookNode\n", + " Notebook being converted\n", + " resources : dictionary\n", + " Additional resources used in the conversion process. Allows\n", + " transformers to pass variables into the Jinja engine.\n", + " \n", + "=============================\n", + "\n", + " Overwrite if you want to apply a transformation on each cell. You \n", + " should return modified cell and resource dictionary.\n", + " \n", + " Parameters\n", + " ----------\n", + " cell : NotebookNode cell\n", + " Notebook cell being processed\n", + " resources : dictionary\n", + " Additional resources used in the conversion process. Allows\n", + " transformers to pass variables into the Jinja engine.\n", + " index : int\n", + " Index of the cell being processed\n", + " \n", + "=============================\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "We don't provide convenient method to be aplied on each worksheet as the **data structure** for worksheet will be removed. (not the worksheet functionnality, which is still on it's way)\n", + "***" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I'll now demonstrate a specific example [requested](https://github.com/ipython/nbconvert/pull/137#issuecomment-18658235) while nbconvert 2 was beeing developped. The ability to exclude cell from the conversion process based on their index. \n", + "\n", + "I'll let you imagin how to inject cell, if what you just want is to happend static content at the beginning/end of a notebook, plese refer to templating section, it will be much easier and cleaner." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.utils.traitlets import Integer" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 15 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class PelicanSubCell(Transformer):\n", + " \"\"\"A Pelican specific transformer to remove somme of the cells of a notebook\"\"\"\n", + " \n", + " # I could also read the cells from nbc.metadata.pelican is someone wrote a JS extension\n", + " # But I'll stay with configurable value. \n", + " start = Integer(0, config=True, help=\"first cell of notebook to be converted\")\n", + " end = Integer(-1, config=True, help=\"last cell of notebook to be converted\")\n", + " \n", + " def call(self, nb, resources):\n", + "\n", + " #nbc = deepcopy(nb)\n", + " nbc = nb\n", + " # don't print in real transformer !!!\n", + " print \"I'll keep only cells from \", self.start, \"to \", self.end, \"\\n\\n\"\n", + " for worksheet in nbc.worksheets :\n", + " cells = worksheet.cells[:]\n", + " worksheet.cells = cells[self.start:self.end] \n", + " return nbc, resources" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 16 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# I create this on the fly, but this could be loaded from a DB, and config object support merging...\n", + "c = Config({\n", + " 'PelicanSubCell':{\n", + " 'enabled':True,\n", + " 'start':4,\n", + " 'end':6,\n", + " }\n", + " })" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I'm creating a pelican exporter that take `PelicanSubCell` extra transformers and a `config` object as parameter. This might seem redundant, but with configuration system you'll see that one can register an inactive transformer on all exporters and activate it at will form its config files and command line. " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "pelican = RSTExporter(transformers=[PelicanSubCell], config=c)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 18 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "print pelican.from_notebook_node(jake_notebook)[0]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "I'll keep only cells from 4 to 6 \n", + "\n", + "\n", + "\n", + "Sometimes when showing schematic plots, this is the type of figure I\n", + "want to display. But drawing it by hand is a pain: I'd rather just use\n", + "matplotlib. The problem is, matplotlib is a bit too precise. Attempting\n", + "to duplicate this figure in matplotlib leads to something like this:\n", + "In[2]:\n", + ".. code:: python\n", + "\n", + " Image('http://jakevdp.github.com/figures/mpl_version.png')\n", + "\n", + "\n", + "\n", + "\n", + "\n", + ".. image:: output_5_0.png\n", + "\n", + "\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Programatic example of extending templates / cutom filters" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from IPython.nbconvert.filters.highlight import _pygment_highlight\n", + "from pygments.formatters import HtmlFormatter\n", + "\n", + "from IPython.nbconvert.exporters import HTMLExporter\n", + "from IPython.config import Config\n", + "\n", + "from IPython.nbformat import current as nbformat" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 20 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we define a dustom 'highlight' filter that apply a custom class to code in css. We register this filter with a already existing name, so it will replace the default one." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def my_highlight(source, language='ipython'):\n", + " formatter = HtmlFormatter(cssclass='highlight-ipynb')\n", + " return _pygment_highlight(source, formatter, language)\n", + " \n", + "c = Config({'CSSHtmlHeaderTransformer':\n", + " {'enabled':False, 'highlight_class':'highlight-ipynb'}})\n", + "\n", + "exportHtml = HTMLExporter( config=c , filters={'highlight2html': my_highlight} )\n", + "(body,resources) = exportHtml.from_notebook_node(jake_notebook)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 21 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "i = body.index('highlight-ipynb')\n", + "body[i-12:i+50]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 22, + "text": [ + "u'

\n", + "FOOOOOOOOTEEEEER\n", + "\n" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Real World Use" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "@jakevdp use Pelican and IPython Notebook to blog. Pelican [Will use](https://github.com/getpelican/pelican-plugins/pull/21) nbconvert programatically to generate blog post. Have a look a [Pythonic Preambulations](http://jakevdp.github.io/) for Jake blog post." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "@damianavila Wrote a Nicholas Plugin to [Write blog post as Notebook](http://www.damian.oquanta.info/posts/one-line-deployment-of-your-site-to-gh-pages.html) and is developping a js-extension to publish notebooks in one click from the web app." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

As @Mbussonn requested... easieeeeer! Deploy your Nikola site with just a click in the IPython notebook! http://t.co/860sJunZvj cc @ralsina

— Dami\u00e1n Avila (@damian_avila) August 21, 2013
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And finaly, what you just did, is replicate what [nbviewer](http://nbviewer.ipython.org) does. WHich to fetch a notebook from url, convert it and send in back to you as a static html." + ] + }, + { + "cell_type": "heading", + "level": 5, + "metadata": {}, + "source": [ + "A few gotchas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jinja blocks use `{% %}`by default which does not play nicely with $\\LaTeX$, hence thoses are replaced by `((* *))` in latex templates." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/examples/Notebook/images/nbconvert_arch.png b/examples/Notebook/images/nbconvert_arch.png new file mode 100644 index 0000000000000000000000000000000000000000..27cd69b79dd28647c189a88118b663c4dffcbd8c GIT binary patch literal 114431 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

#;#tzs40j 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 z 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 U52>5$1tt?d`VI25B00Fx|iU0rr literal 0 Hc$@