We use Poetry
to manage the dependencies.
If you dont have Poetry
, you should install it with make poetry-download
.
To install dependencies and prepare pre-commit
hooks you would need to run the install
command:
make install
make pre-commit-install
To activate your virtualenv
run source "$(poetry env list --full-path | grep Activated | cut -d' ' -f1)/bin/activate"
or simply open the repo in VS Code and the virtualenv will be automatically activated in the built-in terminal.
After installation you may execute code formatting.
make codestyle
Many checks are configured for this project. Command make check-codestyle
will check black, isort and darglint.
The make check-safety
command will look at the security of your code.
The command make lint
applies all checks.
Before submitting your code please complete the following steps:
- Add any changes you want
- Add tests for the new changes
- Edit documentation if you have changed something significant
- Run
make codestyle
to format your changes. - Run
make lint
to ensure that types, security and docstrings are okay.
The Makefile
contains a number of functions for faster development.
1. Download and remove Poetry
To download and install Poetry run:
make poetry-download
To uninstall
make poetry-remove
2. Install all dependencies and pre-commit hooks
Install requirements:
make install
Pre-commit hooks coulb be installed after git init
via
make pre-commit-install
3. Codestyle
Automatic formatting uses pyupgrade
, isort
, and black
.
make codestyle
# or use synonym
make formatting
Codestyle checks only, without rewriting files:
make check-codestyle
Note:
check-codestyle
usesisort
,black
,darglint
, andpylint
.
Update all dev libraries to the latest version using one comand
make update-dev-deps
4. Code security
make check-safety
This command launches Poetry
integrity checks as well as identifies security issues with Safety
and Bandit
.
make check-safety
5. Type checks
Run mypy
static type checker
make mypy
6. Tests with coverage badges
Run pytest
make test
7. All linters
Of course there is a command to rule run all linters in one:
make lint
the same as:
make test && make check-codestyle && make mypy && make check-safety
8. Docker
make docker-build
which is equivalent to:
make docker-build VERSION=latest
Remove docker image with
make docker-remove
More information about docker.
9. Cleanup
Delete pycache files
make pycache-remove
Remove package build
make build-remove
Delete .DS_STORE files
make dsstore-remove
Remove .mypycache
make mypycache-remove
Or to remove all above run:
make cleanup
Building a new version of the application contains the following steps:
- Bump the version of your package with
poetry version <version>
. You can pass the new version explicitly, or a rule such asmajor
,minor
, orpatch
. For more details, refer to the Semantic Versioning standard. - Make a commit to
GitHub
. - Create a
GitHub release
. - And... publish 🙂
poetry publish --build
We use Release Drafter
. As pull requests are merged, a draft release is kept up-to-date listing the changes, ready to publish when you’re ready. With the categories option, you can categorize pull requests in release notes using labels.
Label | Title in Releases |
---|---|
enhancement , feature |
🚀 Features |
bug , refactoring , bugfix , fix |
🔧 Fixes & Refactoring |
build , ci , testing |
📦 Build System & CI/CD |
breaking |
💥 Breaking Changes |
documentation |
📝 Documentation |
dependencies |
⬆️ Dependencies updates |
You can contribute by spreading the 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.