Commutable is a package to represent a Jupyter notebook document, as well as operations on the notebook, as a series of immutable notebooks, each one with its own state at a point in time.
This package follows the principles below, based on Tom MacWright's outline for practical undo.
- A notebook document is immutable. The notebook document's representation is never mutated in-place.
- Changes to a notebook document are encapsulated into operations that take a previous version and return a new version of the notebook without modifying the old version.
- History is represented as a list of states, with the past on one end, the present on the other, and an index that can back up into 'undo states'.
- Modifying a notebook document causes any future states to be thrown away.
$ yarn add @nteract/commutable
$ npm install --save @nteract/commutable
The example below shows how we can create an empty Markdown cell in our
nteract notebook application. We use the
emptyMarkdownCell immutable object
exported from this package to represent a new empty Markdown cell in a
You can view the reference documentation for
@nteract/commutable in the
If you experience an issue while using this package or have a feature request,
please file an issue on the issue board
and, if possible, add the