This document summarizes how to contribute to prysm. The basic steps are:

  • Fork the project on GitHub

  • Clone your fork

  • Add the main repository as a remote git remote add upstream

  • Most prysm development is done on the dev branch, so work from there:

git checkout dev
git pull upstream dev
  • Track your changes, ideally with “atomic” commits – one commit per logical change (multiple files are OK, but if your commit crosses +/- 1000 lines, it probably should have been several commits).

  • When ready, push your changes to your fork on GitHub and open a Pull Request (PR). Reference any relevant issues in the body of the PR.

  • Open an issue on the main prysm repository with any problems or inquiries.


  • prysm uses numpy style docstrings. All changes should include updated docstrings, or fresh docstrings for new features.

  • Do not include shebangs or other meta-comments at the top of files.

  • prysm uses unix-style line endings. Git can be configured to convert CRLF to LF for you.

  • PRs should update tests or introduce new tests as needed to maintain coverage and correctness.

  • Use from prysm.mathops import e instead of import numpy as np, using the e object as you would the np one. You cannot import from e, so for example you may have to write e.fft.fft2.

  • If your code creates new arrays, please maintain conformance with prysm’s precision options:

from .conf import config

ary = e.arange(lower, upper, spacing, dtype=config.precision)

For a not-all-inclusive list of welcome contributions, please see the open issues.