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
mainbranch, 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-$TASKNUMBERThen create a pull request to
mainbranchWe use
git tags 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.tomlunder the[tool.poetry]headerUpdate CHANGELOG.md with a quick summary of your changes
Run
make testto:check code behaviour with
pytestensure that types are correct with
mypyenforce code style using
flake8verify the documentation with
doc8
Run
make clean htmlin thedocsfolder and check for documentation errors.Commit the changes with a descriptive message.
Tag the release with the version number in
pyproject.tomlusinggit 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.