Start of a refactor of code for accessing Jupyter's new contents API.
First up an implementation of list contents.
New function for flattening lists borrowed from cl-alexandria (how did
we survive withoutthis in the before times?)
Updating author list here and there.
When creating a new notebook pass some additional json so IPython
knows we want to create a notebook, and not a file or directory (this
was causing problems with IPython-dev).
The message format for execute_reply payloads has changed. Seems the API
for this is still not finalized, but at least the pager works when I do
things like `object_name?`.
With IPython 3.0 we now support multiplexed communication over a single
websocket. At the moment iopub and shell are supported; stdin doesn't
seem to be working yet (not sure if it needs to be, though).
Call `(ein:notebooklist-reload)` to automatically refresh the
notebooklist buffer when a notebook is opened or stopped so those
helpful [Stop] widgets appear and disappear as needed.
ein was incorrectly writing empty metadata as a Null object, which was
causing errors in ipython.
Added a helper function to write json encoding of a notebook to a
temporary buffer to help debug code for encoding nbformat4 json from
cell data.
The notebooklist buffer will give option of "stopping" running kernels,
similar to feature in the browser UI. In EIN stopping a kernel also
means kill the buffer the kernel is connected to.
Calling ein:query-ipython-version with IPython 2.x running will result
in a request error since the api REST url is not implemented. Getting a
404 response is inevitable unless the IPython devs backport the api URL,
but I can make ein complain less when this happens.
Updating documentation to list current requirements for ein. (require
'ein-loaddefs) is redundant when loading from MELPA.
For manual installation users can uncomment this line.
Renaming to ein2 in preparation for submitting to melpa. Note this
changes how you load ein! Call (require 'ein2) now instead of (require
'ein).
Note also that you can't load both ein and ein2 at the same time, so you
should delete ein from your packages before trying ein2.
IPython 2.x+ has a JSON response when creating a new notebook. We detect
this and correctly parse the info so we can open a buffer with the newly
created notebook.
Also more updating of test code.
More conditional code for saving notebooks in nbformat v4.0.
`prompt_number` is no longer a valid property so it has to be corrected
to be `execution_count` instead.
Not sure if we need to do this, or what purpose it might serve, but
seems more appropriate than sending a kernel_info_request when opening
websocket channels.
Also make message handler kernel inactive error messages more
informative.
There is a nasty mismatch between internal representation of cell
outputs in ein and for cell outputs in notebook v4.
The current solution is less than elegant, but seems to work. Need more
testing!
Renaming notebooks should work a bit better now, tweaked code for saving
nbformat v4 to correctly include execution_count parameter even if cell
has not been executed.
Cleaned up some silliness in ein:query-singleton-ajax.