##// END OF EJS Templates
cleanup kernelspec loading...
cleanup kernelspec loading - kernel_selector.set_kernel validates selection and triggers 'spec_changed.Kernel'. It does not start the session anymore. - notebook calls kernel_selector.set_kernel when: - kernelspec is in notebook metadata - session is loaded (e.g. no kernelspec metadata) - notebook starts session, loads metadata on spec_changed.kernel The only case where starting the session is not triggered by spec_changed is on notebook load with no kernel metadata

File last commit:

r5293:49af1832
r19886:9443bd65
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