1.1.3 • Published 9 years ago

commutable v1.1.3

Weekly downloads
18
License
BSD-3-Clause
Repository
github
Last release
9 years ago

com·mut·a·ble

Build Status codecov

/kəˈmyo͞otəbəl/

  1. (of a place or journey) allowing regular commuting to and from work.
  2. 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