Development

Installing requirements

Using pip

$ pip install -r requirements/docs.txt -r requirements/testing.txt

Using terrarium

Terrarium will package up and compress a virtualenv for you based on pip requirements and then let you ship that environment around.

$ terrarium install requirements/*.txt

Building the documentation locally

  1. Install the documentation requirements:

    $ pip install -r requirements/docs.txt
    
  2. Change directory to docs and run make html:

    $ cd docs
    $ make html
    
  3. Load HTML documentation in a web browser of your choice:

    $ firefox docs/_build/html/index.html
    

Running tests

  1. Install the development requirements:

    $ pip install -r requirements/testing.txt
    
  2. Run make test lint in the project root. This will run nosetests with coverage and also display any flake8 errors.

    $ make test lint
    

To run all tests against all supported versions of python, use tox.

Running tests with tox

tox allows us to use one command to run tests against all versions of python that we support.

Setting up tox

  1. Decide how you want to manage multiple python versions.

    1. System level using a package manager such as apt-get. This approach will likely require adding additional apt-get sources in order to install alternative versions of python.
    2. Use pyenv to manage and install multiple python versions. After installation, see the pyenv command reference.
  2. Install tox.

    $ pip install tox
    
  3. Configure tox.

Running tox

Now that you have tox setup, you just need to run the command tox from the project root directory.

$ tox

Getting involved

The PyDocX project welcomes help in any of the following ways:

  • Making pull requests on github for code, tests and documentation.
  • Participating on open issues and pull requests, reviewing changes

Coding Standards

  • All python source files must be PEP8 compliant.

  • All python source files must include the following import declaration at the top of the file:

    from __future__ import (
        absolute_import,
        print_function,
        unicode_literals,
    )
    

Unicode Data

  • All stream data is assumed to be a UTF-8 bytestream unless specified otherwise. What this means is that when you are writing test cases for a particular function, any input data you define which would have otherwise have come from a file source must be encoded as UTF-8.

Release process

PyDocX adheres to Semantic versioning v2.0.0.

  1. Update CHANGELOG.
  2. Bump the version number in __init__.py on master.
  3. Tag the version.
  4. Push to PyPI
make release