nbdime

Tools for diffing and merging of Jupyter notebooks.

https://github.com/jupyter/nbdime

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    2 of 51 committers (3.9%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.0%) to scientific vocabulary

Keywords

diff diffing git hg jupyter jupyter-notebook jupyterlab-extension mercurial merge merge-driver mergetool vcs version-control

Keywords from Contributors

notebook spec-0 repl ipython closember dataviz alignment flexible visualisation grading
Last synced: 6 months ago · JSON representation

Repository

Tools for diffing and merging of Jupyter notebooks.

Basic Info
  • Host: GitHub
  • Owner: jupyter
  • License: other
  • Language: TypeScript
  • Default Branch: master
  • Homepage: http://nbdime.readthedocs.io
  • Size: 14.1 MB
Statistics
  • Stars: 2,775
  • Watchers: 44
  • Forks: 173
  • Open Issues: 101
  • Releases: 9
Topics
diff diffing git hg jupyter jupyter-notebook jupyterlab-extension mercurial merge merge-driver mergetool vcs version-control
Created over 10 years ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog Contributing License

README.md

Installation | Documentation | Contributing | Development Install | Testing | License | Getting help

nbdime Jupyter Notebook Diff and Merge tools

Test codecov.io Documentation Status Google Group

nbdime provides tools for diffing and merging of Jupyter Notebooks.

  • nbdiff compare notebooks in a terminal-friendly way
  • nbmerge three-way merge of notebooks with automatic conflict resolution
  • nbdiff-web shows you a rich rendered diff of notebooks
  • nbmerge-web gives you a web-based three-way merge tool for notebooks
  • nbshow present a single notebook in a terminal-friendly way

Diffing notebooks in the terminal:

terminal-diff

Merging notebooks in a browser:

web-merge

Installation

Install nbdime with pip:

pip install nbdime

See the installation docs for more installation details and development installation instructions.

Documentation

See the latest documentation at https://nbdime.readthedocs.io.

See also description and discussion in the Jupyter Enhancement Proposal.

Contributing

If you would like to contribute to the project, please read our contributor documentation and the CONTRIBUTING.md.

Development Install

To install a development version of nbdime, you will need npm installed and available on your PATH while installing.

For a development install, enter on the command line:

bash pip install -e git+https://github.com/jupyter/nbdime#egg=nbdime

See installation documentation for additional detail, particularly related to performing a dev install for working on the browser script code.

Testing

Install the test requirements:

pip install nbdime[test]

To run Python tests locally, enter on the command line: pytest

To run Javascript tests locally, enter: npm test

Install the codecov browser extension to view test coverage in the source browser on github.

See testing documentation for additional detail.

License

We use a shared copyright model that enables all contributors to maintain the copyright on their contributions.

All code is licensed under the terms of the revised BSD license.

Getting help

We encourage you to ask questions on the mailing list.

Resources

Owner

  • Name: Project Jupyter
  • Login: jupyter
  • Kind: organization
  • Email: jupyter@googlegroups.com
  • Location: The Future

Interactive Computing

GitHub Events

Total
  • Commit comment event: 2
  • Issues event: 8
  • Watch event: 96
  • Issue comment event: 9
  • Gollum event: 1
  • Pull request review event: 4
  • Pull request event: 4
  • Fork event: 12
Last Year
  • Commit comment event: 2
  • Issues event: 8
  • Watch event: 96
  • Issue comment event: 9
  • Gollum event: 1
  • Pull request review event: 4
  • Pull request event: 4
  • Fork event: 12

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,803
  • Total Committers: 51
  • Avg Commits per committer: 35.353
  • Development Distribution Score (DDS): 0.366
Past Year
  • Commits: 10
  • Committers: 3
  • Avg Commits per committer: 3.333
  • Development Distribution Score (DDS): 0.5
