1.1.3 • Published 9 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
9 years ago
1.2.0
9 years ago
1.1.2
9 years ago
1.1.1
9 years ago
1.1.0
9 years ago
1.0.1
9 years ago
1.0.0
9 years ago
0.11.1
9 years ago
0.11.0
9 years ago
0.10.0
9 years ago
0.9.2
9 years ago
0.9.1
9 years ago
0.9.0
9 years ago
0.8.0
9 years ago
0.7.0
9 years ago
0.6.0
9 years ago
0.5.0
9 years ago
0.4.0
10 years ago
0.3.0
10 years ago
0.2.0
10 years ago
0.1.3
10 years ago
0.1.2
10 years ago
0.1.1
10 years ago
0.1.0
10 years ago
0.0.2
10 years ago
0.0.1
10 years ago
0.0.0
10 years ago