##// 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:

r18603:cd1bfb05
r19886:9443bd65
Show More
reader.py
82 lines | 2.0 KiB | text/x-python | PythonLexer
MinRK
update nbformat.current to v4
r18579 """API for reading notebooks of different versions"""
Jonathan Frederic
Notebook version conversions done right?
r12493
MinRK
update nbformat.current to v4
r18579 # Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
Jonathan Frederic
Notebook version conversions done right?
r12493
import json
class NotJSONError(ValueError):
pass
def parse_json(s, **kwargs):
"""Parse a JSON string into a dict."""
try:
nb_dict = json.loads(s, **kwargs)
except ValueError:
Jonathan Frederic
Updated JSON error message to limit full error to 80 characters....
r12975 # Limit the error message to 80 characters. Display whatever JSON will fit.
raise NotJSONError(("Notebook does not appear to be JSON: %r" % s)[:77] + "...")
Jonathan Frederic
Notebook version conversions done right?
r12493 return nb_dict
# High level API
def get_version(nb):
"""Get the version of a notebook.
Parameters
----------
nb : dict
NotebookNode or dict containing notebook data.
Returns
-------
Tuple containing major (int) and minor (int) version numbers
"""
major = nb.get('nbformat', 1)
minor = nb.get('nbformat_minor', 0)
return (major, minor)
Jonathan Frederic
Some small fixes and changes of nb version conversion
r12755 def reads(s, **kwargs):
"""Read a notebook from a json string and return the
Jonathan Frederic
Notebook version conversions done right?
r12493 NotebookNode object.
This function properly reads notebooks of any version. No version
conversion is performed.
Parameters
----------
s : unicode
The raw unicode string to read the notebook from.
Returns
-------
nb : NotebookNode
The notebook that was read.
"""
MinRK
Add top-level IPython.nbformat API...
r18603 from . import versions, NBFormatError
MinRK
add missing NBFormatError import in nbformat.reader.reads...
r17636
Jonathan Frederic
Notebook version conversions done right?
r12493 nb_dict = parse_json(s, **kwargs)
(major, minor) = get_version(nb_dict)
if major in versions:
Jonathan Frederic
Fixes (iptest), simplified v1, v2, .. , vX import code
r12494 return versions[major].to_notebook_json(nb_dict, minor=minor)
Jonathan Frederic
Notebook version conversions done right?
r12493 else:
raise NBFormatError('Unsupported nbformat version %s' % major)
def read(fp, **kwargs):
"""Read a notebook from a file and return the NotebookNode object.
This function properly reads notebooks of any version. No version
conversion is performed.
Parameters
----------
fp : file
Any file-like object with a read method.
Returns
-------
nb : NotebookNode
The notebook that was read.
"""
Jonathan Frederic
Some small fixes and changes of nb version conversion
r12755 return reads(fp.read(), **kwargs)