Top Committers
Name Email Commits
Vidar Tonaas Fauske v****f@g****m 1,144
Martin Sandve Alnæs m****l@s****o 314
Min RK b****k@g****m 130
Frédéric Collonval f****l 46
Carol Willing c****e@w****m 32
Florence Haudin h****e@g****m 22
github-actions[bot] g****] 14
Michał Krassowski 5****i 13
Alex Bozarth a****t@u****m 13
dependabot[bot] 4****] 9
Vidar Tonaas Fauske v****r@p****o 6
Nicholas Bollweg n****g@c****o 5
Steven Silvester s****e@a****m 5
Charlotte Godley me@c****k 3
Itamar Turner-Trauring i****r@i****g 3
Thomas Baldwin t****b@s****m 3
Chih-Hsuan Yen 6****5@u****m 2
David Baumgold d****d@d****m 2
Geir Arne Hjelle g****e@g****m 2
Tony Hirst t****t@g****m 2
passer w****a@g****m 2
Piotr Chromiec p****c@r****m 2
kr0p07k1n 9****n 1
Will Engler E****l@g****m 1
Adam Chainz a****m@a****u 1
Saul Shanabrook s****k@g****m 1
Saiwing Yeung s****y@z****m 1
Rüdiger Busche r****e@w****e 1
Nico Krapp n****p@s****m 1
Mark Einon m****n@g****m 1
and 21 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 111
  • Total pull requests: 111
  • Average time to close issues: 6 months
  • Average time to close pull requests: about 2 months
  • Total issue authors: 66
  • Total pull request authors: 36
  • Average comments per issue: 3.5
  • Average comments per pull request: 3.06
  • Merged pull requests: 71
  • Bot issues: 0
  • Bot pull requests: 20
Past Year
  • Issues: 10
  • Pull requests: 17
  • Average time to close issues: 4 days
  • Average time to close pull requests: 4 days
  • Issue authors: 10
  • Pull request authors: 6
  • Average comments per issue: 1.4
  • Average comments per pull request: 0.35
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 10
Top Authors
Issue Authors
  • fcollonval (13)
  • vidartf (11)
  • krassowski (6)
  • gwincr11 (6)
  • HaudinFlorence (3)
  • kloczek (3)
  • fperez (2)
  • mlucool (2)
  • michaelaye (2)
  • cjerdonek (2)
  • nnWhisperer (1)
  • richlysakowski (1)
  • jamesb6626 (1)
  • lumbric (1)
  • this-josh (1)
Pull Request Authors
  • dependabot[bot] (33)
  • fcollonval (20)
  • krassowski (11)
  • vidartf (11)
  • HaudinFlorence (7)
  • Costa-Cupie-01 (4)
  • maraisr (4)
  • gwincr11 (4)
  • tiltingpenguin (2)
  • cjerdonek (2)
  • singingwolfboy (2)
  • ianthomas23 (2)
  • jaipreet-s (2)
  • DontCallMyPhoneUnlessUGotMeMyCode (1)
  • trams (1)
Top Labels
Issue Labels
bug (3) help wanted (1) documentation (1)
Pull Request Labels
maintenance (37) dependencies (33) bug (13) enhancement (8) javascript (8) documentation (4) github_actions (2)

Packages

  • Total packages: 7
  • Total downloads:
    • pypi 249,586 last-month
    • npm 20,995 last-month
  • Total docker downloads: 702,190,908
  • Total dependent packages: 61
    (may contain duplicates)
  • Total dependent repositories: 2,116
    (may contain duplicates)
  • Total versions: 117
  • Total maintainers: 18
  • Total advisories: 1
pypi.org: nbdime

