The following 18 authors contributed 144 commits -- Thank you all!
- Benjamin Ragan-Kelley
- Clayton A Davis
- DInne Bosman
- Doug Blank
- Henrique Silva
- Jeff Hale
- Lukasz Mitusinski
- M Pacer
- Maarten Breddels
- Madhumitha N
- Matthew Seal
- Paul Gowder
- Philipp A
- Rick Lupton
- Rüdiger Busche
- Thomas Kluyver
- Tyler Makaro
- WrRan
The full list of changes they made can be seen [on
GitHub](https://github.com/jupyter/nbconvert/issues?q=milestone%3A5.5+)
Significant Changes
Deprecations
Python 3.4 support was dropped. Many of our upstream libraries stopped
supporting 3.4 and it was found that serious bugs were being caught
during testing against those libraries updating past 3.4.
See [979](https://github.com/jupyter/nbconvert/pull/979) for details.
IPyWidget Support
Now when a notebook executing contains [Jupyter
Widgets](https://github.com/jupyter-widgets/ipywidgets/), the state of
all the widgets can be stored in the notebook's metadata. This allows
rendering of the live widgets on, for instance nbviewer, or when
converting to html.
You can tell nbconvert to not store the state using the
`store_widget_state` argument:
jupyter nbconvert --ExecutePreprocessor.store_widget_state=False --to notebook --execute mynotebook.ipynb
This widget rendering is not performed against a browser during
execution, so only widget default states or states manipulated via user
code will be calculated during execution. `%%javascript` cells will
execute upon notebook rendering, enabling complex interactions to
function as expected when viewed by a UI.
If you can't view widget results after execution, you may need to
select `File --> Trust Notebook` in the menu.
See [779](https://github.com/jupyter/nbconvert/pull/779), [#900](https://github.com/jupyter/nbconvert/pull/900), and [#983](https://github.com/jupyter/nbconvert/pull/983) for details.
Execute Preprocessor Rework
Based on monkey patching required in
[papermill](https://github.com/nteract/papermill/blob/0.19.1/papermill/preprocess.py)
the `run_cell` code path in the ExecutePreprocessor was reworked to
allow for accessing individual message parses without reimplementing the
entire function. Now there is a `process_message` function which take a
ZeroMQ message and applies all of its side-effect updates on the
cell/notebook objects before returning the output it generated, if it
generated any such output.
The change required a much more extensive test suite covering cell
execution as test coverage on the various, sometimes wonky, code paths
made improvements and reworks impossible to prove undamaging. Now
changes to kernel message processing has much better coverage, so future
additions or changes with specs over time will be easier to add.
See [905](https://github.com/jupyter/nbconvert/pull/905) and [#982](https://github.com/jupyter/nbconvert/pull/982) for details
Out Of Memory Kernel Failure Catches
When running out of memory on a machine, if the kernel process was
killed by the operating system it would result in a timeout error at
best and hang indefinitely at worst. Now regardless of timeout
configuration, if the underlying kernel process dies before emitting any
messages to the effect an exception will be raised notifying the
consumer of the lost kernel within a few seconds.
See [959](https://github.com/jupyter/nbconvert/pull/959), [#971](https://github.com/jupyter/nbconvert/pull/971), and [#998](https://github.com/jupyter/nbconvert/pull/998) for details
Latex / PDF Template Improvements
The latex template was long overdue for improvements. The default
template had a rewrite which makes exports for latex and pdf look a lot
better. Code cells in particular render much better with line breaks and
styling the more closely matches notebook browser rendering. Thanks
t-makaro for the efforts here!
See [992](https://github.com/jupyter/nbconvert/pull/992) for details
Comprehensive notes
New Features
- IPyWidget Support [779](https://github.com/jupyter/nbconvert/pull/779),
[900](https://github.com/jupyter/nbconvert/pull/900), and [#983](https://github.com/jupyter/nbconvert/pull/983)
- A new ClearMetadata Preprocessor is available
[805](https://github.com/jupyter/nbconvert/pull/805)
- Support for pandoc 2 [964](https://github.com/jupyter/nbconvert/pull/964)
- New, and better, latex template [992](https://github.com/jupyter/nbconvert/pull/992)
Fixing Problems
- Refactored execute preprocessor to have a process_message function
[905](https://github.com/jupyter/nbconvert/pull/905):
- Fixed OOM kernel failures hanging [959](https://github.com/jupyter/nbconvert/pull/959) and [#971](https://github.com/jupyter/nbconvert/pull/971)
- Fixed latex export for svg data in python 3 [985](https://github.com/jupyter/nbconvert/pull/985)
- Enabled configuration to be shared to exporters from script exporter
[993](https://github.com/jupyter/nbconvert/pull/993)
- Make latex errors less verbose [988](https://github.com/jupyter/nbconvert/pull/988)
- Typo in template syntax [984](https://github.com/jupyter/nbconvert/pull/984)
- Improved attachments +fix supporting non-unique names
[980](https://github.com/jupyter/nbconvert/pull/980)
- PDFExporter "output_mimetype" traitlet is not longer
'text/latex' [972](https://github.com/jupyter/nbconvert/pull/972)
- FIX: respect wait for clear_output [969](https://github.com/jupyter/nbconvert/pull/969)
- address deprecation warning in cgi.escape [963](https://github.com/jupyter/nbconvert/pull/963)
- Correct inaccurate description of available LaTeX template
[958](https://github.com/jupyter/nbconvert/pull/958)
- Fixed kernel death detection for executions with timeouts
[998](https://github.com/jupyter/nbconvert/pull/998):
- Fixed export names for various templates [1000](https://github.com/jupyter/nbconvert/pull/1000), [#1001](https://github.com/jupyter/nbconvert/pull/1001), and
[1001](https://github.com/jupyter/nbconvert/pull/1001):
Deprecations
- Dropped support for python 3.4 [979](https://github.com/jupyter/nbconvert/pull/979)
- Removed deprecated `export_by_name` [945](https://github.com/jupyter/nbconvert/pull/945)
Testing, Docs, and Builds
- Added tests for each branch in execute's run_cell method
[982](https://github.com/jupyter/nbconvert/pull/982)
- Mention formats in --to options more clearly
[991](https://github.com/jupyter/nbconvert/pull/991)
- Adds ascii output type to command line docs page, mention image
folder output [956](https://github.com/jupyter/nbconvert/pull/956)
- Simplify setup.py [949](https://github.com/jupyter/nbconvert/pull/949)
- Use utf-8 encoding in execute_api example [921](https://github.com/jupyter/nbconvert/pull/921)
- Upgrade pytest on Travis [941](https://github.com/jupyter/nbconvert/pull/941)
- Fix LaTeX base template name in docs [940](https://github.com/jupyter/nbconvert/pull/940)
- Updated release instructions based on 5.4 release walk-through
[887](https://github.com/jupyter/nbconvert/pull/887)
- Fixed broken link to jinja docs [997](https://github.com/jupyter/nbconvert/pull/997)