##// END OF EJS Templates
try to shutdown at the end of every notebook run...
try to shutdown at the end of every notebook run this line causes noise in the test suite, but if we just ignore it, we'll never get to the bottom of it. It seems to only happen when running 'iptest js', and *not* when running the 'casperjs test' command directly, with a notebookserver that was launched manually.

File last commit:

r5293:49af1832
r13288:f4ebc6b7
Show More
nbjson.py
69 lines | 1.9 KiB | text/x-python | PythonLexer
Brian E. Granger
More review changes....
r4609 """Read and write notebooks in JSON format.
Authors:
* Brian Granger
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2011 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Brian E. Granger
Adding nbformat subpackage.
r4392
MinRK
split likely multiline strings when writing to/from JSON
r5278 import copy
Brian E. Granger
Adding nbformat subpackage.
r4392 import json
MinRK
split likely multiline strings when writing to/from JSON
r5278 from .nbbase import from_dict
from .rwbase import (
NotebookReader, NotebookWriter, restore_bytes, rejoin_lines, split_lines
)
Brian E. Granger
More review changes....
r4609 #-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
Brian E. Granger
Adding nbformat subpackage.
r4392
class BytesEncoder(json.JSONEncoder):
MinRK
fix base64 code in nbformat.v2...
r5175 """A JSON encoder that accepts b64 (and other *ascii*) bytestrings."""
Brian E. Granger
Adding nbformat subpackage.
r4392 def default(self, obj):
if isinstance(obj, bytes):
MinRK
fix base64 code in nbformat.v2...
r5175 return obj.decode('ascii')
Brian E. Granger
Adding nbformat subpackage.
r4392 return json.JSONEncoder.default(self, obj)
class JSONReader(NotebookReader):
Brian E. Granger
Initial draft of more formal notebook format....
r4401 def reads(self, s, **kwargs):
Brian E. Granger
Adding nbformat subpackage.
r4392 nb = json.loads(s, **kwargs)
Brian E. Granger
Full versioning added to nbformat.
r4406 nb = self.to_notebook(nb, **kwargs)
Brian E. Granger
Adding nbformat subpackage.
r4392 return nb
Brian E. Granger
Full versioning added to nbformat.
r4406 def to_notebook(self, d, **kwargs):
MinRK
split likely multiline strings when writing to/from JSON
r5278 return restore_bytes(rejoin_lines(from_dict(d)))
Brian E. Granger
Full versioning added to nbformat.
r4406
Brian E. Granger
Adding nbformat subpackage.
r4392
class JSONWriter(NotebookWriter):
Brian E. Granger
Initial draft of more formal notebook format....
r4401 def writes(self, nb, **kwargs):
Brian E. Granger
Adding nbformat subpackage.
r4392 kwargs['cls'] = BytesEncoder
MinRK
shorten json indent to 1sp
r5293 kwargs['indent'] = 1
MinRK
sort keys when writing json notebooks
r5271 kwargs['sort_keys'] = True
MinRK
split likely multiline strings when writing to/from JSON
r5278 if kwargs.pop('split_lines', True):
nb = split_lines(copy.deepcopy(nb))
Brian E. Granger
Adding nbformat subpackage.
r4392 return json.dumps(nb, **kwargs)
MinRK
split likely multiline strings when writing to/from JSON
r5278
Brian E. Granger
Adding nbformat subpackage.
r4392
_reader = JSONReader()
_writer = JSONWriter()
reads = _reader.reads
read = _reader.read
Brian E. Granger
Full versioning added to nbformat.
r4406 to_notebook = _reader.to_notebook
Brian E. Granger
Adding nbformat subpackage.
r4392 write = _writer.write
writes = _writer.writes