1.1.3 • Published 8 years ago
commutable v1.1.3
com·mut·a·ble
/kəˈmyo͞otəbəl/
- (of a place or journey) allowing regular commuting to and from work.
- capable of being exchanged or converted.
commutable
is a library for Jupyter Notebook operations, helping to enable
history stored as a series of immutable notebooks.
Principles
- A notebook document is immutable. It is never mutated in-place.
- Changes to a notebook document are encapsulated into operations that take a previous version and return a new one.
- History is represented as a list of states, with 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.
Credits to Tom MacWright for the outline.
Installation
npm install --save commutable
Usage
Fresh notebook
> const uuid = require('uuid').v4
undefined
> const commutable = require('.')
undefined
> nb = commutable.emptyNotebook
Map { "cellOrder": List [], "nbformat": 4, "nbformat_minor": 0, "cellMap": Map {} }
> cellID = uuid()
'd50dbdd5-1af0-4c8d-90fb-ae9ed9ff6c9b'
> nb2 = commutable.appendCell(nb, commutable.emptyCodeCell, cellID)
> nb2.toJS()
{ cellOrder: [ 'd50dbdd5-1af0-4c8d-90fb-ae9ed9ff6c9b' ],
nbformat: 4,
nbformat_minor: 0,
cellMap:
{ 'd50dbdd5-1af0-4c8d-90fb-ae9ed9ff6c9b':
{ cell_type: 'code',
execution_count: null,
metadata: [Object],
source: '',
outputs: [] } } }
> nb3 = commutable.appendCell(nb2,
... commutable.emptyCodeCell.set('source', 'import random\nrandom.random()'), uuid())
> nb3.toJS()
{ cellOrder:
[ 'd50dbdd5-1af0-4c8d-90fb-ae9ed9ff6c9b',
'8d40321c-87c0-4d86-900c-2174f6920969' ],
nbformat: 4,
nbformat_minor: 0,
cellMap:
{ 'd50dbdd5-1af0-4c8d-90fb-ae9ed9ff6c9b':
{ cell_type: 'code',
execution_count: null,
metadata: [Object],
source: '',
outputs: [] },
'8d40321c-87c0-4d86-900c-2174f6920969':
{ cell_type: 'code',
execution_count: null,
metadata: [Object],
source: 'import random\nrandom.random()',
outputs: [] } } }
1.1.3
8 years ago
1.2.0
8 years ago
1.1.2
8 years ago
1.1.1
8 years ago
1.1.0
8 years ago
1.0.1
8 years ago
1.0.0
8 years ago
0.11.1
8 years ago
0.11.0
8 years ago
0.10.0
8 years ago
0.9.2
8 years ago
0.9.1
8 years ago
0.9.0
8 years ago
0.8.0
8 years ago
0.7.0
8 years ago
0.6.0
8 years ago
0.5.0
8 years ago
0.4.0
8 years ago
0.3.0
8 years ago
0.2.0
8 years ago
0.1.3
8 years ago
0.1.2
8 years ago
0.1.1
8 years ago
0.1.0
8 years ago
0.0.2
8 years ago
0.0.1
8 years ago
0.0.0
8 years ago