Consider whether the change you made would benefit from documentation - if the feature has any user impact at all, the answer is almost certainly yes!
Documentation can be found in the `docs` directory.
There are some additional dependencies required to build the documentation.
These dependencies can be installed by running (from the `docs` directory):
```
pip install -r requirements.txt
```
After updating the documentation, you can build them (from the project root directory) by running:
```
make docs
```
This will generate the static HTML for the documentation site at `docs/build/html`.
### Update CHANGELOG and CONTRIBUTORS
Before submitting your pull request, update the `CHANGELOG.md` file describing, briefly, what you've done.
Be sure to follow the format seen in the rest of the document.
If this is your first time contributing to Rich:
1. Welcome!
2. Be sure to add your name to `CONTRIBUTORS.md`.
### Pre-Commit
We strongly recommend you [install the pre-commit hooks](https://pre-commit.com/#installation) included in the repository.
These automatically run some of the checks described earlier each time you run `git commit`,
and over time can reduce development overhead quite considerably.
## Creating A Pull Request
Once your happy with your change and have ensured that all steps above have been followed (and checks have passed), you can create a pull request.
GitHub offers a guide on how to do this [here](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork).
Please ensure that you include a good description of what your change does in your pull request, and link it to any relevant issues or discussions.
When you create your pull request, we'll run the checks described earlier. If they fail, please attempt to fix them as we're unlikely to be able to review your code until then.
If you've exhausted all options on trying to fix a failing check, feel free to leave a note saying so in the pull request and someone may be able to offer assistance.
### Code Review
After the checks in your pull request pass, someone will review your code.
There may be some discussion and, in most cases, a few iterations will be required to find a solution that works best.
## Afterwards
When the pull request is approved, it will be merged into the `master` branch.
Your change will only be available to users the next time Rich is released.