Skip to main content

Emacs minor mode for generating EIN notebooks

Project description

Get your code into a jupyter notebook. Anytime. Anywhere.

MELPA PyPI version Built with Spacemacs

Quick Start

Disclaimer: pynt is in beta. Make sure to back-up your code before using it!

First install the codebook module from PyPI with pip and install pynt in emacs through MELPA.

$ pip install codebook
M-x package-install RET pynt

Finally open some source code and start pynt mode.

M-x pynt-mode

Selected Features

On-the-fly notebook creation

No more copy and pasting code into jupyter notebooks. Expressions are automatically inserted into their own cells.

Alt Text

Alt Text

Attach a jupyter notebook to a running process

Run a command which hits the code in the notebook. Restart the notebook kernel to attach to that process.

Alt Text

Alt Text

Syntax transformations

Unroll the first pass of loops for increased interactivity.

Alt Text

Alt Text

Scroll the resulting jupyter notebook with the code buffer

Never forget which cell a code line corresponds to.

Alt Text

Alt Text

What is pynt?

pynt is an emacs minor mode for getting regions of code (e.g. function and methods) into jupyter notebooks. If you have access to the source and a command to call it with then you can get your code into a jupyter notebook.

However, just pasting your code into one big jupyter notebook cell is not particularly useful. pynt also

  • splits up code into cells so it’s easy to evaluate small bits

  • sets up the state required to run code (by allowing you to attach notebooks to external processes)

  • takes code tucked away in namespaces (e.g. functions and loops) and promotes them to the global namespace so you can interact with them

Using pynt

It is highly recommended that you familiarize yourself with Emacs IPython Notebook (EIN) first as pynt at its core is a tool to make working with EIN easier.

Once you have opened a python file and pynt mode is active, cursor over to the region of code you would like to dump into a notebook and hit C-c C-s.

If you want to attach a jupyter notebook to a running process, then run a command which hits the jupyter notebook code. Restart the jupyter notebook kernel with C-c C-r (ein:notebook-restart-kernel-command). When you see the message ein: [info] Starting channels WS: ... your notebook is attached!

How pynt works

pynt uses a custom kernel manager for attaching to jupyter notebook kernels started via third-party processes. When pynt generates a jupyter notebook from a code region that code region is replaced with a IPython kernel breakpoint so that subsequent commands that hit it will start a jupyter kernel for the notebook to attach to.

pynt also makes heavy use of the `ast <https://docs.python.org/3/library/ast.html>`__ module to parse your code into chunks which are then dumped into notebook cells.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codebook-1.2.1.tar.gz (14.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page