Developer documentation#

Development of exoplanet is actively happening on GitHub and we would love your contributions. There are a few different methods of contributing to exoplanet and the details are discussed below.

Reporting an issue#

If you run into issues, bugs, or anything else, it is very useful if you can post an issue on the GitHub repository. When you post an issue, please provide the details to reproduce the issue. For example, if you find a bug, please provide a standalone and executable snippet of code that demonstrates the issue. It’s also useful to include details about your platform and the versions of key packages that your using.

Contributing code or documentation#

If you’re not familiar with the workflow for contributing code to a GitHub repository, an excellent place to start is the AstroPy developer docs.

Set up your development environment#

After getting some familiarity with the workflow, you should fork the exoplanet repository and clone it to your local machine:

git clone https://github.com/YOURUSERNAME/exoplanet.git
cd exoplanet
git checkout -b BRANCHNAME

for some name BRANCHNAME describing your contribution.

Then you should set up an isolated environment for development using a Conda environment, virtualenv, venv, or similar.

If you’re using a pip based environment, you can install the developer dependencies as follows:

python -m pip install -U pip
python -m pip install -U -e ".[dev]"

Finding your way around the codebase#

exoplanet is mostly arranged as a typical Python project with the module root in the src/exoplanet directory. But there are a few directions that can be useful before diving in:

1. Tutorials: The tutorials are written using the jupytext tool to keep the size of the repository from blowing up. The tutorial files are saved (using jupytext) in the docs/tutorials directory as .py files in the py:light format. You can edit these files as if they are Jupyter notebooks by using the extension:

jupyter nbextension install --py jupytext
jupyter nbextension enable --py jupytext

If you are contributing a new tutorial, you should copy one of the existing ones and try to follow roughly the same format.

2. Case studies: These are more in depth tutorials that require more computational run time. These can be found in the case studies repo and there is more information there about how to contribute.

3. Theano/Aesara ops: exoplanet comes bundled with a set of custom ops that are implemented in the exoplanet-core project. As a user, hopefully you’ll rarely interact with these directly and we haven’t put a lot of work into making them user friendly, but if you are interested in diving in, feel free to ask questions on GitHub or via email.

Testing your contribution#

If you’re contributing a change to the code (either a new feature or bug fix), make sure that you implement at least one test that checks the behavior of your code. Then, you should run all of the unit tests before submitting a pull request using the following command:

python -m pytest -v tests