1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
.. _contributing-chapter:
============
Contributing
============
I happily accept patches if they make sense for the project and work
well. If you aren't sure if I'll merge a patch upstream, please open an
issue_ and describe it.
Patches should meet the following criteria before I'll merge them:
* All existing tests must pass.
* Bugfixes and new features must include new tests or asserts.
* Must not introduce any PEP8 or PyFlakes violations.
I recommend doing all development in a virtualenv_, though this is
really up to you.
It would be great if new or changed features had documentation and
included updates to the ``CHANGES`` file, but it's not totally
necessary.
Running Tests
=============
To run the tests, you just need ``nose2``. This can be installed with
``pip``::
$ mkvirtualenv statsd
$ pip install -r requirements.txt
$ nose2
You can also run the tests with tox::
$ tox
Tox will run the tests in Pythons 2.5, 2.6, 2.7, 3.2, 3.3, 3.4, and
PyPy, if they're available.
Writing Tests
=============
New features or bug fixes should include tests that fail without the
relevant code changes and pass with them.
For example, if there is a bug in the ``StatsClient._send`` method, a
new test should demonstrate the incorrect behavior by failing, and the
associated changes should fix it. The failure can be a FAILURE or an
ERROR.
Tests and the code to fix them should be in the same commit. Bisecting
should not stumble over any otherwise known failures.
.. note::
Pull requests that only contain tests to demonstrate bugs are
welcome, but they will be squashed with code changes to fix them.
PEP8 and PyFlakes
=================
The development requirements (``requirements.txt``) include the
``flake8`` tool. It is easy to run::
$ flake8 statsd/
``flake8`` should not raise any issues or warnings.
.. note::
The docs directory includes a Sphinx-generated conf.py that has
several violations. That's fine, don't worry about it.
Documentation
=============
The documentation lives in the ``docs/`` directory and is automatically
built and pushed to ReadTheDocs_.
If you change or add a feature, and want to update the docs, that would
be great. New features may need a new chapter. You can follow the
examples already there, and be sure to add a reference to
``docs/index.rst``. Changes or very small additions may just need a new
heading in an existing chapter.
.. _issue: https://github.com/jsocol/pystatsd/issues
.. _virtualenv: http://www.virtualenv.org/
.. _ReadTheDocs: https://statsd.readthedocs.io/
|