Skip to main content

Calculates a diff of a network topology

Project description Code Health Requirements Status

Netdiff is an experimental Python library that provides utilities for parsing network topologies of open source dynamic routing protocols and calculating changes in these topologies.

It was developed to abstract the differences between the different JSON structures of the open source dynamic routing protocols (like OLSR and batman-advanced).

Install stable version from pypi

Install from pypi:

pip install netdiff

Install development version

Install tarball:

pip install

Alternatively you can install via pip using git:

pip install -e git+git://

If you want to contribute, install your cloned fork:

git clone<your_fork>/netdiff.git
cd netdiff
python develop

Basic Usage Example

Calculate diff of an OLSR 0.6.x topology:

from netdiff import OlsrParser
from netdiff import diff

stored = OlsrParser('./stored-olsr.json')
latest = OlsrParser('')
diff(stored, latest)

The output will be a dictionary with the following structure:

    "added": []
    "removed": []

NetJSON output

Netdiff parsers can return a valid NetJSON NetworkGraph object:

from netdiff import OlsrParser

olsr = OlsrParser('')

# will return a dict

# will return a JSON formatted string


    "type": "NetworkGraph",
    "protocol": "OLSR",
    "version": "0.6.6",
    "revision": "5031a799fcbe17f61d57e387bc3806de",
    "metric": "ETX",
    "nodes": [
            "id": ""
            "id": ""
            "id": ""
    "links": [
            "source": "",
            "target": "",
            "weight": 28334
            "source": "",
            "target": "",
            "weight": 1024


Parsers are classes that extend netdiff.base.BaseParser and implement a parse method which is in charge of converting a python data structure into networkx.Graph object.

Parsers have a json method which returns NetJSON.

Running tests

Clone / fork repo:

git clone git://
cd diff/

Install test requirements:

pip install -r requirements-test.txt

Run tests with:


Alternatively, you can use the nose command (which has a ton of available options):


See test coverage with:

coverage run --source=netdiff && coverage report


  1. Join the ninux-dev mailing list
  2. Fork this repo and install it
  3. Follow PEP8, Style Guide for Python Code
  4. Write code
  5. Write tests for your code
  6. Ensure all tests pass
  7. Ensure test coverage is not under 90%
  8. Document your changes
  9. Send pull request

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for netdiff, version 0.1
Filename, size File type Python version Upload date Hashes
Filename, size netdiff-0.1-py2.py3-none-any.whl (10.9 kB) File type Wheel Python version 3.4 Upload date Hashes View
Filename, size netdiff-0.1.tar.gz (26.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page