Skip to main content

A tool for diffing and merging IPython Notebook files

Project description


.. image::

.. image::

.. image::

A tool for diffing and merging IPython Notebook files.

This project was built by a team of
university students from Concordia University. See
`AUTHORS <>`__
for more information.

* Free software: MIT license
* Website:


Using Pip

If you have pip installed:


$ pip install nbdiff

From Source

1. Download the code from this repository
2. Run ``python develop``

Configure Git/Mercurial

*Configuring nbmerge to work with your version control system can be helpful but is not required.*

NBMerge is compatible with Mercurial out of the box by running ``hg merge --tool=nbmerge <branch>``.

Git, however, needs to be configured by adding the following to your ``.gitconfig`` file:


[mergetool "nbmerge"]
cmd = nbmerge $LOCAL $BASE $REMOTE $MERGED

Alternatively, you can run the following command to add this configuration automatically:


$ git config --global mergetool.nbmerge.cmd = "nbmerge \$LOCAL \$BASE \$REMOTE \$MERGED"

You can then run ``nbmerge`` from git like so:


$ git mergetool --tool=nbmerge



NBDiff launches a server at ``localhost:5000`` and allows you to view a simple
2-pane diff of two notebook files.


usage: nbdiff [-h] [before after]

Produce a diffed IPython Notebook from before and after notebooks. If no
arguments are given, nbdiff looks for modified notebook files in the version
control system. The resulting diff is presented to the user in the browser at

positional arguments:
before The notebook to diff against.
after The notebook to compare `before` to.

optional arguments:
-h, --help show this help message and exit


nbmerge launches


usage: nbmerge [-h] [local base remote [result]]

nbmerge is a tool for resolving merge conflicts in IPython Notebook files. If
no arguments are given, nbmerge attempts to find the conflicting file in the
version control system. Positional arguments are available for integration
with version control systems such as Git and Mercurial.

Once nbmerge is run, the UI can be accessed at http://localhost:5000

positional arguments:

optional arguments:
-h, --help show this help message and exit


Run the Python tests

To get all of the dependencies necessary to test nbdiff, run:


$ pip install -r requirements-dev.txt

To run the python tests, run the following command:


$ python nosetests

NBDiff adheres to `PEP-8 <>`__. To check the code
against PEP-8, use ``flake8`` like so:


$ flake8 tests nbdiff

To check Python test coverage, install ``coverage`` and run the tests with the ``--with-coverage`` option.


$ pip install coverage
$ python nosetests --with-coverage

Run the JavaScript tests

First, install `node <>`__ and npm.

Second, install the JavaScript dependencies using ``npm``.


$ npm install

Finally, run the tests with ``grunt``. You should output similar to the following.
Note that ``grunt`` will not only run the tests, but check for common style problems with ``jshint``.


$ grunt

Running "qunit:files" (qunit) task
Testing src/test/index.html ...OK
>> 14 assertions passed (21ms)

Done, without errors.


1.0.0 (2014-03-28)

* End of the original capstone team project.
* First release on PyPI

1.0.3 (2014-04-15)

* IPython 2.0.0 support

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

nbdiff-1.0.3.tar.gz (219.2 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