##// END OF EJS Templates
Adds configuration options to use Google Drive content manager...
Adds configuration options to use Google Drive content manager Adds the key contentmanager_js_source to webapp_settings that allows for specifying the content manager JavaScript source file. Also adds a NotebookManager subclass, ClientSideNotebookManager, which does minimal logic. This class is used when the JavaScript content manager doesn't use the Python notebook manager, but rather implements that logic client side, as is the case for the Google Drive based content manager. A sample command line that uses the Google Drive content manager, and the ClientSideNotebookManager, is ipython notebook --NotebookApp.webapp_settings="{'contentmanager_js_source': 'base/js/drive_contentmanager'}" --NotebookApp.notebook_manager_class="IPython.html.services.notebooks.clientsidenbmanager.ClientSideNotebookManager"

File last commit:

r18258:9ea16f28
r18639:28c27a69
Show More
convert.py
90 lines | 2.6 KiB | text/x-python | PythonLexer
MinRK
scrub bytes when upgrading notebooks from v2...
r18254 """Code for converting notebooks to and from the v2 format."""
Brian E. Granger
More review changes....
r4609
MinRK
scrub bytes when upgrading notebooks from v2...
r18254 # Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
Brian E. Granger
More review changes....
r4609
Brian E. Granger
Full versioning added to nbformat.
r4406 from .nbbase import (
MinRK
add nbformat_minor for minor revisions to nbformat
r7545 new_code_cell, new_text_cell, new_worksheet, new_notebook, new_output,
nbformat, nbformat_minor
Brian E. Granger
Full versioning added to nbformat.
r4406 )
Brian Granger
More work updating nbformat....
r6026 from IPython.nbformat import v2
MinRK
scrub bytes when upgrading notebooks from v2...
r18254 def _unbytes(obj):
"""There should be no bytes objects in a notebook
v2 stores png/jpeg as b64 ascii bytes
"""
if isinstance(obj, dict):
for k,v in obj.items():
obj[k] = _unbytes(v)
elif isinstance(obj, list):
for i,v in enumerate(obj):
obj[i] = _unbytes(v)
elif isinstance(obj, bytes):
# only valid bytes are b64-encoded ascii
obj = obj.decode('ascii')
return obj
Brian E. Granger
More review changes....
r4609
Jonathan Frederic
Notebook version conversions done right?
r12493 def upgrade(nb, from_version=2, from_minor=0):
"""Convert a notebook to v3.
Brian E. Granger
More review changes....
r4609
Parameters
----------
nb : NotebookNode
The Python representation of the notebook to convert.
Jonathan Frederic
Notebook version conversions done right?
r12493 from_version : int
Brian E. Granger
More review changes....
r4609 The original version of the notebook to convert.
Jonathan Frederic
Notebook version conversions done right?
r12493 from_minor : int
MinRK
add nbformat_minor for minor revisions to nbformat
r7545 The original minor version of the notebook to convert (only relevant for v >= 3).
Brian E. Granger
More review changes....
r4609 """
Jonathan Frederic
Notebook version conversions done right?
r12493 if from_version == 2:
Brian Granger
Proper error handling for nbformat versions in client code....
r6061 # Mark the original nbformat so consumers know it has been converted.
MinRK
add nbformat_minor for minor revisions to nbformat
r7545 nb.nbformat = nbformat
nb.nbformat_minor = nbformat_minor
Brian Granger
Proper error handling for nbformat versions in client code....
r6061 nb.orig_nbformat = 2
MinRK
scrub bytes when upgrading notebooks from v2...
r18254 nb = _unbytes(nb)
MinRK
fill missing metadata when upgrading v2->v3
r18258 for ws in nb['worksheets']:
for cell in ws['cells']:
cell.setdefault('metadata', {})
Brian Granger
More work updating nbformat....
r6026 return nb
Jonathan Frederic
Notebook version conversions done right?
r12493 elif from_version == 3:
if from_minor != nbformat_minor:
nb.orig_nbformat_minor = from_minor
MinRK
add nbformat_minor for minor revisions to nbformat
r7545 nb.nbformat_minor = nbformat_minor
Brian Granger
More work updating nbformat....
r6026 return nb
Brian E. Granger
Full versioning added to nbformat.
r4406 else:
Jonathan Frederic
Notebook version conversions done right?
r12493 raise ValueError('Cannot convert a notebook directly from v%s to v3. ' \
'Try using the IPython.nbformat.convert module.' % from_version)
Brian E. Granger
Full versioning added to nbformat.
r4406
Jonathan Frederic
Notebook version conversions done right?
r12493 def heading_to_md(cell):
"""turn heading cell into corresponding markdown"""
cell.cell_type = "markdown"
level = cell.pop('level', 1)
cell.source = '#'*level + ' ' + cell.source
def raw_to_md(cell):
"""let raw passthrough as markdown"""
cell.cell_type = "markdown"
def downgrade(nb):
"""Convert a v3 notebook to v2.
Parameters
----------
nb : NotebookNode
The Python representation of the notebook to convert.
"""
if nb.nbformat != 3:
return nb
nb.nbformat = 2
for ws in nb.worksheets:
for cell in ws.cells:
if cell.cell_type == 'heading':
heading_to_md(cell)
elif cell.cell_type == 'raw':
raw_to_md(cell)
return nb