Thank you for considering contributing to ndeflib. There are many ways to help and any help is welcome.

Reporting issues

  • Under which versions of Python does this happen? This is especially important if your issue is encoding related.
  • Under which version of ndeflib does this happen? Check if this issue is fixed in the repository.

Submitting patches

  • Include tests if your patch is supposed to solve a bug, and explain clearly under which circumstances the bug happens. Make sure the test fails without your patch.
  • Include or update tests and documentation if your patch is supposed to add a new feature. Note that documentation is in two places, the code itself for rendering help pages and in the docs folder for the online documentation.
  • Follow PEP 8 and PEP 257.

Development tips

  • Fork the repository and clone it locally:

    git clone
    cd ndeflib
  • Create virtual environments for Python 2 an Python 3, setup the ndeftool package in develop mode, and install required development packages:

    virtualenv python-2
    python3 -m venv python-3
    source python-2/bin/activate
    python develop
    pip install -r requirements-dev.txt
    source python-3/bin/activate
    python develop
    pip install -r requirements-dev.txt
  • Verify that all tests pass and the documentation is build:

  • Preferably develop in the Python 3 virtual environment. Running tox ensures tests are run with both the Python 2 and Python 3 interpreter but it takes some time to complete. Alternatively switch back and forth between versions and just run the tests:

    source python-2/bin/activate
    source python-3/bin/activate
  • Test coverage should be close to 100 percent. A great help is the HTML output produced by

    py.test --cov ndef --cov-report html
    firefox htmlcov/index.html
  • The documentation can be created and viewed loacally:

    (cd docs && make html)
    firefox docs/_build/html/index.html