Contributing
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.
-
Fork the repository on GitHub.
-
Clone the repository from your GitHub.
-
Setup development environment (
make install
). -
Setup pre-commit hooks (
poetry run pre-commit install
). -
Check out a new branch and make your modifications.
-
Add test cases for all your changes.
-
Run
make lint
andmake 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. -
Commit your changes following our commit conventions.
-
Push your changes to your fork of the repository.
-
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 |