Diff and merge of Jupyter Notebooks

  • Homepage: https://nbdime.readthedocs.io
  • Documentation: https://nbdime.readthedocs.io/
  • License: # Licensing terms This project is licensed under the terms of the Modified BSD License (also known as New or Revised or 3-Clause BSD), as follows: - Copyright (c) 2001-2015, IPython Development Team - Copyright (c) 2015-, Jupyter Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the Jupyter Development Team nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## About the Jupyter Development Team The Jupyter Development Team is the set of all contributors to the Jupyter project. This includes all of the Jupyter subprojects. The core team that coordinates development on GitHub can be found here: https://github.com/jupyter/. ## Our Copyright Policy Jupyter uses a shared copyright model. Each contributor maintains copyright over their contributions to Jupyter. But, it is important to note that these contributions are typically only changes to the repositories. Thus, the Jupyter source code, in its entirety is not the copyright of any single person or institution. Instead, it is the collective copyright of the entire Jupyter Development Team. If individual contributors want to maintain a record of what changes/contributions they have specific copyright on, they should indicate their copyright in the commit message of the change, when they commit the change to one of the Jupyter repositories. With this in mind, the following banner should be used in any source code file to indicate the copyright and license terms: # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License.
  • Latest release: 4.0.2
    published over 1 year ago
  • Versions: 37
  • Dependent Packages: 32
  • Dependent Repositories: 1,780
  • Downloads: 249,586 Last month
  • Docker Downloads: 361,685,508
Rankings
Dependent repos count: 0.3%
Dependent packages count: 0.5%
Downloads: 0.7%
Docker downloads count: 0.9%
Average: 1.3%
Stargazers count: 1.4%
Forks count: 3.9%
Last synced: 6 months ago
npmjs.org: nbdime

Diff and merge of Jupyter Notebooks

  • Versions: 29
  • Dependent Packages: 9
  • Dependent Repositories: 20
  • Downloads: 10,776 Last month
  • Docker Downloads: 438,781
Rankings
Docker downloads count: 0.5%
Downloads: 1.3%
Stargazers count: 1.8%
Average: 1.9%
Dependent packages count: 2.2%
Forks count: 2.6%
Dependent repos count: 2.8%
Last synced: 6 months ago
npmjs.org: nbdime-jupyterlab

A JupyterLab extension for showing Notebook diffs.

  • Versions: 26
  • Dependent Packages: 3
  • Dependent Repositories: 8
  • Downloads: 10,216 Last month
  • Docker Downloads: 340,066,619
Rankings
Docker downloads count: 0.5%
Downloads: 1.2%
Stargazers count: 1.8%
Forks count: 2.6%
Average: 2.7%
Dependent repos count: 4.3%
Dependent packages count: 5.8%
Last synced: 6 months ago
conda-forge.org: nbdime
  • Versions: 21
  • Dependent Packages: 9
  • Dependent Repositories: 154
Rankings
Dependent repos count: 2.8%
Dependent packages count: 6.4%
Average: 7.9%
Stargazers count: 8.1%
Forks count: 14.2%
Last synced: 6 months ago
npmjs.org: @datalayer-jupyter/nbdime

Diff and merge of Jupyter Notebooks

  • Versions: 1
  • Dependent Packages: 4
  • Dependent Repositories: 0
  • Downloads: 0 Last month
Rankings
Stargazers count: 2.2%
Forks count: 3.0%
Dependent packages count: 5.5%
Average: 11.2%
Downloads: 20.1%
Dependent repos count: 25.3%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @datalayer-jupyter/jupyterlab-nbdime

A JupyterLab extension for showing Notebook diffs.

  • Versions: 1
  • Dependent Packages: 2
  • Dependent Repositories: 0
  • Downloads: 3 Last month
Rankings
Stargazers count: 2.2%
Forks count: 3.0%
Dependent packages count: 9.5%
Average: 13.5%
Dependent repos count: 25.3%
Downloads: 27.7%
Maintainers (1)
Last synced: 6 months ago
anaconda.org: nbdime

nbdime provides “content-aware” diffing and merging of Jupyter notebooks. It understands the structure of notebook documents. Therefore, it can make intelligent decisions when diffing and merging notebooks.

  • Versions: 2
  • Dependent Packages: 2
  • Dependent Repositories: 154
Rankings
Dependent repos count: 15.9%
Stargazers count: 16.2%
Forks count: 25.2%
Average: 27.1%
Dependent packages count: 51.2%
Last synced: 6 months ago

Dependencies

.github/workflows/tests.yml actions
  • actions/cache v2 composite
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • actions/setup-node v1 composite
  • actions/setup-python v1 composite
package.json npm
  • @jupyterlab/buildutils ^3.0.0 development
  • lerna ^4.0.0 development
  • rimraf ^2.6.3 development
