##// END OF EJS Templates
htmlnotebook: Suppress cell boundary when publishing.
htmlnotebook: Suppress cell boundary when publishing.

File last commit:

r4551:a86896dd
r4593:1e866249
Show More
nbbase.py
132 lines | 3.8 KiB | text/x-python | PythonLexer
Brian E. Granger
Adding nbformat subpackage.
r4392 """The basic dict based notebook format."""
Brian E. Granger
Initial draft of more formal notebook format....
r4401 import pprint
Brian E. Granger
Adding nbformat subpackage.
r4392 import uuid
Brian E. Granger
Initial draft of more formal notebook format....
r4401 from IPython.utils.ipstruct import Struct
class NotebookNode(Struct):
pass
Brian E. Granger
Adding nbformat subpackage.
r4392
Brian E. Granger
Full versioning added to nbformat.
r4406 def from_dict(d):
if isinstance(d, dict):
newd = NotebookNode()
for k,v in d.items():
newd[k] = from_dict(v)
return newd
elif isinstance(d, (tuple, list)):
return [from_dict(i) for i in d]
else:
return d
Brian E. Granger
Updates to basic notebook format....
r4402 def new_output(output_type=None, output_text=None, output_png=None,
Brian E. Granger
Adding nbformat subpackage.
r4392 output_html=None, output_svg=None, output_latex=None, output_json=None,
Brian E. Granger
Adding tracebacks, evalue and etype to the nbformat and notebook.
r4540 output_javascript=None, output_jpeg=None, prompt_number=None,
etype=None, evalue=None, traceback=None):
Brian E. Granger
Adding nbformat subpackage.
r4392 """Create a new code cell with input and output"""
Brian E. Granger
Initial draft of more formal notebook format....
r4401 output = NotebookNode()
Brian E. Granger
Updates to basic notebook format....
r4402 if output_type is not None:
output.output_type = unicode(output_type)
Brian E. Granger
Adding tracebacks, evalue and etype to the nbformat and notebook.
r4540
if output_type != 'pyerr':
if output_text is not None:
output.text = unicode(output_text)
if output_png is not None:
output.png = bytes(output_png)
if output_jpeg is not None:
output.jpeg = bytes(output_jpeg)
if output_html is not None:
output.html = unicode(output_html)
if output_svg is not None:
output.svg = unicode(output_svg)
if output_latex is not None:
output.latex = unicode(output_latex)
if output_json is not None:
output.json = unicode(output_json)
if output_javascript is not None:
output.javascript = unicode(output_javascript)
if output_type == u'pyout':
if prompt_number is not None:
output.prompt_number = int(prompt_number)
if output_type == u'pyerr':
if etype is not None:
output.etype = unicode(etype)
if evalue is not None:
output.evalue = unicode(evalue)
if traceback is not None:
output.traceback = [unicode(frame) for frame in list(traceback)]
Brian E. Granger
Updates to basic notebook format....
r4402 return output
Brian E. Granger
Adding nbformat subpackage.
r4392
Brian E. Granger
Added collapsed field to the code cell.
r4533 def new_code_cell(input=None, prompt_number=None, outputs=None,
language=u'python', collapsed=False):
Brian E. Granger
Updates to basic notebook format....
r4402 """Create a new code cell with input and output"""
cell = NotebookNode()
cell.cell_type = u'code'
if language is not None:
cell.language = unicode(language)
if input is not None:
cell.input = unicode(input)
if prompt_number is not None:
cell.prompt_number = int(prompt_number)
if outputs is None:
cell.outputs = []
else:
cell.outputs = outputs
Brian E. Granger
Added collapsed field to the code cell.
r4533 if collapsed is not None:
Brian E. Granger
New .py notebook format implemented.
r4536 cell.collapsed = bool(collapsed)
Brian E. Granger
Updates to basic notebook format....
r4402
return cell
Brian E. Granger
Markdown cells are now saved and restored in notebooks.
r4511 def new_text_cell(cell_type, source=None, rendered=None):
Brian E. Granger
Adding nbformat subpackage.
r4392 """Create a new text cell."""
Brian E. Granger
Initial draft of more formal notebook format....
r4401 cell = NotebookNode()
Brian E. Granger
Starting to rename text cell to html cell.
r4498 if source is not None:
cell.source = unicode(source)
Brian E. Granger
Markdown cells are now saved and restored in notebooks.
r4511 if rendered is not None:
cell.rendered = unicode(rendered)
cell.cell_type = cell_type
Brian E. Granger
Adding nbformat subpackage.
r4392 return cell
def new_worksheet(name=None, cells=None):
"""Create a worksheet by name with with a list of cells."""
Brian E. Granger
Initial draft of more formal notebook format....
r4401 ws = NotebookNode()
Brian E. Granger
Adding nbformat subpackage.
r4392 if name is not None:
Brian E. Granger
Initial draft of more formal notebook format....
r4401 ws.name = unicode(name)
Brian E. Granger
Adding nbformat subpackage.
r4392 if cells is None:
Brian E. Granger
Initial draft of more formal notebook format....
r4401 ws.cells = []
Brian E. Granger
Adding nbformat subpackage.
r4392 else:
Brian E. Granger
Initial draft of more formal notebook format....
r4401 ws.cells = list(cells)
Brian E. Granger
Adding nbformat subpackage.
r4392 return ws
Brian E. Granger
Notebook id removed from the notebook format.
r4551 def new_notebook(name=None, worksheets=None, author=None, email=None,
Brian E. Granger
New .py notebook format implemented.
r4536 created=None, saved=None, license=None):
Brian E. Granger
Adding nbformat subpackage.
r4392 """Create a notebook by name, id and a list of worksheets."""
Brian E. Granger
Initial draft of more formal notebook format....
r4401 nb = NotebookNode()
Brian E. Granger
Full versioning added to nbformat.
r4406 nb.nbformat = 2
Brian E. Granger
Adding nbformat subpackage.
r4392 if name is not None:
Brian E. Granger
Initial draft of more formal notebook format....
r4401 nb.name = unicode(name)
Brian E. Granger
Adding nbformat subpackage.
r4392 if worksheets is None:
Brian E. Granger
Initial draft of more formal notebook format....
r4401 nb.worksheets = []
Brian E. Granger
Adding nbformat subpackage.
r4392 else:
Brian E. Granger
Initial draft of more formal notebook format....
r4401 nb.worksheets = list(worksheets)
Brian E. Granger
New .py notebook format implemented.
r4536 if author is not None:
nb.author = unicode(author)
if email is not None:
nb.email = unicode(email)
if created is not None:
nb.created = unicode(created)
if saved is not None:
nb.saved = unicode(saved)
if license is not None:
nb.license = unicode(license)
Brian E. Granger
Adding nbformat subpackage.
r4392 return nb