Skip to content

Contributing

poetry pre-commit black mypy ruff

We welcome and value all types of contributions, from bug reports to feature additions. Please make sure to read the relevant section(s) below before making your contribution.

And if you like the project but just don't have time to contribute, there are other easy ways to support the project and show your appreciation. We'd love if you could:

  • Star the project
  • Refer this project in your project's README
  • Mention the project at local meetups and tell your friends/colleagues

Once again, thank you for supporting the project and taking the time to contribute!

Code of Conduct

Please read and follow our Code of Conduct.

Reporting Bugs

When submitting a new bug report, please first search for an existing or similar report. If you believe you've come across a unique problem, then use one of our existing issue templates. Duplicate issues or issues that don't use one of our templates may get closed without a response.

Development

Before contributing, make sure you have Python 3.9+ and poetry installed.

  1. Fork the repository on GitHub.

  2. Clone the repository from your GitHub.

  3. Setup development environment (make install).

  4. Setup pre-commit hooks (poetry run pre-commit install).

  5. Check out a new branch and make your modifications.

  6. Add test cases for all your changes.

  7. Run make lint and make test and ensure they pass.

    Tip

    Run make format to fix the linting errors that are auto-fixable.

    Tip

    Run make coverage to run unit tests only and generate an HTML coverage report.

  8. Commit your changes following our commit conventions.

  9. Push your changes to your fork of the repository.

  10. Open a pull request! 🎉🎉🎉

Commit Conventions

We follow conventional commits. When opening a pull request, please be sure that both the pull request title and each commit in the pull request has one of the following prefixes:

Prefix Description SemVer
feat: a new feature MINOR
fix: a bug fix PATCH
refactor: a code change that neither fixes a bug nor adds a new feature PATCH
docs: a documentation-only change PATCH
chore: any other change that does not affect the published module (e.g. testing) none