How to contribute
Dependencies
We use poetry to manage the dependencies.
To install them you would need to run install
command:
poetry install
To activate your virtualenv
run poetry shell
.
One magic command
Run make test
to run everything we have!
Tests
We use pytest
and flake8
for quality control.
We also use wemake_python_styleguide to enforce the code quality.
To run all tests:
pytest
To run linting:
flake8 .
Keep in mind: default virtual environment folder excluded by flake8 style checking is .venv
.
If you want to customize this parameter, you should do this in setup.cfg
.
These steps are mandatory during the CI.
Type checks
We use mypy
to run type checks on our code.
To use it:
mypy zmxtools tests/**/*.py
This step is mandatory during the CI.
Submitting your code
We use trunk based
development (we also sometimes call it wemake-git-flow
).
What the point of this method?
We use protected
main
branch, so the only way to push your code is via pull requestWe use issue branches: to implement a new feature or to fix a bug create a new branch named
issue-$TASKNUMBER
Then create a pull request to
main
branchWe use
git tag
s to make releases, so we can track what has changed since the latest release
So, this way we achieve an easy and scalable development process which frees us from merging hell and long-living branches.
In this method, the latest version of the app is always in the main
branch.
Before submitting
Before submitting your code:
Add tests for code changes
Include or update the inline documentation.
Update README.md as necessary.
Increase the version number in
pyproject.toml
under the[tool.poetry]
headerUpdate CHANGELOG.md with a quick summary of your changes
Run
make test
to:check code behaviour with
pytest
ensure that types are correct with
mypy
enforce code style using
flake8
verify the documentation with
doc8
Run
make clean html
in thedocs
folder and check for documentation errors.Commit the changes with a descriptive message.
Tag the release with the version number in
pyproject.toml
usinggit tag 0.0.0
.Raise a pull-request.
Other help
You can contribute by spreading a word about this library. It would also be a huge contribution to write a short article on how you are using this project. You can also share your best practices with us.