jupyter_protocol

Experimental

OTHER License

Stars
5

Jupyter Protocol

This is an experimental implementation of the Jupyter protocol, to be used by both clients and kernels.

A few notes on the pieces and ideas:

  • The messages module contains many functions for constructing messages of
    different types. The idea is to encapsulate as much of the message structure
    as possible here, to reduce the ambiguity where a kernel written in Python
    speaks a protocol defined partly by a library and partly by the kernel's
    own implementation.
  • A Session handles (de)serialisation. Its scope is reduced from the Session
    class in jupyter_client, because it no longer handles sending and receiving.
  • The messaging classes in jupyter_protocol.sockets handle setting up ZMQ
    sockets, sending and receiving messages. There is one for each piece that
    communicates: KernelMessaging, ClientMessaging, NannyMessaging.
  • I try to consistently represent unserialised messages as Message objects.
    These objects include the idents and buffers that we previously handled
    separately from the main JSON-able message parts.
    The adapter module is currently an exception (it works with dicts).
  • The message schemas from jupyter_kernel_test are going to come here too,
    but this hasn't happened yet.