packages/labextension/package.json npm
  • @jupyterlab/application ^2 || ^3 development
  • @jupyterlab/builder ^3.0.0 development
  • @jupyterlab/docregistry ^2 || ^3 development
  • @lumino/commands ^1.6.1 development
  • mkdirp ^0.5.1 development
  • rimraf ^2.6.3 development
  • typescript ^4.9.0 development
  • @jupyterlab/apputils ^2 || ^3
  • @jupyterlab/coreutils ^4 || ^5
  • @jupyterlab/nbformat ^2 || ^3
  • @jupyterlab/notebook ^2 || ^3
  • @jupyterlab/rendermime ^2 || ^3
  • @jupyterlab/services ^5 || ^6
  • @jupyterlab/settingregistry ^2 || ^3
  • @lumino/algorithm ^1.1.2
  • @lumino/coreutils ^1.3.0
  • @lumino/disposable ^1.1.2
  • @lumino/widgets ^1.6.0
  • nbdime ^6.1.2
packages/nbdime/package.json npm
  • @babel/core ^7.5.0 development
  • @babel/preset-env ^7.5.0 development
  • @jupyterlab/apputils ^2 || ^3 development
  • @lumino/messaging ^1.2.2 development
  • @types/jest ^26.0.0 development
  • @types/json-stable-stringify ^1.0.32 development
  • @types/node ^14.14.13 development
  • @types/sanitizer ^0.0.28 development
  • fs-extra ^8.1.0 development
  • identity-obj-proxy ^3.0.0 development
  • jest ^26.0.0 development
  • jest-fetch-mock ^1.6.6 development
  • rimraf ^2.6.3 development
  • ts-jest ^26.0.0 development
  • typescript ^4.9.0 development
  • @jupyterlab/codeeditor ^2 || ^3
  • @jupyterlab/codemirror ^2 || ^3
  • @jupyterlab/coreutils ^4 || ^5
  • @jupyterlab/nbformat ^2 || ^3
  • @jupyterlab/outputarea ^2 || ^3
  • @jupyterlab/rendermime ^2 || ^3
  • @jupyterlab/services ^5 || ^6
  • @lumino/algorithm ^1.1.2
  • @lumino/coreutils ^1.3.0
  • @lumino/dragdrop ^1.3.0
  • @lumino/signaling ^1.2.2
  • @lumino/widgets ^1.6.0
  • json-stable-stringify ^1.0.1
packages/webapp/package.json npm
  • @types/file-saver ^2.0.0 development
  • @types/json-stable-stringify ^1.0.32 development
  • @types/node ^14.14.13 development
  • @types/sanitizer ^0.0.28 development
  • css-loader ^3.0.0 development
  • file-loader ^4.0.0 development
  • rimraf ^2.6.3 development
  • source-map-loader ^0.2.4 development
  • style-loader ^0.23.1 development
  • ts-loader ^8.2.0 development
  • typescript ^4.9.0 development
  • url-loader ^2.0.1 development
  • webpack ^4.29.6 development
  • webpack-cli ^3.2.3 development
  • @fortawesome/fontawesome-free ^5.12.0
  • @jupyterlab/application ^2 || ^3
  • @jupyterlab/apputils ^2 || ^3
  • @jupyterlab/cells ^2 || ^3
  • @jupyterlab/codemirror ^2 || ^3
  • @jupyterlab/coreutils ^4 || ^5
  • @jupyterlab/mathjax2 ^2 || ^3
  • @jupyterlab/nbformat ^2 || ^3
  • @jupyterlab/notebook ^2 || ^3
  • @jupyterlab/rendermime ^2 || ^3
  • @jupyterlab/theme-light-extension ^3.1
  • @lumino/dragdrop ^1.3.0
  • @lumino/widgets ^1.6.0
  • alertify.js ^1.0.12
  • file-saver ^2.0.1
  • nbdime ^6.1.2
docs/doc-requirements.txt pypi
  • recommonmark *
  • sphinx *
  • sphinx_rtd_theme *