This document is a guide to contributing to the project.
We welcome all contributions. You don't need to be an expert to help out.
Contributions are made through pull requests. Before sending a pull request, make sure you do the following:
- Run
make fmtto make sure your code adheres to our coding style and all tests pass. - Write unit tests for new functionality added.
You'll need to build the project locally to start editing code. To install from source, clone the repository from GitHub, navigate to its root, and run the following command:
make installTo contribute to the project, send us pull requests. For those new to contributing, check out GitHub's guide.
Once you've made your pull request, a member of the development team will assign themselves to review it. You might have a few back-and-forths with your reviewer before it is accepted, which is completely normal. Your pull request will trigger continuous integration tests for many different Python versions and different platforms. If these tests start failing, please fix your code and send another commit, which will re-trigger the tests.
If you'd like to add a new feature, please propose your change in a GitHub issue to make sure that your priorities align with ours.
If you'd like to contribute code but don't know where to start, try one of the following:
- Read the source and enhance the documentation, or address TODOs
- Browse the open issues, and look for the issues tagged "help wanted".
We use ruff to enforce our Python coding style. Before sending us a pull request, navigate to the project root and run
make fmtto make sure that your changes abide by our style conventions. Please fix any errors that are reported before sending the pull request.
Most code changes will require new unit tests. Even bug fixes require unit tests, since the presence of bugs usually indicates insufficient tests. When adding tests, try to find a file in which your tests should belong; if you're testing a new feature, you might want to create a new test file.
We use the popular Python pytest framework for our tests.
We use pytest to run our unit tests.
To run all unit tests run the following command:
make testPlease make sure that your change doesn't cause any of the unit tests to fail.