Contributing

Thank considering your contribution to DBGR. Any help or feedback is greatly appreciated.

Development setup

If you want to develop debugger locally, there is an alternative installation process that will make this experience easier.

First, fork DBGR repository. Then you can clone the forked repository and create local environment:

$ git clone https://github.com/<your_username>/dbgr
$ cd dbgr
$ virtualenv env3.7 --python=python3.7
$ source env3.7/bin/activate
(env3.7) $ pip install -r requirements.txt -r requirements-dev.py

Tip

The process for setting up python 3.6 is the same, just use different python executable.

Now you can install DBGR from local directory:

$ source env3.7/bin/activate
(env3.7) $ pip install -e .

Testing

(env3.7) $ make test

This will run all unit-tests and generate coverage report. 100% test coverage is mandatory.

Tip

The file Makefile contains other commands that can be useful when developing DBGR. Run make to see all the available commands.

Linting

(env3.7) $ make lint

DBGR user pylint with some lints disabled. See .pylintrc for details. Score of 10.0 is mandatory.

Building documentation

This documentation was build using Sphinx. To build it locally, run:

(env3.7) $ make documentation
(env3.7) $ open open docs/build/html/index.html

All new features and changes have to be documented.

Before committing please spell-check the documentation using:

(env3.7) $ make spelling

If Sphinx reports a spelling mistake on a word you are sure is spelled correctly, add it to docs/source/spelling.txt. Sort the file alphabetically.

Building distribution

These steps are mandatory only when preparing for release. Individual developers don’t need to worry about them.

  1. Run all tests, make sure they all pass and the code coverage is 100%.

  2. Move appropriate changes from # Unreleased section in CHANGELOG.rst to new version.

  3. Change version in dbgr/meta.py

  4. Build distribution, make sure there are no errors

    (env3.7) $ make build
    
  5. Tag new version on GitHub

  6. Create new GitHub release

    • Upload content of dist
    • Copy latest changes from CHANGELOG.rst to release description
  7. Upload content of dist to PyPi.

    (env3.7) $ make publish