We welcome user contributions to nbodykit, but be sure to read this guide first to make the process as smooth as possible!
You can use GitHub issues or send mail to nbodykit-issues@fire.fundersclub.com to request features you would like to see in nbodykit.
If you think you’ve found a bug in nbodykit, follow these steps to submit a report:
First, double check that your bug isn’t already fixed. Follow our instructions for setting up a local development environment and make sure you’ve installed the tip of the master branch.
Search for similar issues on GitHub. Make sure to delete is:open on the issue search to find solved tickets as well. It is possible that this bug has been encountered before.
Open up an issue on GitHub or send an email to nbodykit-issues@fire.fundersclub.com.
Please include the versions of Python, nbodykit, and other dependency libraries if they are applicable (numpy, scipy, etc)
Provide us with the logging output of the script from when the bug was encountered, including a traceback if appropriate. If at all possible, provide us with a standalone script that will reproduce the issue. Issues have a much higher chance of being resolved quickly if we can easily reproduce the bug.
Take a stab at fixing the bug yourself! The runtests
module used by
nbodykit supports on-line debugging via the
PDB interface. It also
supports drop-in replacements for PDB such as
PDB++. A common debugging route
is to add a regression unit test to the nbodykit test suite that fails due
the bug and then run the test in debugging mode:
$ python run-tests.py nbodykit/path/to/your/test --pdb
Pull requests for bug fixes are always welcome!
We strongly recommend following the above steps and providing as much information as possible when bugs are encountered. This will help us resolve issues faster – and get everyone back to doing more accurate science!
Fork nbodykit on GitHub:
$ git clone https://github.com/bccp/nbodykit.git
$ cd nbodykit
Install the dependencies. We recommend using the Anaconda environment manager. To create a new environment for nbodykit development, use:
# create and activate a new conda environment
$ conda create -n nbodykit-dev python=3
$ source activate nbodykit-dev
# install requirements
$ conda install -c bccp --file requirements.txt --file requirements-extras.txt
Install nbodykit in develop mode using pip
:
# install in develop mode
$ pip install -e .
Write the code implementing your bug fix or feature, making sure to use detailed commit messages.
Ensure that any new code is properly documented, with docstrings following the NumPy/Scipy documentation style guide.
Write tests of the new code, ensuring that it has full unit test coverage. This is a crucial step as new pull requests will not be merged if they reduce the overall test coverage of nbodykit.
Run the test suite locally. From the main nbodykit directory, run:
$ python run-tests.py --with-coverage --html-cov
This will also output the test coverage statistics to build/coverage/index.html
.
Make sure all of the tests have passed and that the coverage statistics indicate that any new code is fully covered by the test suite.
Be sure to update the changelog to indicate what was added/modified.
Submit your pull request to nbodykit:master
.
The Travis CI build must be passing
before your pull request can be merged. Additionally, the overall
coverage of the test suite must not decrease for the pull request to be merged.
If you have an application of nbodykit that is concise and interesting, please consider adding it to our cookbook of recipes. We also welcome feedback and improvements for these recipes. Users can submit issues or open a pull request on the nbodykit cookbook repo on GitHub.
Cookbook recipes should be in the form of Jupyter notebooks. See the existing recipes for examples. The recipes are designed to illustrate interesting uses of nbodykit for other users to learn from.
We appreciate any and all contributions!